核心功能: - SSH终端: 密码/密钥认证、XTerm.js终端、多主题配色、IP高亮 - SFTP管理: 双栏文件管理、上传下载、传输队列 - 端口转发: 本地/远程转发、SOCKS5动态代理、规则管理 架构改进: - 拆分大型组件 (SFTPView/TabBar/Sidebar) - 添加统一日志和错误处理 - 修复React严格模式下的终端黑屏问题 UI更新: - 新增端口转发视图 - 更新UI预览文档 - 左侧栏右键菜单支持SFTP快捷打开
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
/**
|
|
* Session IPC Handlers
|
|
* 处理会话的 CRUD 操作
|
|
*/
|
|
|
|
import { ipcMain, IpcMainInvokeEvent } from 'electron'
|
|
import type { DatabaseService } from '../services/database-service'
|
|
|
|
// IPC channel names
|
|
export const SESSION_CHANNELS = {
|
|
CREATE: 'session:create',
|
|
GET_ALL: 'session:getAll',
|
|
GET_BY_ID: 'session:getById',
|
|
UPDATE: 'session:update',
|
|
DELETE: 'session:delete',
|
|
} as const
|
|
|
|
export interface SessionIPCOptions {
|
|
dbService: DatabaseService
|
|
}
|
|
|
|
export function registerSessionIPCHandlers(options: SessionIPCOptions): void {
|
|
const { dbService } = options
|
|
|
|
// Create session
|
|
ipcMain.handle(SESSION_CHANNELS.CREATE, async (_event: IpcMainInvokeEvent, session) => {
|
|
try {
|
|
const result = dbService.createSession(session)
|
|
return { success: true, session: result }
|
|
} catch (error: any) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
})
|
|
|
|
// Get all sessions
|
|
ipcMain.handle(SESSION_CHANNELS.GET_ALL, async () => {
|
|
try {
|
|
const sessions = dbService.getAllSessions()
|
|
return { success: true, sessions }
|
|
} catch (error: any) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
})
|
|
|
|
// Get session by ID
|
|
ipcMain.handle(SESSION_CHANNELS.GET_BY_ID, async (_event: IpcMainInvokeEvent, id: string) => {
|
|
try {
|
|
const session = dbService.getSessionById(id)
|
|
return { success: true, session }
|
|
} catch (error: any) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
})
|
|
|
|
// Update session
|
|
ipcMain.handle(SESSION_CHANNELS.UPDATE, async (_event: IpcMainInvokeEvent, id: string, updates: any) => {
|
|
try {
|
|
const result = dbService.updateSession(id, updates)
|
|
return { success: true, session: result }
|
|
} catch (error: any) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
})
|
|
|
|
// Delete session
|
|
ipcMain.handle(SESSION_CHANNELS.DELETE, async (_event: IpcMainInvokeEvent, id: string) => {
|
|
try {
|
|
dbService.deleteSession(id)
|
|
return { success: true }
|
|
} catch (error: any) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
})
|
|
}
|