(event, filePath, requestId)
| 7495 | console.error('Error saving setting:', error); |
| 7496 | throw error; |
| 7497 | } |
| 7498 | }); |
| 7499 | |
| 7500 | // Browser extension server control (normal mode only) |
| 7501 | ipcMain.handle('start-extension-server', async (event, port) => { |
| 7502 | if (isServerMode) return { success: false, message: 'Not available in server mode' }; |
| 7503 | try { |
| 7504 | const portNum = parseInt(port, 10) || 5000; |
| 7505 | if (httpServer) await stopHttpServer(); |
| 7506 | console.log('[Browser extension] Starting server on port', portNum, '...'); |
| 7507 | await startHttpServer(portNum, true); |
| 7508 | console.log('[Browser extension] Server started successfully'); |
| 7509 | return { success: true }; |
| 7510 | } catch (error) { |
| 7511 | console.error('[Browser extension] Error starting extension server:', error.message); |
| 7512 | return { success: false, message: error?.message || 'Failed to start' }; |
| 7513 | } |
| 7514 | }); |
| 7515 | |
| 7516 | ipcMain.handle('stop-extension-server', async () => { |
| 7517 | if (isServerMode) return { success: false, message: 'Not available in server mode' }; |
| 7518 | try { |
| 7519 | await stopHttpServer(); |
| 7520 | return { success: true }; |
| 7521 | } catch (error) { |
| 7522 | console.error('Error stopping extension server:', error); |
| 7523 | return { success: false, message: error?.message || 'Failed to stop' }; |
| 7524 | } |
| 7525 | }); |
| 7526 | |
| 7527 | /** Copy SQLite main + sidecar files (-wal / -shm) when migrating paths. */ |
| 7528 | function copySqliteDbFiles(srcBase, destBase) { |
| 7529 | fs.copyFileSync(srcBase, destBase); |
| 7530 | for (const ext of ['-wal', '-shm']) { |
| 7531 | const s = srcBase + ext; |
| 7532 | const d = destBase + ext; |
| 7533 | if (fs.existsSync(s)) fs.copyFileSync(s, d); |
| 7534 | } |
| 7535 | } |
| 7536 | |
| 7537 | /** |
| 7538 | * Docker/server previously used isDev → __dirname/printventory.db (ephemeral /app). |
| 7539 | * If the persisted userData DB does not exist yet, copy from that legacy file once. |
| 7540 | */ |
| 7541 | function migrateLegacyServerDbIfNeeded(persistedPath) { |
| 7542 | if (!isServerMode || fs.existsSync(persistedPath)) return; |
| 7543 | const legacy = path.join(__dirname, 'printventory.db'); |
| 7544 | if (!fs.existsSync(legacy)) return; |
| 7545 | try { |
| 7546 | copySqliteDbFiles(legacy, persistedPath); |
| 7547 | console.log('[Server mode] Migrated SQLite from', legacy, 'to', persistedPath); |
| 7548 | } catch (e) { |
| 7549 | console.error('[Server mode] Could not migrate legacy database:', e); |
| 7550 | } |
| 7551 | } |
| 7552 | |
| 7553 | /** |
| 7554 | * Apply Docker/env defaults without clobbering user-saved settings on every restart. |
nothing calls this directly
no test coverage detected