import { initializeApp } from "./main.common"; import { logger } from "./utils/logger"; const platform = process.env.VITE_PLATFORM; const pwa_enabled = process.env.VITE_PWA_ENABLED === "true"; logger.info("[Main Electron] Initializing app"); logger.info("[Main Electron] Platform:", { platform }); logger.info("[Main Electron] PWA enabled:", { pwa_enabled }); if (pwa_enabled) { logger.warn("[Main Electron] PWA is enabled, but not supported in electron"); } // Initialize app and SQLite const app = initializeApp(); // Create a promise that resolves when SQLite is ready const sqliteReady = new Promise((resolve, reject) => { if (!window.electron?.ipcRenderer) { logger.error("[Main Electron] IPC renderer not available"); reject(new Error("IPC renderer not available")); return; } // Set a timeout to prevent hanging const timeout = setTimeout(() => { reject(new Error("SQLite initialization timeout")); }, 30000); // 30 second timeout window.electron.ipcRenderer.once('sqlite-ready', () => { clearTimeout(timeout); logger.info("[Main Electron] Received SQLite ready signal"); resolve(); }); // Also listen for database errors window.electron.ipcRenderer.once('database-status', (...args: unknown[]) => { clearTimeout(timeout); const status = args[0] as { status: string; error?: string }; if (status.status === 'error') { reject(new Error(status.error || 'Database initialization failed')); } }); }); // Wait for SQLite to be ready before mounting sqliteReady .then(() => { logger.info("[Main Electron] SQLite ready, mounting app..."); app.mount("#app"); }) .catch((error) => { logger.error("[Main Electron] Failed to initialize SQLite:", error instanceof Error ? error.message : 'Unknown error'); // Show error to user const errorDiv = document.createElement("div"); errorDiv.style.cssText = "position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #ffebee; color: #c62828; padding: 20px; border-radius: 4px; text-align: center; max-width: 80%;"; errorDiv.innerHTML = `

Failed to Initialize Application

There was an error initializing the database. Please try restarting.

Error details: ${error instanceof Error ? error.message : 'Unknown error'}

`; document.body.appendChild(errorDiv); });