preload.cjs 1.1 KB

1234567891011121314151617181920
  1. const { contextBridge, ipcRenderer } = require('electron')
  2. contextBridge.exposeInMainWorld('yaoyaoDesktop', Object.freeze({
  3. status: () => ipcRenderer.invoke('desktop:status'),
  4. retry: () => ipcRenderer.invoke('desktop:retry'),
  5. forceSync: () => ipcRenderer.invoke('desktop:force-sync'),
  6. logs: () => ipcRenderer.invoke('desktop:logs'),
  7. openUpdates: () => ipcRenderer.invoke('desktop:updates'),
  8. modeState: () => ipcRenderer.invoke('desktop:mode-state'),
  9. switchMode: mode => ipcRenderer.invoke('desktop:mode-switch', mode),
  10. openRemoteLogin: () => ipcRenderer.invoke('desktop:remote-login'),
  11. /** 'local' on the YaoYao server Mac; paired host uuid in remote mode; null if unknown. */
  12. deviceHost: () => ipcRenderer.invoke('desktop:device-host'),
  13. openComputer: id => ipcRenderer.invoke('desktop-computer:open', id),
  14. computerClosed: () => ipcRenderer.invoke('desktop-computer:closed'),
  15. onComputerClose: callback => {
  16. const listener = () => callback()
  17. ipcRenderer.on('desktop-computer:request-close', listener)
  18. return () => ipcRenderer.removeListener('desktop-computer:request-close', listener)
  19. },
  20. }))