From 8d8414687a21fe456c6c462dfa171a97873614fa Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 20 Mar 2025 14:57:14 +0900 Subject: [PATCH] enhance(frontend): improve preference manager stability --- packages/frontend/src/preferences/manager.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts index d72fa841ff..037d6a6bd1 100644 --- a/packages/frontend/src/preferences/manager.ts +++ b/packages/frontend/src/preferences/manager.ts @@ -139,9 +139,16 @@ export class PreferencesManager { } public commit(key: K, value: ValueOf) { - console.log('prefer:commit', key, value); + const v = JSON.parse(JSON.stringify(value)); // deep copy 兼 vueのプロキシ解除 - this.rewriteRawState(key, value); + if (deepEqual(this.s[key], v)) { + console.log('(skip) prefer:commit', key, v); + return; + } + + console.log('prefer:commit', key, v); + + this.rewriteRawState(key, v); const record = this.getMatchedRecordOf(key); @@ -149,7 +156,7 @@ export class PreferencesManager { this.profile.preferences[key].push([makeScope({ server: host, account: $i!.id, - }), value, {}]); + }), v, {}]); this.save(); return; } @@ -157,12 +164,12 @@ export class PreferencesManager { if (parseScope(record[0]).server == null && this.isServerDependentKey(key)) { this.profile.preferences[key].push([makeScope({ server: host, - }), value, {}]); + }), v, {}]); this.save(); return; } - record[1] = value; + record[1] = v; this.save(); if (record[2].sync) {