diff --git a/src/SEQTA.ts b/src/SEQTA.ts index 60a6b6a7..60a4b80a 100644 --- a/src/SEQTA.ts +++ b/src/SEQTA.ts @@ -6,7 +6,7 @@ import documentLoadCSS from "@/css/documentload.scss?inline"; import icon48 from "@/resources/icons/icon-48.png?base64"; import browser from "webextension-polyfill"; -import * as plugins from "@/plugins"; +import { init as Monofile } from "@/plugins/monofile"; import { main } from "@/seqta/main"; import { delay } from "./seqta/utils/delay"; import { initializeHideSensitiveToggle } from "@/seqta/utils/hideSensitiveToggle"; @@ -104,10 +104,11 @@ async function init() { } await main(); - plugins.Monofile(); + Monofile(); if (settingsState.onoff) { - await plugins.initializePlugins(); + const { initializePlugins } = await import("@/plugins/runtime"); + await initializePlugins(); } if (settingsState.devMode) { diff --git a/src/background.ts b/src/background.ts index 30d2165f..4be354c2 100644 --- a/src/background.ts +++ b/src/background.ts @@ -10,6 +10,7 @@ import { performCloudSettingsUploadWithRetry, requestCloudSettingsDebouncedUpload, runCloudSettingsPoll, + withSuppressedCloudAutoUpload, } from "./background/cloudSettingsAutoSync"; import { isAllowedFetchUrl } from "@/seqta/utils/allowedFetchUrl"; @@ -573,10 +574,10 @@ function getDefaultValues(): SettingsState { return getDefaultSettingsState(); } -function SetStorageValue(object: any) { - for (var i in object) { - browser.storage.local.set({ [i]: object[i] }); - } +function SetStorageValue(object: SettingsState) { + void withSuppressedCloudAutoUpload(() => + browser.storage.local.set(object as Record), + ); } /** One-time migration for 3.6.5: opt upgraders into Global Search + indexing + transparency defaults. */ diff --git a/src/background/cloudSettingsAutoSync.ts b/src/background/cloudSettingsAutoSync.ts index 549b6d9c..54661fdc 100644 --- a/src/background/cloudSettingsAutoSync.ts +++ b/src/background/cloudSettingsAutoSync.ts @@ -457,6 +457,17 @@ function onStorageChanged( })(); } +export async function withSuppressedCloudAutoUpload( + operation: () => T | Promise, +): Promise { + suppressAutoUploadDuringRestore = true; + try { + return await operation(); + } finally { + suppressAutoUploadDuringRestore = false; + } +} + export function initCloudSettingsAutoSync(deps: { reloadSeqtaPages: () => void }): void { reloadSeqtaPagesFn = deps.reloadSeqtaPages; if (autoSyncInitialized) return; diff --git a/src/interface/components/ColourPicker.svelte b/src/interface/components/ColourPicker.svelte index 11e7a335..5d0b035b 100644 --- a/src/interface/components/ColourPicker.svelte +++ b/src/interface/components/ColourPicker.svelte @@ -1,7 +1,6 @@