diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-20 14:57:14 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-20 14:57:14 +0900 |
| commit | 8d8414687a21fe456c6c462dfa171a97873614fa (patch) | |
| tree | 68cf6de9cde7c79920f78c001c11bf1f88e2e0e6 /packages/frontend/src/preferences/manager.ts | |
| parent | 🎨 (diff) | |
| download | misskey-8d8414687a21fe456c6c462dfa171a97873614fa.tar.gz misskey-8d8414687a21fe456c6c462dfa171a97873614fa.tar.bz2 misskey-8d8414687a21fe456c6c462dfa171a97873614fa.zip | |
enhance(frontend): improve preference manager stability
Diffstat (limited to 'packages/frontend/src/preferences/manager.ts')
| -rw-r--r-- | packages/frontend/src/preferences/manager.ts | 17 |
1 files 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<K extends keyof PREF>(key: K, value: ValueOf<K>) { - console.log('prefer:commit', key, value); + const v = JSON.parse(JSON.stringify(value)); // deep copy 兼 vueのプロキシ解除 + + if (deepEqual(this.s[key], v)) { + console.log('(skip) prefer:commit', key, v); + return; + } + + console.log('prefer:commit', key, v); - this.rewriteRawState(key, value); + 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) { |