SurfSense/surfsense_desktop/src/main.ts
2026-03-24 19:24:41 +02:00

50 lines
1.2 KiB
TypeScript

import { app, BrowserWindow } from 'electron';
import { registerGlobalErrorHandlers, showErrorDialog } from './modules/errors';
import { startNextServer } from './modules/server';
import { createMainWindow } from './modules/window';
import { setupDeepLinks, handlePendingDeepLink } from './modules/deep-links';
import { setupAutoUpdater } from './modules/auto-updater';
import { setupMenu } from './modules/menu';
import { registerQuickAsk, unregisterQuickAsk } from './modules/quick-ask';
import { registerIpcHandlers } from './ipc/handlers';
registerGlobalErrorHandlers();
if (!setupDeepLinks()) {
app.quit();
}
registerIpcHandlers();
// App lifecycle
app.whenReady().then(async () => {
setupMenu();
try {
await startNextServer();
} catch (error) {
showErrorDialog('Failed to start SurfSense', error);
setTimeout(() => app.quit(), 0);
return;
}
createMainWindow();
registerQuickAsk();
setupAutoUpdater();
handlePendingDeepLink();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createMainWindow();
}
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('will-quit', () => {
unregisterQuickAsk();
});