From 39e4f2c137fbdf9be30e986bceac7230841576ab Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 17 Apr 2022 05:12:33 +0900 Subject: feature: Client Preferences Registry on the account --- packages/client/src/pages/settings/index.vue | 6 + .../src/pages/settings/preferences-registry.vue | 278 +++++++++++++++++++++ packages/client/src/store.ts | 10 + 3 files changed, 294 insertions(+) create mode 100644 packages/client/src/pages/settings/preferences-registry.vue (limited to 'packages/client/src') diff --git a/packages/client/src/pages/settings/index.vue b/packages/client/src/pages/settings/index.vue index 1838cb73e3..752054e9b3 100644 --- a/packages/client/src/pages/settings/index.vue +++ b/packages/client/src/pages/settings/index.vue @@ -132,6 +132,11 @@ const menuDef = computed(() => [{ text: i18n.ts.plugins, to: '/settings/plugin', active: props.initialPage === 'plugin', + }, { + icon: 'fas fa-floppy-disk', + text: i18n.ts.preferencesRegistryShort, + to: '/settings/preferences-registry', + active: props.initialPage === 'preferences-registry', }], }, { title: i18n.ts.otherSettings, @@ -225,6 +230,7 @@ const component = computed(() => { case 'deck': return defineAsyncComponent(() => import('./deck.vue')); case 'plugin': return defineAsyncComponent(() => import('./plugin.vue')); case 'plugin/install': return defineAsyncComponent(() => import('./plugin.install.vue')); + case 'preferences-registry': return defineAsyncComponent(() => import('./preferences-registry.vue')); case 'import-export': return defineAsyncComponent(() => import('./import-export.vue')); case 'account-info': return defineAsyncComponent(() => import('./account-info.vue')); case 'delete-account': return defineAsyncComponent(() => import('./delete-account.vue')); diff --git a/packages/client/src/pages/settings/preferences-registry.vue b/packages/client/src/pages/settings/preferences-registry.vue new file mode 100644 index 0000000000..d668150045 --- /dev/null +++ b/packages/client/src/pages/settings/preferences-registry.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/packages/client/src/store.ts b/packages/client/src/store.ts index b9800ec607..296eaa2068 100644 --- a/packages/client/src/store.ts +++ b/packages/client/src/store.ts @@ -286,6 +286,16 @@ export class ColdDeviceStorage { } } + public static getAll(): Partial { + return (Object.keys(this.default) as (keyof typeof this.default)[]).reduce((acc, key) => { + const value = localStorage.getItem(PREFIX + key); + if (value != null) { + acc[key] = JSON.parse(value); + } + return acc; + }, {} as any); + } + public static set(key: T, value: typeof ColdDeviceStorage.default[T]): void { localStorage.setItem(PREFIX + key, JSON.stringify(value)); -- cgit v1.2.3-freya