| 
									
										
										
										
											2025-03-30 22:26:31 +03:00
										 |  |  | import { extractZip, initializeDatabase, startElectron } from "./electron-utils.js"; | 
					
						
							| 
									
										
										
										
											2025-03-30 21:31:35 +03:00
										 |  |  | import { initializeTranslations } from "./src/services/i18n.js"; | 
					
						
							|  |  |  | import debounce from "./src/public/app/services/debounce.js"; | 
					
						
							| 
									
										
										
										
											2025-03-30 23:09:17 +03:00
										 |  |  | import fs from "fs/promises"; | 
					
						
							| 
									
										
										
										
											2025-03-30 21:31:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | const DEMO_ZIP_PATH = "db/demo.zip"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function main() { | 
					
						
							|  |  |  |     await initializeTranslations(); | 
					
						
							| 
									
										
										
										
											2025-04-11 17:18:00 +03:00
										 |  |  |     await initializeDatabase(false); | 
					
						
							| 
									
										
										
										
											2025-03-30 21:31:35 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     await startElectron(); | 
					
						
							|  |  |  |     await registerHandlers(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function registerHandlers() { | 
					
						
							|  |  |  |     const events = (await import("./src/services/events.js")).default; | 
					
						
							|  |  |  |     const eraseService = (await import("./src/services/erase.js")).default; | 
					
						
							|  |  |  |     const debouncer = debounce(async () => { | 
					
						
							|  |  |  |         console.log("Exporting data"); | 
					
						
							|  |  |  |         eraseService.eraseUnusedAttachmentsNow(); | 
					
						
							|  |  |  |         await exportData(); | 
					
						
							| 
									
										
										
										
											2025-03-30 23:09:17 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const outputDir = "demo"; | 
					
						
							|  |  |  |         await fs.rmdir(outputDir, { recursive: true }).catch(() => {}); | 
					
						
							|  |  |  |         await extractZip(DEMO_ZIP_PATH, outputDir); | 
					
						
							| 
									
										
										
										
											2025-03-30 21:37:10 +03:00
										 |  |  |     }, 10_000); | 
					
						
							| 
									
										
										
										
											2025-03-30 21:31:35 +03:00
										 |  |  |     events.subscribe(events.ENTITY_CHANGED, async (e) => { | 
					
						
							|  |  |  |         if (e.entityName === "options") { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         console.log("Got entity changed ", e); | 
					
						
							|  |  |  |         debouncer(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | async function exportData() { | 
					
						
							|  |  |  |     const { exportToZipFile } = (await import("./src/services/export/zip.js")).default; | 
					
						
							| 
									
										
										
										
											2025-03-30 22:26:31 +03:00
										 |  |  |     await exportToZipFile("root", "html", DEMO_ZIP_PATH); | 
					
						
							| 
									
										
										
										
											2025-03-30 21:31:35 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | await main(); |