/* 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);
