OverviewFilesCommitsIssuesDocsReleasesPeers

pearbrowser-desktop / electron / preload.cjs

16 lines · javascript ref:
const { contextBridge, ipcRenderer } = require('electron')

contextBridge.exposeInMainWorld('pearbrowserRuntime', {
  sessionToken: ipcRenderer.sendSync('pearbrowser:runtime-session'),
  openDevTools: () => ipcRenderer.invoke('pearbrowser:open-devtools'),
  listPearApps: () => ipcRenderer.invoke('pearbrowser:pear-apps:list'),
  installPearApp: (app) => ipcRenderer.invoke('pearbrowser:pear-apps:install', app),
  launchPearApp: (target) => ipcRenderer.invoke('pearbrowser:pear-apps:launch', target),
  onPearAppProgress: (callback) => {
    if (typeof callback !== 'function') return () => {}
    const listener = (_event, data) => callback(data)
    ipcRenderer.on('pearbrowser:pear-apps:progress', listener)
    return () => ipcRenderer.removeListener('pearbrowser:pear-apps:progress', listener)
  }
})