import {UIEventSource} from "../UIEventSource"; import * as idb from "idb-keyval" import {Utils} from "../../Utils"; /** * UIEventsource-wrapper around indexedDB key-value */ export class IdbLocalStorage { public static Get(key: string, options?: { defaultValue?: T , whenLoaded?: (t: T) => void}): UIEventSource{ const src = new UIEventSource(options?.defaultValue, "idb-local-storage:"+key) if(Utils.runningFromConsole){ return src; } idb.get(key).then(v => { src.setData(v ?? options?.defaultValue); if(options?.whenLoaded !== undefined){ options?.whenLoaded(v) } }) src.addCallback(v => idb.set(key, v)) return src; } public static SetDirectly(key: string, value){ idb.set(key, value) } static GetDirectly(key: string) { return idb.get(key) } }