diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2021-12-26 02:17:36 +0900 |
|---|---|---|
| committer | tamaina <tamaina@hotmail.co.jp> | 2021-12-26 02:17:36 +0900 |
| commit | d77fa3bb089b59e4c079aa2d1fdd56296431c2a7 (patch) | |
| tree | dd5b0114223acfd928ca7c8189698944fec44422 /packages | |
| parent | enhance(server): better content type detection (diff) | |
| download | misskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.tar.gz misskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.tar.bz2 misskey-d77fa3bb089b59e4c079aa2d1fdd56296431c2a7.zip | |
wip
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/client/src/pizzax.ts | 13 |
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)); + }); } } |