From d77fa3bb089b59e4c079aa2d1fdd56296431c2a7 Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 26 Dec 2021 02:17:36 +0900 Subject: [PATCH] wip --- packages/client/src/pizzax.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts index 396abc241..6a876c079 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 { public readonly state: { [K in keyof T]: T[K]['default'] }; public readonly reactiveState: { [K in keyof T]: Ref }; + private connection = stream.useChannel('main'); + constructor(key: string, def: T) { this.key = key; this.keyForLocalStorage = 'pizzax::' + key; @@ -70,7 +72,14 @@ export class Storage { }); }, 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)); + }); } }