From 9b2af53025eda12262db3633d47940fab28239d8 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Thu, 13 Mar 2025 09:02:38 +0900
Subject: [PATCH] enhance(frontend): improve pref manager

---
 packages/frontend/src/preferences/manager.ts | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts
index 3f3eba6389..f42a9be25f 100644
--- a/packages/frontend/src/preferences/manager.ts
+++ b/packages/frontend/src/preferences/manager.ts
@@ -94,6 +94,7 @@ export type PreferencesDefinition = Record<string, {
 export class ProfileManager {
 	private storageProvider: StorageProvider;
 	public profile: PreferencesProfile;
+	public cloudReady: Promise<void>;
 
 	/**
 	 * static / state の略 (static が予約語のため)
@@ -120,7 +121,7 @@ export class ProfileManager {
 			this.r[key] = ref(this.s[key]);
 		}
 
-		this.fetchCloudValues();
+		this.cloudReady = this.fetchCloudValues();
 
 		// TODO: 定期的にクラウドの値をフェッチ
 	}
@@ -226,7 +227,7 @@ export class ProfileManager {
 			const record = this.getMatchedRecordOf(key);
 			if (record[2].sync && Object.hasOwn(cloudValues, key) && cloudValues[key] !== undefined) {
 				const cloudValue = cloudValues[key];
-				if (cloudValue !== this.s[key]) {
+				if (!deepEqual(cloudValue, record[1])) {
 					this.rewriteRawState(key, cloudValue);
 					record[1] = cloudValue;
 					console.log('cloud fetched', key, cloudValue);