mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-03-21 23:33:07 +00:00
Extract the monolithic main.ts (~1000 lines) into focused modules: - electron/constants.ts - Window sizing, port defaults, filenames - electron/state.ts - Shared state container - electron/utils/ - Port availability and icon utilities - electron/security/ - API key management - electron/windows/ - Window bounds and main window creation - electron/server/ - Backend and static server management - electron/ipc/ - IPC handlers with shared channel constants Benefits: - Improved testability with isolated modules - Better discoverability and maintainability - Single source of truth for IPC channels (used by both main and preload) - Clear separation of concerns Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
38 lines
936 B
TypeScript
38 lines
936 B
TypeScript
/**
|
|
* App IPC handlers
|
|
*
|
|
* Handles app-related operations like getting paths, version info, and quitting.
|
|
*/
|
|
|
|
import { ipcMain, app } from 'electron';
|
|
import { createLogger } from '@automaker/utils/logger';
|
|
import { IPC_CHANNELS } from './channels';
|
|
|
|
const logger = createLogger('AppHandlers');
|
|
|
|
/**
|
|
* Register app IPC handlers
|
|
*/
|
|
export function registerAppHandlers(): void {
|
|
// Get app path
|
|
ipcMain.handle(IPC_CHANNELS.APP.GET_PATH, async (_, name: Parameters<typeof app.getPath>[0]) => {
|
|
return app.getPath(name);
|
|
});
|
|
|
|
// Get app version
|
|
ipcMain.handle(IPC_CHANNELS.APP.GET_VERSION, async () => {
|
|
return app.getVersion();
|
|
});
|
|
|
|
// Check if app is packaged
|
|
ipcMain.handle(IPC_CHANNELS.APP.IS_PACKAGED, async () => {
|
|
return app.isPackaged;
|
|
});
|
|
|
|
// Quit the application
|
|
ipcMain.handle(IPC_CHANNELS.APP.QUIT, () => {
|
|
logger.info('Quitting application via IPC request');
|
|
app.quit();
|
|
});
|
|
}
|