From 525c119118d54d708b752c5d3c48bab63184ebc1 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2026 07:17:24 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=20[code=20health=20improvement]=20?= =?UTF-8?q?Refactor=20overly=20long=20initDataAndEngine=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🎯 What: Split the overly long `initDataAndEngine` function into smaller, focused initialization functions for `engine`, `data`, `workspace`, `editor`, and `searchUI`. 💡 Why: Improves readability and maintainability by isolating the setup logic for different application components while keeping a single coordinating `initDataAndEngine` point. ✅ Verification: Confirmed via full test suite and build that all application bootstrapping remains correct and unaffected. ✨ Result: Cleaner code structure and easier debugging for the application boot sequence. Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com> --- src/main.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index cd60dde..caed562 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,9 @@ async function initDataAndEngine(): Promise { } if (!data.docs.some((d) => d.id === data.activeId)) data.activeId = data.docs[0].id; +} - const scripts = await loadExtensionScripts(); - await runExtensions(engine, scripts); - +function initWorkspace(): void { workspace = new Workspace(engine, () => data.docs.map((d) => ({ id: d.id, @@ -979,7 +980,9 @@ async function initDataAndEngine(): Promise { text: data.contents[d.id] ?? "", })), ); +} +function initEditor(): void { editor = new SumEditor( $("#editor"), $("#results"), @@ -1016,7 +1019,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 initSearchUI(): void { search = initSearch({ engine, workspace, @@ -1034,6 +1039,18 @@ async function initDataAndEngine(): Promise { }); } +async function initDataAndEngine(): Promise { + initEngine(); + await initData(); + + const scripts = await loadExtensionScripts(); + await runExtensions(engine, scripts); + + initWorkspace(); + initEditor(); + initSearchUI(); +} + function bindTitleUI(): void { const titleField = $("#doc-title"); titleField.addEventListener("change", () => {