From 14e74beba13009fde35db75a1db7a999e1967733 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
Date: Thu, 30 Dec 2021 02:03:39 +0900
Subject: [PATCH] :v:

---
 packages/client/src/pizzax.ts | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/packages/client/src/pizzax.ts b/packages/client/src/pizzax.ts
index 479799d1f9..1a48dc0a2c 100644
--- a/packages/client/src/pizzax.ts
+++ b/packages/client/src/pizzax.ts
@@ -117,35 +117,37 @@ export class Storage<T extends StateDef> {
 	}
 
 	public set<K extends keyof T>(key: K, value: T[K]['default']): Promise<void> {
-		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;
 				}