mirror of
https://github.com/YuzuZensai/Discord-Presence-Relay.git
synced 2026-09-13 10:49:02 +00:00
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|||
|
|
import { electronAPI } from '@electron-toolkit/preload'
|
||
|
|
import type { RelayStatus } from '../main/relay'
|
||
|
|
|
||
|
|
const api = {
|
||
|
|
getStatus: (): Promise<RelayStatus> => ipcRenderer.invoke('relay:get-status'),
|
||
|
|
start: (): Promise<void> => ipcRenderer.invoke('relay:start'),
|
||
|
|
stop: (): Promise<void> => ipcRenderer.invoke('relay:stop'),
|
||
|
|
getAutostart: (): Promise<boolean> => ipcRenderer.invoke('relay:get-autostart'),
|
||
|
|
setAutostart: (enabled: boolean): Promise<boolean> =>
|
||
|
|
ipcRenderer.invoke('relay:set-autostart', enabled),
|
||
|
|
setMirrorEnabled: (index: number, enabled: boolean): Promise<RelayStatus> =>
|
||
|
|
ipcRenderer.invoke('relay:set-mirror-enabled', index, enabled),
|
||
|
|
onStatus: (callback: (status: RelayStatus) => void): (() => void) => {
|
||
|
|
const listener = (_e: unknown, status: RelayStatus): void => callback(status)
|
||
|
|
ipcRenderer.on('relay:status', listener)
|
||
|
|
return () => ipcRenderer.removeListener('relay:status', listener)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (process.contextIsolated) {
|
||
|
|
try {
|
||
|
|
contextBridge.exposeInMainWorld('electron', electronAPI)
|
||
|
|
contextBridge.exposeInMainWorld('api', api)
|
||
|
|
} catch (error) {
|
||
|
|
console.error(error)
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
// @ts-ignore (define in dts)
|
||
|
|
window.electron = electronAPI
|
||
|
|
// @ts-ignore (define in dts)
|
||
|
|
window.api = api
|
||
|
|
}
|
||
|
|
|
||
|
|
export type RelayApi = typeof api
|