- 新增 `shared/` 目录,统一管理前后端共享的类型定义与工具函数,消除重复代码 - 重构 IPC 数据传输,使用 `toIpcSafeSnapshot` 确保序列化安全 - 新增系统托盘独立窗口 (`/tray` 路由) 与主窗口关闭行为设置,提升用户体验 - 优化 Sing-box 配置校验错误提示,增强可读性 - 修复订阅更新无新节点时的提示逻辑 - 更新项目依赖与构建配置,支持共享层路径别名 (`@shared`) - 补充单元测试,完善国际化词条
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import { ipcMain } from 'electron'
|
|
import { DatabaseService } from './database'
|
|
import type { NodeConfig } from '@shared/types'
|
|
|
|
/**
|
|
* 节点管理服务
|
|
*
|
|
* 负责代理节点的增删改查及导入导出。
|
|
* 实际数据存储委托给 DatabaseService。
|
|
*/
|
|
export class NodeService {
|
|
private db: DatabaseService
|
|
|
|
constructor(db: DatabaseService) {
|
|
this.db = db
|
|
this.registerIPC()
|
|
}
|
|
|
|
/**
|
|
* 获取所有节点
|
|
*/
|
|
public getAll() {
|
|
return this.db.getAllNodes()
|
|
}
|
|
|
|
/**
|
|
* 保存节点配置
|
|
*/
|
|
public save(node: Partial<NodeConfig>) {
|
|
return this.db.saveNode(node)
|
|
}
|
|
|
|
/**
|
|
* 删除节点
|
|
*/
|
|
public delete(id: string) {
|
|
return this.db.deleteNode(id)
|
|
}
|
|
|
|
/**
|
|
* 批量导入节点
|
|
*/
|
|
public importNodes(newNodes: Partial<NodeConfig>[]) {
|
|
return this.db.importNodes(newNodes)
|
|
}
|
|
|
|
/**
|
|
* 注册 IPC 监听器
|
|
*/
|
|
private registerIPC() {
|
|
ipcMain.handle('nodes:get-all', () => this.getAll())
|
|
ipcMain.handle('nodes:save', (_, node: any) => this.save(node))
|
|
ipcMain.handle('nodes:delete', (_, id: string) => this.delete(id))
|
|
ipcMain.handle('nodes:import', (_, nodes: any[]) => this.importNodes(nodes))
|
|
}
|
|
}
|