Files
Termix/electron/preload.cjs
ZacharyZcR 591309530d Convert web app to Electron desktop application
- Add Electron main process with developer tools support
- Create preload script for secure context bridge
- Configure electron-builder for packaging
- Update Vite config for Electron compatibility (base: './')
- Add environment variable support for API host configuration
- Fix i18n to use relative paths for Electron file protocol
- Restore multi-port backend architecture (8081-8085)
- Add enhanced backend startup script with port checking
- Update package.json with Electron dependencies and build scripts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 17:57:12 +08:00

54 lines
1.6 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
// 暴露安全的 API 给渲染进程
contextBridge.exposeInMainWorld('electronAPI', {
// 获取后端端口
getBackendPort: () => ipcRenderer.invoke('get-backend-port'),
// 获取应用版本
getAppVersion: () => ipcRenderer.invoke('get-app-version'),
// 获取平台信息
getPlatform: () => ipcRenderer.invoke('get-platform'),
// 重启后端
restartBackend: () => ipcRenderer.invoke('restart-backend'),
// 文件对话框
showSaveDialog: (options) => ipcRenderer.invoke('show-save-dialog', options),
showOpenDialog: (options) => ipcRenderer.invoke('show-open-dialog', options),
// 监听后端事件
onBackendStarted: (callback) => {
ipcRenderer.on('backend-started', (event, data) => callback(data));
},
onBackendLog: (callback) => {
ipcRenderer.on('backend-log', (event, data) => callback(data));
},
onBackendError: (callback) => {
ipcRenderer.on('backend-error', (event, data) => callback(data));
},
// 监听更新事件
onUpdateAvailable: (callback) => {
ipcRenderer.on('update-available', () => callback());
},
onUpdateDownloaded: (callback) => {
ipcRenderer.on('update-downloaded', () => callback());
},
// 移除事件监听器
removeAllListeners: (channel) => {
ipcRenderer.removeAllListeners(channel);
},
// 环境检测
isElectron: true,
isDev: process.env.NODE_ENV === 'development',
});
// 添加一个标识,让渲染进程知道这是 Electron 环境
window.IS_ELECTRON = true;