From b34e5e50ec357c7f99da2d152f496922f7a20fe0 Mon Sep 17 00:00:00 2001 From: ZXY101 Date: Tue, 5 Sep 2023 14:35:50 +0200 Subject: [PATCH] Add settings store --- src/lib/settings/index.ts | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/lib/settings/index.ts diff --git a/src/lib/settings/index.ts b/src/lib/settings/index.ts new file mode 100644 index 0000000..4c1feae --- /dev/null +++ b/src/lib/settings/index.ts @@ -0,0 +1,45 @@ +import { browser } from "$app/environment"; +import { writable } from "svelte/store"; + +type Settings = { + zoomMode: 'keep' | 'something' + rightToLeft: boolean; + singlePageView: boolean; + textEditable: boolean; + textBoxBorders: boolean; + displayOCR: boolean; +}; + +const defaultSettings: Settings = { + zoomMode: 'keep', + rightToLeft: true, + singlePageView: false, + displayOCR: true, + textEditable: false, + textBoxBorders: false +} + +const stored = browser ? window.localStorage.getItem('settings') : undefined +const initialSettings: Settings = stored && browser ? JSON.parse(stored) : defaultSettings + +export const settingsStore = writable(initialSettings); + +export function updateSetting(key: string, value: any) { + settingsStore.update((settings) => { + return { + ...settings, + [key]: value + }; + }); +} + +export function resetSettings() { + settingsStore.set(defaultSettings); +} + +settingsStore.subscribe((settings) => { + if (browser) { + window.localStorage.setItem('settings', JSON.stringify(settings)) + } +}) +