diff --git a/src/lib/extension/settings/MaintenanceSettings.ts b/src/lib/extension/settings/MaintenanceSettings.ts index 94b9b85..c8aeadd 100644 --- a/src/lib/extension/settings/MaintenanceSettings.ts +++ b/src/lib/extension/settings/MaintenanceSettings.ts @@ -3,6 +3,7 @@ import CacheableSettings from "$lib/extension/base/CacheableSettings.ts"; interface MaintenanceSettingsFields { activeProfile: string | null; + stripBlacklistedTags: boolean; } export default class MaintenanceSettings extends CacheableSettings { @@ -27,6 +28,10 @@ export default class MaintenanceSettings extends CacheableSettings profile.id === resolvedProfileId) || null; } + async resolveStripBlacklistedTags() { + return this._resolveSetting('stripBlacklistedTags', false); + } + /** * Set the active maintenance profile. * @@ -36,4 +41,8 @@ export default class MaintenanceSettings extends CacheableSettings { await this._writeSetting("activeProfile", profileId); } + + async setStripBlacklistedTags(isEnabled: boolean) { + await this._writeSetting('stripBlacklistedTags', isEnabled); + } } diff --git a/src/stores/maintenance-preferences.ts b/src/stores/maintenance-preferences.ts new file mode 100644 index 0000000..05954a0 --- /dev/null +++ b/src/stores/maintenance-preferences.ts @@ -0,0 +1,18 @@ +import {writable} from "svelte/store"; +import MaintenanceSettings from "$lib/extension/settings/MaintenanceSettings.ts"; + +export const stripBlacklistedTagsEnabled = writable(true); + +const maintenanceSettings = new MaintenanceSettings(); + +Promise + .all([ + maintenanceSettings.resolveStripBlacklistedTags().then(v => stripBlacklistedTagsEnabled.set(v ?? true)) + ]) + .then(() => { + maintenanceSettings.subscribe(settings => { + stripBlacklistedTagsEnabled.set(typeof settings.stripBlacklistedTags === 'boolean' ? settings.stripBlacklistedTags : true); + }); + + stripBlacklistedTagsEnabled.subscribe(v => maintenanceSettings.setStripBlacklistedTags(v)); + });