Skip to content

Commit 21e040f

Browse files
committed
refactor: optimize Electron codebase and fix frontend compatibility
- Remove redundant comments and verbose logging across all Electron files - Simplify code structure for better maintainability - Fix critical bug: remove throw in catch block in reload.ts - Optimize utils layer: config-manager, auto-update, cookie, protocol, reload - Optimize UI layer: window, view, tray - Optimize window management: main-window, window-states - Clean up IPC handlers and ensure consistent error handling - Update frontend to use unified IPC response structure - All 26 files optimization completed
1 parent 497adfa commit 21e040f

30 files changed

+475
-1167
lines changed

electron/main/ipc/agent-handlers.ts

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,89 +2,64 @@ import { ipcMain } from 'electron';
22
import { ConfigManager } from '../utils/config-manager';
33
import { windowContextManager } from '../services/window-context-manager';
44
import mcpToolManager from '../../../src/services/mcp';
5+
import { successResponse, errorResponse } from '../utils/ipc-response';
56

6-
/**
7-
* Register agent configuration related IPC handlers
8-
*/
97
export function registerAgentHandlers() {
108
const configManager = ConfigManager.getInstance();
119

12-
/**
13-
* Get agent configuration
14-
*/
1510
ipcMain.handle('agent:get-config', async () => {
1611
try {
1712
const agentConfig = configManager.getAgentConfig();
18-
return { success: true, data: agentConfig };
13+
return successResponse({ agentConfig });
1914
} catch (error: any) {
20-
console.error('Failed to get agent config:', error);
21-
return { success: false, error: error.message };
15+
console.error('[AgentHandlers] get-config error:', error);
16+
return errorResponse(error);
2217
}
2318
});
2419

25-
/**
26-
* Save agent configuration and reload all EkoServices
27-
*/
2820
ipcMain.handle('agent:save-config', async (_, config) => {
2921
try {
3022
configManager.saveAgentConfig(config);
3123

32-
// Reload all window contexts
3324
const contexts = windowContextManager.getAllContexts();
3425
contexts.forEach(context => {
3526
if (context.ekoService) {
3627
context.ekoService.reloadConfig();
3728
}
3829
});
3930

40-
return { success: true };
31+
return successResponse();
4132
} catch (error: any) {
42-
console.error('Failed to save agent config:', error);
43-
return { success: false, error: error.message };
33+
console.error('[AgentHandlers] save-config error:', error);
34+
return errorResponse(error);
4435
}
4536
});
4637

47-
/**
48-
* Get all available MCP tools with their status
49-
*/
5038
ipcMain.handle('agent:get-mcp-tools', async () => {
5139
try {
52-
// Get all tools with their enabled status
5340
const tools = mcpToolManager.getAllToolsWithStatus();
54-
return { success: true, data: tools };
41+
return successResponse({ tools });
5542
} catch (error: any) {
56-
console.error('Failed to get MCP tools:', error);
57-
return { success: false, error: error.message };
43+
console.error('[AgentHandlers] get-mcp-tools error:', error);
44+
return errorResponse(error);
5845
}
5946
});
6047

61-
/**
62-
* Update MCP tool enabled status
63-
*/
6448
ipcMain.handle('agent:set-mcp-tool-enabled', async (_, toolName: string, enabled: boolean) => {
6549
try {
66-
// Update tool status in McpToolManager
6750
mcpToolManager.setToolEnabled(toolName, enabled);
68-
69-
// Update config in ConfigManager
7051
configManager.setMcpToolConfig(toolName, { enabled });
71-
72-
return { success: true };
52+
return successResponse();
7353
} catch (error: any) {
74-
console.error('Failed to set MCP tool status:', error);
75-
return { success: false, error: error.message };
54+
console.error('[AgentHandlers] set-mcp-tool-enabled error:', error);
55+
return errorResponse(error);
7656
}
7757
});
7858

79-
/**
80-
* Reload agent configuration from storage
81-
*/
8259
ipcMain.handle('agent:reload-config', async () => {
8360
try {
84-
// Get latest config
8561
const agentConfig = configManager.getAgentConfig();
8662

87-
// Update MCP tools status
8863
const availableTools = mcpToolManager.getAllToolNames();
8964
availableTools.forEach((toolName: string) => {
9065
const toolConfig = agentConfig.mcpTools[toolName];
@@ -93,18 +68,17 @@ export function registerAgentHandlers() {
9368
}
9469
});
9570

96-
// Reload all EkoServices
9771
const contexts = windowContextManager.getAllContexts();
9872
contexts.forEach(context => {
9973
if (context.ekoService) {
10074
context.ekoService.reloadConfig();
10175
}
10276
});
10377

104-
return { success: true, data: agentConfig };
78+
return successResponse({ agentConfig });
10579
} catch (error: any) {
106-
console.error('Failed to reload agent config:', error);
107-
return { success: false, error: error.message };
80+
console.error('[AgentHandlers] reload-config error:', error);
81+
return errorResponse(error);
10882
}
10983
});
11084

electron/main/ipc/config-handlers.ts

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,118 +2,105 @@ import { ipcMain } from "electron";
22
import { ConfigManager, type UserModelConfigs, type ProviderType } from "../utils/config-manager";
33
import { windowContextManager } from "../services/window-context-manager";
44
import { store } from "../utils/store";
5+
import { successResponse, errorResponse } from "../utils/ipc-response";
56

6-
/**
7-
* Register all configuration-related IPC handlers
8-
*/
97
export function registerConfigHandlers() {
10-
// Get user model configurations
118
ipcMain.handle('config:get-user-configs', async () => {
129
try {
1310
const configManager = ConfigManager.getInstance();
14-
return configManager.getUserModelConfigs();
11+
return successResponse({ configs: configManager.getUserModelConfigs() });
1512
} catch (error: any) {
16-
console.error('IPC config:get-user-configs error:', error);
17-
throw error;
13+
console.error('[ConfigHandlers] get-user-configs error:', error);
14+
return errorResponse(error);
1815
}
1916
});
2017

21-
// Save user model configurations
2218
ipcMain.handle('config:save-user-configs', async (_event, configs: UserModelConfigs) => {
2319
try {
2420
const configManager = ConfigManager.getInstance();
2521
configManager.saveUserModelConfigs(configs);
2622

27-
// Reload EkoService configuration for all windows
2823
const contexts = windowContextManager.getAllContexts();
2924
contexts.forEach(context => {
3025
if (context.ekoService) {
3126
context.ekoService.reloadConfig();
3227
}
3328
});
3429

35-
return { success: true };
30+
return successResponse();
3631
} catch (error: any) {
37-
console.error('IPC config:save-user-configs error:', error);
38-
throw error;
32+
console.error('[ConfigHandlers] save-user-configs error:', error);
33+
return errorResponse(error);
3934
}
4035
});
4136

42-
// Get model configuration for specific provider
4337
ipcMain.handle('config:get-model-config', async (_event, provider: ProviderType) => {
4438
try {
4539
const configManager = ConfigManager.getInstance();
46-
return configManager.getModelConfig(provider);
40+
return successResponse({ config: configManager.getModelConfig(provider) });
4741
} catch (error: any) {
48-
console.error('IPC config:get-model-config error:', error);
49-
throw error;
42+
console.error('[ConfigHandlers] get-model-config error:', error);
43+
return errorResponse(error);
5044
}
5145
});
5246

53-
// Get API key source (user/env/none)
5447
ipcMain.handle('config:get-api-key-source', async (_event, provider: ProviderType) => {
5548
try {
5649
const configManager = ConfigManager.getInstance();
57-
return configManager.getApiKeySource(provider);
50+
return successResponse({ source: configManager.getApiKeySource(provider) });
5851
} catch (error: any) {
59-
console.error('IPC config:get-api-key-source error:', error);
60-
throw error;
52+
console.error('[ConfigHandlers] get-api-key-source error:', error);
53+
return errorResponse(error);
6154
}
6255
});
6356

64-
// Get selected provider
6557
ipcMain.handle('config:get-selected-provider', async () => {
6658
try {
6759
const configManager = ConfigManager.getInstance();
68-
return configManager.getSelectedProvider();
60+
return successResponse({ provider: configManager.getSelectedProvider() });
6961
} catch (error: any) {
70-
console.error('IPC config:get-selected-provider error:', error);
71-
throw error;
62+
console.error('[ConfigHandlers] get-selected-provider error:', error);
63+
return errorResponse(error);
7264
}
7365
});
7466

75-
// Set selected provider
7667
ipcMain.handle('config:set-selected-provider', async (_event, provider: ProviderType) => {
7768
try {
7869
const configManager = ConfigManager.getInstance();
7970
configManager.setSelectedProvider(provider);
8071

81-
// Reload EkoService configuration for all windows
8272
const contexts = windowContextManager.getAllContexts();
8373
contexts.forEach(context => {
8474
if (context.ekoService) {
8575
context.ekoService.reloadConfig();
8676
}
8777
});
8878

89-
return { success: true };
79+
return successResponse();
9080
} catch (error: any) {
91-
console.error('IPC config:set-selected-provider error:', error);
92-
throw error;
81+
console.error('[ConfigHandlers] set-selected-provider error:', error);
82+
return errorResponse(error);
9383
}
9484
});
9585

96-
// Get saved language preference
9786
ipcMain.handle('config:get-language', async () => {
9887
try {
9988
const language = store.get('app.language', 'en-US');
100-
return language;
89+
return successResponse({ language });
10190
} catch (error: any) {
102-
console.error('IPC config:get-language error:', error);
103-
return 'en-US';
91+
console.error('[ConfigHandlers] get-language error:', error);
92+
return successResponse({ language: 'en-US' });
10493
}
10594
});
10695

107-
// Handle language change notification from renderer
10896
ipcMain.handle('language-changed', async (_event, language: string) => {
10997
try {
110-
// Store language preference in electron-store
11198
store.set('app.language', language);
112-
console.log(`[IPC] Language changed to: ${language}`);
113-
return { success: true };
99+
console.log(`[ConfigHandlers] Language changed to: ${language}`);
100+
return successResponse();
114101
} catch (error: any) {
115-
console.error('IPC language-changed error:', error);
116-
throw error;
102+
console.error('[ConfigHandlers] language-changed error:', error);
103+
return errorResponse(error);
117104
}
118105
});
119106

0 commit comments

Comments
 (0)