summaryrefslogtreecommitdiff
path: root/src/client/instance.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-12-19 10:55:52 +0900
committerGitHub <noreply@github.com>2020-12-19 10:55:52 +0900
commit43930e6a84d11fb00b9ae9ac153c2538e179d538 (patch)
treec6f6d98976d9ea5d198d0c1249b7b2a8749353f3 /src/client/instance.ts
parentBump vue-i18n from 9.0.0-beta.7 to 9.0.0-beta.14 (#6993) (diff)
downloadmisskey-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.ts45
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;
+ }
+}