"use strict"; const electron = require("electron"); const IPC_CHANNELS = { SAVE_FILE: "file:save", READ_FILE: "file:read", GET_SETTINGS: "settings:get", SAVE_SETTINGS: "settings:save", // 缓存操作 CACHE_SET_JSON: "cache:setJSON", CACHE_GET_JSON: "cache:getJSON", CACHE_SET_BINARY: "cache:setBinary", CACHE_GET_BINARY: "cache:getBinary", CACHE_HAS: "cache:has", CACHE_DELETE: "cache:delete", CACHE_CLEAR_NAMESPACE: "cache:clearNamespace", CACHE_CLEAR_ALL: "cache:clearAll", CACHE_GET_STATS: "cache:getStats", // 窗口操作 WINDOW_MINIMIZE: "window:minimize", WINDOW_MAXIMIZE: "window:maximize", WINDOW_CLOSE: "window:close", // Git/System 操作 DIALOG_OPEN_DIRECTORY: "dialog:openDirectory", GIT_CLONE: "git:clone" }; const electronAPI = { // ============================================ // 文件操作 API // ============================================ file: { /** * 保存文件到桌面 * @param content - 文件内容 * @param filename - 文件名(可选,默认为 demo-note.txt) */ save: (content, filename) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.SAVE_FILE, content, filename); }, /** * 从桌面读取文件 * @param filename - 文件名(可选,默认为 demo-note.txt) */ read: (filename) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.READ_FILE, filename); }, /** * 打开目录选择对话框 */ openDirectory: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.DIALOG_OPEN_DIRECTORY); } }, // ============================================ // Git 操作 API // ============================================ git: { /** * 克隆 Git 仓库 * @param repoUrl - 仓库地址 * @param targetDir - 目标目录 */ clone: (repoUrl, targetDir) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.GIT_CLONE, repoUrl, targetDir); }, /** * 监听 Git 进度 */ onProgress: (callback) => { electron.ipcRenderer.removeAllListeners("git:progress"); electron.ipcRenderer.on("git:progress", (_event, data) => { callback(data); }); }, /** * 移除监听器 */ removeListener: () => { electron.ipcRenderer.removeAllListeners("git:progress"); } }, // ============================================ // 设置操作 API // ============================================ settings: { /** * 获取用户设置 * @param key - 设置键名(可选,不传返回所有设置) */ get: (key) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.GET_SETTINGS, key); }, /** * 保存用户设置 * @param key - 设置键名 * @param value - 设置值 */ save: (key, value) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.SAVE_SETTINGS, key, value); } }, // ============================================ // 缓存操作 API // ============================================ cache: { /** * 设置JSON缓存 */ setJSON: (key, data, config) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_SET_JSON, key, data, config); }, /** * 获取JSON缓存 */ getJSON: (key, config) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_GET_JSON, key, config); }, /** * 设置二进制缓存 */ setBinary: (key, buffer, type, config) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_SET_BINARY, key, buffer, type, config); }, /** * 获取二进制缓存 */ getBinary: (key, config) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_GET_BINARY, key, config); }, /** * 检查缓存是否存在 */ has: (key, config) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_HAS, key, config); }, /** * 删除单个缓存 */ delete: (key, namespace) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_DELETE, key, namespace); }, /** * 清空命名空间缓存 */ clearNamespace: (namespace) => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_CLEAR_NAMESPACE, namespace); }, /** * 清空所有缓存 */ clearAll: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_CLEAR_ALL); }, /** * 获取缓存统计信息 */ getStats: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.CACHE_GET_STATS); } }, // ============================================ // 窗口操作 API // ============================================ window: { /** * 最小化窗口 */ minimize: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.WINDOW_MINIMIZE); }, /** * 最大化/还原窗口 */ maximize: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.WINDOW_MAXIMIZE); }, /** * 关闭窗口 */ close: () => { return electron.ipcRenderer.invoke(IPC_CHANNELS.WINDOW_CLOSE); } } }; electron.contextBridge.exposeInMainWorld("electronAPI", electronAPI);