import {type StorageProvider} from "@welshman/store" import {Preferences} from "@capacitor/preferences" export class PreferencesStorageProvider implements StorageProvider { get = async (key: string): Promise => { const result = await Preferences.get({key}) if (!result.value) return undefined try { return JSON.parse(result.value) } catch (e) { return undefined } } p = Promise.resolve() set = async (key: string, value: T): Promise => { this.p = this.p.then(async () => await Preferences.set({key, value: JSON.stringify(value)})) await this.p } clear = async (): Promise => { await Preferences.clear() this.p = Promise.resolve() } } // singleton instance of PreferencesStorageProvider export const preferencesStorageProvider = new PreferencesStorageProvider()