complete kiosk mode and permalink close #33

This commit is contained in:
Matt Walsh
2024-04-12 16:16:01 -05:00
parent eb69df8b80
commit 240cc416b2
11 changed files with 98 additions and 19 deletions

View File

@@ -1,19 +1,19 @@
const SETTINGS_KEY = 'Settings';
class Setting {
constructor(shortName, name, type, defaultValue, changeAction) {
constructor(shortName, name, type, defaultValue, changeAction, sticky) {
// store values
this.shortName = shortName;
this.name = name;
this.defaultValue = defaultValue;
this.myValue = defaultValue;
this.type = type;
// a defualt blank change function is provded
// a default blank change function is provided
this.changeAction = changeAction ?? (() => {});
// get existing value if present
const storedValue = this.getFromLocalStorage();
if (storedValue !== null) {
if (sticky && storedValue !== null) {
this.myValue = storedValue;
}
@@ -53,6 +53,7 @@ class Setting {
}
storeToLocalStorage(value) {
if (!this.sticky) return;
const allSettingsString = localStorage?.getItem(SETTINGS_KEY) ?? '{}';
const allSettings = JSON.parse(allSettingsString);
allSettings[this.shortName] = value;
@@ -86,7 +87,13 @@ class Setting {
}
set value(newValue) {
// update the state
this.myValue = newValue;
this.checkbox.checked = newValue;
this.storeToLocalStorage(this.myValue);
// call change action
this.changeAction(this.myValue);
}
}