49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { contextBridge, ipcRenderer } from "electron";
|
|
import { electronAPI } from "@electron-toolkit/preload";
|
|
import type { SelfAPI } from "./index.d";
|
|
|
|
// Custom APIs for renderer - bridges to IPC handlers
|
|
const api: SelfAPI = {
|
|
// Platform detection
|
|
platform: process.platform,
|
|
|
|
// ==================== Domain Management ====================
|
|
getDomains: () => ipcRenderer.invoke("getDomains"),
|
|
createDomain: (params) => ipcRenderer.invoke("createDomain", params),
|
|
updateDomain: (params) => ipcRenderer.invoke("updateDomain", params),
|
|
deleteDomain: (id) => ipcRenderer.invoke("deleteDomain", id),
|
|
testConnection: (id) => ipcRenderer.invoke("testConnection", id),
|
|
testDomainConnection: (params) => ipcRenderer.invoke("testDomainConnection", params),
|
|
|
|
// ==================== Browse ====================
|
|
getApps: (params) => ipcRenderer.invoke("getApps", params),
|
|
|
|
// ==================== Deploy ====================
|
|
deploy: (params) => ipcRenderer.invoke("deploy", params),
|
|
|
|
// ==================== Download ====================
|
|
download: (params) => ipcRenderer.invoke("download", params),
|
|
|
|
// ==================== Version Management ====================
|
|
getVersions: (params) => ipcRenderer.invoke("getVersions", params),
|
|
deleteVersion: (id) => ipcRenderer.invoke("deleteVersion", id),
|
|
rollback: (params) => ipcRenderer.invoke("rollback", params),
|
|
};
|
|
|
|
// 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);
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
} else {
|
|
// @ts-ignore (define in dts)
|
|
window.electron = electronAPI;
|
|
// @ts-ignore (define in dts)
|
|
window.api = api;
|
|
}
|