51 lines
2.1 KiB
TypeScript
51 lines
2.1 KiB
TypeScript
// noinspection JSUnusedGlobalSymbols
|
|
|
|
import { contextBridge, ipcRenderer } from 'electron'
|
|
import { electronAPI } from '@electron-toolkit/preload'
|
|
import { settingsDto } from '@my-type/settings'
|
|
|
|
// Custom APIs for renderer
|
|
// 在此添加新的进程间通信 API
|
|
const api = {
|
|
_saveSettings: (settings: settingsDto) => ipcRenderer.invoke('settings:save', settings),
|
|
_updateSettings: () => ipcRenderer.invoke('settings:update'),
|
|
_openCodeLaunchpad: () => ipcRenderer.invoke('tools:openCodeLaunchpad'),
|
|
_closeCodeLaunchpad: () => ipcRenderer.invoke('tools:closeCodeLaunchpad'),
|
|
_minimize: () => ipcRenderer.invoke('window:minimize'),
|
|
_maximize: () => ipcRenderer.invoke('window:maximize'),
|
|
_closeWindow: () => ipcRenderer.invoke('window:closeWindow'),
|
|
_exit: () => ipcRenderer.invoke('window:exit')
|
|
}
|
|
|
|
const codeLaunchpadApi = {
|
|
_getIDEs: () => ipcRenderer.invoke('codeLaunchpad:getIDEs'),
|
|
_checkIDEs: () => ipcRenderer.invoke('codeLaunchpad:checkIDEs'),
|
|
_getIDEsVersion: () => ipcRenderer.invoke('codeLaunchpad:getIDEsVersion'),
|
|
_checkIDEsVersion: () => ipcRenderer.invoke('codeLaunchpad:checkIDEsVersion'),
|
|
_getVSCodeProjects: () => ipcRenderer.invoke('codeLaunchpad:getVSCodeProjects'),
|
|
_getJetBrainsProjects: () => ipcRenderer.invoke('codeLaunchpad:getJetBrainsProjects'),
|
|
_openProject: (ide: string, path: string) =>
|
|
ipcRenderer.invoke('codeLaunchpad:openProject', ide, path),
|
|
_getProjectGitInfo: (path: string) => ipcRenderer.invoke('codeLaunchpad:getProjectGitInfo', path)
|
|
}
|
|
|
|
// Use `contextBridge` APIs to expose Electron APIs to
|
|
// renderer only if context isolation is enabled, otherwise
|
|
// just add to the DOM global.
|
|
if (process.contextIsolated) {
|
|
try {
|
|
contextBridge.exposeInMainWorld('electron', electronAPI)
|
|
contextBridge.exposeInMainWorld('api', api)
|
|
contextBridge.exposeInMainWorld('codeLaunchpad', codeLaunchpadApi)
|
|
} catch (error) {
|
|
console.error(error)
|
|
}
|
|
} else {
|
|
// @ts-ignore (define in dts)
|
|
window.electron = electronAPI
|
|
// @ts-ignore (define in dts)
|
|
window.api = api
|
|
// @ts-ignore (define in dts)
|
|
window.codeLaunchpad = codeLaunchpadApi
|
|
}
|