summaryrefslogtreecommitdiff
path: root/packages/client/src
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2021-12-26 02:17:36 +0900
committertamaina <tamaina@hotmail.co.jp>2021-12-26 02:17:36 +0900
commitd77fa3bb089b59e4c079aa2d1fdd56296431c2a7 (patch)
treedd5b0114223acfd928ca7c8189698944fec44422 /packages/client/src
parentenhance(server): better content type detection (diff)
downloadmisskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.tar.gz
misskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.tar.bz2
misskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.zip
wip
Diffstat (limited to 'packages/client/src')
-rw-r--r--packages/client/src/pizzax.ts13
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts
index 396abc2418..6a876c0797 100644
--- a/packages/client/src/pizzax.ts
+++ b/packages/client/src/pizzax.ts
@@ -1,6 +1,6 @@
import { onUnmounted, Ref, ref, watch } from 'vue';
import { $i } from './account';
-import { api } from './os';
+import { api, stream } from './os';
type StateDef = Record<string, {
where: 'account' | 'device' | 'deviceAccount';
@@ -19,6 +19,8 @@ export class Storage<T extends StateDef> {
public readonly state: { [K in keyof T]: T[K]['default'] };
public readonly reactiveState: { [K in keyof T]: Ref<T[K]['default']> };
+ private connection = stream.useChannel('main');
+
constructor(key: string, def: T) {
this.key = key;
this.keyForLocalStorage = 'pizzax::' + key;
@@ -70,7 +72,14 @@ export class Storage<T extends StateDef> {
});
}, 1);
- // TODO: streamingのuser storage updateイベントを監視して更新
+ // streamingのuser storage updateイベントを監視して更新
+ this.connection.on('registryUpdated', ({ scope, key, value }) => {
+ this.state[key] = value;
+ this.reactiveState[key].value = value;
+ const cache = JSON.parse(localStorage.getItem(this.keyForLocalStorage + '::cache::' + $i.id) || '{}');
+ cache[key] = value;
+ localStorage.setItem(this.keyForLocalStorage + '::cache::' + $i.id, JSON.stringify(cache));
+ });
}
}