/* eslint-disable */

function evalInMainWorld(fn) {
  const script = document.createElement('script')
  script.textContent = `((${fn})())`
  document.documentElement.appendChild(script)
}

async function exec(name) {
  let result
  switch (name) {
    case 'getMessage':
      result = {
        id: chrome.i18n.getMessage('@@extension_id'),
        name: chrome.i18n.getMessage('extName'),
      }
      break
    case 'getAcceptLanguages':
      result = await new Promise(resolve => chrome.i18n.getAcceptLanguages(resolve))
      break
  }

  const funcStr = `() => { require('electron').ipcRenderer.send('success', ${JSON.stringify(result)}) }`
  evalInMainWorld(funcStr)
}

window.addEventListener('message', event => {
  exec(event.data.name)
})

evalInMainWorld(() => {
  window.exec = name => window.postMessage({ name })
})