preload.cjs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const { contextBridge, ipcRenderer } = require('electron')
  2. contextBridge.exposeInMainWorld('yaoyaoDesktop', Object.freeze({
  3. unreadState: account => ipcRenderer.invoke('desktop:unread-state', account),
  4. status: () => ipcRenderer.invoke('desktop:status'),
  5. selectServer: mode => ipcRenderer.invoke('desktop:onboarding-select', mode),
  6. prepareServer: input => ipcRenderer.invoke('desktop:onboarding-prepare', input),
  7. login: input => ipcRenderer.invoke('desktop:onboarding-submit', input),
  8. openLogin: () => ipcRenderer.invoke('desktop:open-login'),
  9. forgetLogin: () => ipcRenderer.invoke('desktop:forget-login'),
  10. retry: () => ipcRenderer.invoke('desktop:retry'),
  11. forceSync: () => ipcRenderer.invoke('desktop:force-sync'),
  12. logs: () => ipcRenderer.invoke('desktop:logs'),
  13. openUpdates: () => ipcRenderer.invoke('desktop:updates'),
  14. updateState: () => ipcRenderer.invoke('desktop-update:state'),
  15. updateAction: action => ipcRenderer.invoke(`desktop-update:${action}`),
  16. onUpdateRequested: callback => {
  17. const listener = () => callback()
  18. ipcRenderer.on('desktop:update-requested', listener)
  19. return () => ipcRenderer.removeListener('desktop:update-requested', listener)
  20. },
  21. modeState: () => ipcRenderer.invoke('desktop:mode-state'),
  22. switchMode: mode => ipcRenderer.invoke('desktop:mode-switch', mode),
  23. openRemoteLogin: () => ipcRenderer.invoke('desktop:remote-login'),
  24. authorizeComputer: csrfToken => ipcRenderer.invoke('desktop:computer-authorize', csrfToken),
  25. /** 'local' on the YaoYao server Mac; paired host uuid in remote mode; null if unknown. */
  26. deviceHost: () => ipcRenderer.invoke('desktop:device-host'),
  27. openComputer: (id, target) => ipcRenderer.invoke('desktop-computer:open', id, target),
  28. computerTargetChanged: target => ipcRenderer.invoke('desktop-computer:target', target),
  29. computerClosed: () => ipcRenderer.invoke('desktop-computer:closed'),
  30. onComputerClose: callback => {
  31. const listener = () => callback()
  32. ipcRenderer.on('desktop-computer:request-close', listener)
  33. return () => ipcRenderer.removeListener('desktop-computer:request-close', listener)
  34. },
  35. }))