1
1
mirror of https://github.com/kokonect-link/cherrypick synced 2024-10-31 23:31:48 +09:00
This commit is contained in:
tamaina 2021-12-26 02:17:36 +09:00
parent d53795184c
commit d77fa3bb08

View File

@ -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));
});
}
}