Skip to content

Commit

Permalink
Fix: [Client][SettingsStore] サーバーから設定データを同期する際に値が変更されている場合のみストアを更新する
Browse files Browse the repository at this point in the history
実際にはサーバー側で値が変更されていない場合でも、全 Pinia ストアに紐づくすべてのコンポーネントの再描画が発生してしまっていて (?)、結果パフォーマンスに大きく影響していた
  • Loading branch information
tsukumijima committed Nov 12, 2023
1 parent 0b10402 commit 205df5b
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
4 changes: 2 additions & 2 deletions client/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ settings_store.$subscribe(async () => {
console.log('Client Settings Changed:', settings_store.settings);
setLocalStorageSettings(settings_store.settings);

// 設定データをサーバーに同期する (ログイン時かつ同期が有効な場合のみ)
// このクライアントの設定をサーバーに同期する (ログイン時かつ同期が有効な場合のみ実行される)
await settings_store.syncClientSettingsToServer();

}, {detached: true});
Expand All @@ -115,7 +115,7 @@ settings_store.$subscribe(async () => {
window.setInterval(async () => {
if (Utils.getAccessToken() !== null && settings_store.settings.sync_settings === true) {

// 設定データをサーバーにアップロード
// サーバーに保存されている設定データをこのクライアントに同期する
is_uploading_settings = true;
await settings_store.syncClientSettingsFromServer();
is_uploading_settings = false;
Expand Down
6 changes: 5 additions & 1 deletion client/src/stores/SettingsStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -401,8 +401,12 @@ const useSettingsStore = defineStore('settings', {
}

// クライアントの設定データをサーバーからの設定データで上書き
// 両者の値に変更がある場合のみ上書きする
// さもなければ、実際にはサーバー側で値が変更されていない場合でも定義されているストアに紐づく全てのコンポーネントの再描画が発生してしまう (?)
for (const [settings_server_key, settings_server_value] of Object.entries(settings_server)) {
this.settings[settings_server_key] = settings_server_value;
if (JSON.stringify(this.settings[settings_server_key]) !== JSON.stringify(settings_server_value)) {
this.settings[settings_server_key] = settings_server_value;
}
}
},

Expand Down

0 comments on commit 205df5b

Please sign in to comment.