diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts index 479799d1f..1a48dc0a2 100644 --- a/packages/client/src/pizzax.ts +++ b/packages/client/src/pizzax.ts @@ -117,35 +117,37 @@ export class Storage { } public set(key: K, value: T[K]['default']): Promise { - if (_DEV_) console.log('set', key, value); + const rawValue = JSON.parse(JSON.stringify(value)); - this.state[key] = value; - this.reactiveState[key].value = value; + if (_DEV_) console.log('set', key, rawValue, value); + + this.state[key] = rawValue; + this.reactiveState[key].value = rawValue; return this.addIdbSetJob(async () => { switch (this.def[key].where) { case 'device': { const deviceState = await get(this.deviceStateKeyName) || {}; - deviceState[key] = value; + deviceState[key] = rawValue; await set(this.deviceStateKeyName, deviceState); break; } case 'deviceAccount': { if ($i == null) break; const deviceAccountState = await get(this.deviceAccountStateKeyName) || {}; - deviceAccountState[key] = value; + deviceAccountState[key] = rawValue; await set(this.deviceAccountStateKeyName, deviceAccountState); break; } case 'account': { if ($i == null) break; const cache = await get(this.registryCacheKeyName) || {}; - cache[key] = value; + cache[key] = rawValue; await set(this.registryCacheKeyName, cache); await api('i/registry/set', { scope: ['client', this.key], key: key, - value: value + value: rawValue }); break; }