diff --git a/src/main.ts b/src/main.ts index cd60dde..5dfedcb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -940,14 +940,16 @@ async function initSettings(): Promise { await runBackups(settings.dataDir, settings.deletedRetentionDays); } -async function initDataAndEngine(): Promise { +function initEngine(): void { engine = new SumEngine({ precision: settings.precision, groupSeparator: settings.groupSeparator, decimalSeparator: settings.decimalSeparator, dateFormat: settings.dateFormat, }); +} +async function initData(): Promise { const stored = await loadAppData(settings.dataDir); // a corrupt or foreign documents.json must not crash the boot if ( @@ -968,10 +970,14 @@ async function initDataAndEngine(): Promise { } if (!data.docs.some((d) => d.id === data.activeId)) data.activeId = data.docs[0].id; +} +async function initExtensions(): Promise { const scripts = await loadExtensionScripts(); await runExtensions(engine, scripts); +} +function initWorkspace(): void { workspace = new Workspace(engine, () => data.docs.map((d) => ({ id: d.id, @@ -979,7 +985,9 @@ async function initDataAndEngine(): Promise { text: data.contents[d.id] ?? "", })), ); +} +function initEditor(): void { editor = new SumEditor( $("#editor"), $("#results"), @@ -1016,7 +1024,9 @@ async function initDataAndEngine(): Promise { // the editor above was seeded directly with initialText (not via switchDoc), // so a reopened sheet with "on 2024-01-01" needs its own historical-rate fetch void fetchNeededHistoricalRates(data.contents[data.activeId] ?? ""); +} +function initSearchController(): void { search = initSearch({ engine, workspace, @@ -1034,6 +1044,15 @@ async function initDataAndEngine(): Promise { }); } +async function initDataAndEngine(): Promise { + initEngine(); + await initData(); + await initExtensions(); + initWorkspace(); + initEditor(); + initSearchController(); +} + function bindTitleUI(): void { const titleField = $("#doc-title"); titleField.addEventListener("change", () => {