diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-12-19 10:55:52 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-19 10:55:52 +0900 |
| commit | 43930e6a84d11fb00b9ae9ac153c2538e179d538 (patch) | |
| tree | c6f6d98976d9ea5d198d0c1249b7b2a8749353f3 /src/client/instance.ts | |
| parent | Bump vue-i18n from 9.0.0-beta.7 to 9.0.0-beta.14 (#6993) (diff) | |
| download | misskey-43930e6a84d11fb00b9ae9ac153c2538e179d538.tar.gz misskey-43930e6a84d11fb00b9ae9ac153c2538e179d538.tar.bz2 misskey-43930e6a84d11fb00b9ae9ac153c2538e179d538.zip | |
Storage improve (#6976)
* wip
* wip
* wip
* wip
* wip
* Update storage.ts
* wip
* wip
* wip
* wip
* Update storage.ts
* Update storage.ts
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Update storage.ts
* wip
* wip
* wip
* wip
* :pizza:
* wip
* wip
* wip
* wip
* wip
* wip
* Update deck-storage.ts
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* wip
* Update store.ts
* wip
* wip
* wip
* wip
* Update init.ts
* wip
* wip
* Update pizzax.ts
* wip
* wip
* Update timeline.vue
* Update init.ts
* wip
* wip
* Update init.ts
Diffstat (limited to 'src/client/instance.ts')
| -rw-r--r-- | src/client/instance.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/client/instance.ts b/src/client/instance.ts new file mode 100644 index 0000000000..89c0368599 --- /dev/null +++ b/src/client/instance.ts @@ -0,0 +1,45 @@ +import { computed, reactive } from 'vue'; +import { api } from './os'; + +// TODO: 他のタブと永続化されたstateを同期 + +type Instance = { + emojis: { + category: string; + }[]; +}; + +const data = localStorage.getItem('instance'); + +// TODO: instanceをリアクティブにするかは再考の余地あり + +export const instance: Instance = reactive(data ? JSON.parse(data) : { + // TODO: set default values +}); + +export async function fetchInstance() { + const meta = await api('meta', { + detail: false + }); + + for (const [k, v] of Object.entries(meta)) { + instance[k] = v; + } + + localStorage.setItem('instance', JSON.stringify(instance)); +} + +export const emojiCategories = computed(() => { + const categories = new Set(); + for (const emoji of instance.emojis) { + categories.add(emoji.category); + } + return Array.from(categories); +}); + +// このファイルに書きたくないけどここに書かないと何故かVeturが認識しない +declare module '@vue/runtime-core' { + interface ComponentCustomProperties { + $instance: typeof instance; + } +} |