- 任务右键菜单:实现打开输出目录(inputs/outputs/.cache 结构)、
复制资源链接、重新编辑、再次生成、拉取结果、重新下载、收藏、删除记录
- 主进程下载:通过 Electron net 模块绕过 CORS,支持 CDN 媒体文件下载
- sharp 缩略图:替换 nativeImage,支持 4K/8K+ 大尺寸素材的流式处理
- IPC 精简:40+ 冗余通道 → 15 个分组通道,移除未使用的 preload 桥接方法
- 任务存储:新增收藏字段、schema 迁移、task-store 持久化
- 清理废弃模块:canvas-ipc / updater / request / pricing
refactor: IPC/Preload/Services 模块化拆分 — 单一职责 + 向后兼容
主要变更:
- shared/constants/ipc-channels.ts → ipc/ 模块 (base/storage/canvas/updater)
- electron/preload.ts → preload/ 模块 (base/safe-storage/file-storage/canvas)
- electron/main/ipc/canvas-ipc.ts → canvas/ 模块 (types/walk/sidecar/mime/thumbnail)
- electron/main/ipc/storage-ipc.ts → 提取 utils/ (path/download/thumbnail)
- electron/main/updater.ts → updater/ 模块 (provider/platform-updaters)
- src/services/request.ts → request/ 模块 (token/interceptors/methods)
- src/shared/utils/pricing.ts → pricing/ 模块 (types/helpers/format/calculate/fields)
- src/modules/home/center/views/ModelInputForm.tsx → 提取 utils + DependentFormItem
架构优化:
- 所有拆分均保持向后兼容(旧导入路径仍可用)
- TypeScript 编译通过 ✓
- 每个模块单一职责,平均 ~130 行
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
// ============================================================
|
||
// preload.ts — Electron 预加载脚本(入口)
|
||
//
|
||
// 职责:
|
||
// - 调用各功能模块的 expose 函数,将安全 API 暴露给渲染进程
|
||
// - 所有 API 通过 contextBridge 桥接,确保进程隔离安全
|
||
//
|
||
// 模块拆分:
|
||
// - base.ts → ipcRenderer 基础通信
|
||
// - safe-storage.ts → 加密/解密 API
|
||
// - file-storage.ts → 文件读写 API
|
||
// - app-runtime.ts → 运行时 API(窗口标题等)
|
||
// - canvas.ts → 无限画布 API
|
||
// ============================================================
|
||
|
||
import {
|
||
exposeBaseIpc,
|
||
exposeSafeStorage,
|
||
exposeFileStorage,
|
||
exposeAppRuntime,
|
||
exposeCanvas,
|
||
} from './preload/index';
|
||
|
||
// --------- 按顺序暴露各模块 API ---------
|
||
|
||
// 1. 基础 IPC 通信(ipcRenderer.on/off/send/invoke)
|
||
exposeBaseIpc();
|
||
|
||
// 2. 安全加密 API(基于 Electron safeStorage)
|
||
exposeSafeStorage();
|
||
|
||
// 3. 本地存储文件 API(主进程 fs 桥接)
|
||
exposeFileStorage();
|
||
|
||
// 4. 应用运行时 API(窗口标题等)
|
||
exposeAppRuntime();
|
||
|
||
// 5. 无限画布 API
|
||
exposeCanvas();
|