diff --git a/lib/reducers/master-reducer.js b/lib/reducers/master-reducer.js --- a/lib/reducers/master-reducer.js +++ b/lib/reducers/master-reducer.js @@ -29,6 +29,10 @@ keyserverRegisterActionTypes, logInActionTypes, } from '../actions/user-actions.js'; +import { + keyserverStoreOpsHandlers, + type ReplaceKeyserverOperation, +} from '../ops/keyserver-store-ops.js'; import { isStaff } from '../shared/staff-utils.js'; import type { BaseNavInfo } from '../types/nav-types.js'; import type { BaseAppState, BaseAction } from '../types/redux-types.js'; @@ -87,6 +91,7 @@ action.type !== siweAuthActionTypes.success && action.type !== addKeyserverActionType ) { + const replaceOperations: ReplaceKeyserverOperation[] = []; for (const keyserverID in keyserverStore.keyserverInfos) { if ( keyserverStore.keyserverInfos[keyserverID].connection.status === @@ -111,15 +116,29 @@ keyserverStore.keyserverInfos[keyserverID].updatesCurrentAsOf !== state.keyserverStore.keyserverInfos[keyserverID].updatesCurrentAsOf ) { - const keyserverInfos = { ...keyserverStore.keyserverInfos }; - keyserverInfos[keyserverID] = { - ...keyserverInfos[keyserverID], - updatesCurrentAsOf: - state.keyserverStore.keyserverInfos[keyserverID].updatesCurrentAsOf, - }; - keyserverStore = { ...keyserverStore, keyserverInfos }; + replaceOperations.push({ + type: 'replace_keyserver', + payload: { + id: keyserverID, + keyserverInfo: { + ...keyserverStore.keyserverInfos[keyserverID], + updatesCurrentAsOf: + state.keyserverStore.keyserverInfos[keyserverID] + .updatesCurrentAsOf, + }, + }, + }); } } + if (replaceOperations.length > 0) { + keyserverStore = { + ...keyserverStore, + keyserverInfos: keyserverStoreOpsHandlers.processStoreOperations( + keyserverStore.keyserverInfos, + replaceOperations, + ), + }; + } } const { draftStore, draftStoreOperations } = reduceDraftStore(