summaryrefslogtreecommitdiff
path: root/packages/frontend/src/preferences/manager.ts
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-03-20 14:57:14 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-03-20 14:57:14 +0900
commit8d8414687a21fe456c6c462dfa171a97873614fa (patch)
tree68cf6de9cde7c79920f78c001c11bf1f88e2e0e6 /packages/frontend/src/preferences/manager.ts
parent🎨 (diff)
downloadmisskey-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.ts17
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) {