diff --git a/src/lib/extension/settings/MiscSettings.js b/src/lib/extension/settings/MiscSettings.js new file mode 100644 index 0000000..19b02cc --- /dev/null +++ b/src/lib/extension/settings/MiscSettings.js @@ -0,0 +1,32 @@ +import CacheableSettings from "$lib/extension/base/CacheableSettings.js"; + +export default class MiscSettings extends CacheableSettings { + constructor() { + super("misc"); + } + + async resolveFullscreenViewerEnabled() { + return this._resolveSetting("fullscreenViewer", false); + } + + async setFullscreenViewerEnabled(isEnabled) { + return this._writeSetting("fullscreenViewer", isEnabled); + } + + /** + * @param {function(MiscSettingsObject): void} callback + * @return {function(): void} + */ + subscribe(callback) { + return super.subscribe(settings => { + callback({ + fullscreenViewer: settings.fullscreenViewer ?? false, + }) + }); + } +} + +/** + * @typedef {Object} MiscSettingsObject + * @property {boolean} fullscreenViewer + */ diff --git a/src/routes/preferences/+page.svelte b/src/routes/preferences/+page.svelte index a50e255..c9f37fe 100644 --- a/src/routes/preferences/+page.svelte +++ b/src/routes/preferences/+page.svelte @@ -7,4 +7,5 @@ Back
Search + Misc & Tools diff --git a/src/routes/preferences/misc/+page.svelte b/src/routes/preferences/misc/+page.svelte new file mode 100644 index 0000000..d02981f --- /dev/null +++ b/src/routes/preferences/misc/+page.svelte @@ -0,0 +1,20 @@ + + + + Back +
+
+ + + + Enable fullscreen viewer button + + + diff --git a/src/stores/misc-preferences.js b/src/stores/misc-preferences.js new file mode 100644 index 0000000..e16402c --- /dev/null +++ b/src/stores/misc-preferences.js @@ -0,0 +1,14 @@ +import {writable} from "svelte/store"; +import MiscSettings from "$lib/extension/settings/MiscSettings.js"; + +export const fullScreenViewerEnabled = writable(false); + +const miscSettings = new MiscSettings(); + +Promise.allSettled([ + miscSettings.resolveFullscreenViewerEnabled().then(v => fullScreenViewerEnabled.set(v)) +]).then(() => { + fullScreenViewerEnabled.subscribe(value => { + void miscSettings.setFullscreenViewerEnabled(value); + }) +});