Files
ChatLab/electron/main/ipc/network.ts
T
2025-12-28 16:43:47 +08:00

66 lines
1.6 KiB
TypeScript

/**
* 网络设置 IPC 处理器
* 处理代理配置的读取、保存和测试
*/
import { ipcMain } from 'electron'
import type { IpcContext } from './types'
import {
loadProxyConfig,
saveProxyConfig,
testProxyConnection,
validateProxyUrl,
type ProxyConfig,
} from '../network/proxy'
/**
* 注册网络设置相关的 IPC 处理器
*/
export function registerNetworkHandlers(_context: IpcContext): void {
console.log('[IpcMain] Registering network handlers...')
/**
* 获取代理配置
*/
ipcMain.handle('network:getProxyConfig', (): ProxyConfig => {
return loadProxyConfig()
})
/**
* 保存代理配置
*/
ipcMain.handle(
'network:saveProxyConfig',
(_event, config: ProxyConfig): { success: boolean; error?: string } => {
try {
// 如果启用了代理,验证 URL 格式
if (config.enabled && config.url) {
const validation = validateProxyUrl(config.url)
if (!validation.valid) {
return { success: false, error: validation.error }
}
}
saveProxyConfig(config)
return { success: true }
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error)
return { success: false, error: `保存配置失败: ${errorMessage}` }
}
}
)
/**
* 测试代理连接
*/
ipcMain.handle(
'network:testProxyConnection',
async (_event, proxyUrl: string): Promise<{ success: boolean; error?: string }> => {
return testProxyConnection(proxyUrl)
}
)
console.log('[IpcMain] Network handlers registered')
}