/* global chrome */

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  sendResponse(request);
});

const testMap = {
  getZoomSettings () {
    chrome.runtime.sendMessage({ method: 'getZoomSettings' }, response => {
      console.log(JSON.stringify(response));
    });
  },
  setZoomSettings (settings) {
    chrome.runtime.sendMessage({ method: 'setZoomSettings', args: [settings] }, response => {
      console.log(JSON.stringify(response));
    });
  },
  query (params) {
    chrome.runtime.sendMessage({ method: 'query', args: [params] }, response => {
      console.log(JSON.stringify(response));
    });
  },
  getZoom () {
    chrome.runtime.sendMessage({ method: 'getZoom', args: [] }, response => {
      console.log(JSON.stringify(response));
    });
  },
  setZoom (zoom) {
    chrome.runtime.sendMessage({ method: 'setZoom', args: [zoom] }, response => {
      console.log(JSON.stringify(response));
    });
  },
  get () {
    chrome.runtime.sendMessage({ method: 'get' }, response => {
      console.log(JSON.stringify(response));
    });
  },
  reload () {
    chrome.runtime.sendMessage({ method: 'reload' }, response => {
      console.log(JSON.stringify(response));
    });
  },
  update (params) {
    chrome.runtime.sendMessage({ method: 'update', args: [params] }, response => {
      console.log(JSON.stringify(response));
    });
  }
};

const dispatchTest = (event) => {
  const { method, args = [] } = JSON.parse(event.data);
  testMap[method](...args);
};

window.addEventListener('message', dispatchTest, false);