AssetPro/dist-electron/preload.js

185 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"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);