Notes/apps/edit-docs/src/electron-edit-demo.ts

44 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-03-30 22:26:31 +03:00
import { extractZip, initializeDatabase, startElectron } from "./electron-utils.js";
2025-04-21 23:18:45 +03:00
import { initializeTranslations } from "@triliumnext/server/src/services/i18n.js";
import debounce from "@triliumnext/client/src/services/debounce.js";
2025-03-30 23:09:17 +03:00
import fs from "fs/promises";
const DEMO_ZIP_PATH = "db/demo.zip";
async function main() {
await initializeTranslations();
2025-04-11 17:18:00 +03:00
await initializeDatabase(false);
await startElectron();
await registerHandlers();
}
async function registerHandlers() {
2025-04-21 23:18:45 +03:00
const events = (await import("@triliumnext/server/src/services/events.js")).default;
const eraseService = (await import("@triliumnext/server/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);
}, 10_000);
events.subscribe(events.ENTITY_CHANGED, async (e) => {
if (e.entityName === "options") {
return;
}
console.log("Got entity changed ", e);
debouncer();
});
}
async function exportData() {
2025-04-21 23:18:45 +03:00
const { exportToZipFile } = (await import("@triliumnext/server/src/services/export/zip.js")).default;
2025-03-30 22:26:31 +03:00
await exportToZipFile("root", "html", DEMO_ZIP_PATH);
}
2025-05-25 11:47:03 +03:00
main();