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 @@ -81,7 +81,10 @@ reduceMessageStore(state.messageStore, action, threadInfos); let messageStore = reducedMessageStore; - let { keyserverStore } = reduceKeyserverStore(state.keyserverStore, action); + let { keyserverStore, keyserverStoreOperations } = reduceKeyserverStore( + state.keyserverStore, + action, + ); if ( action.type !== incrementalStateSyncActionType && @@ -135,6 +138,10 @@ keyserverStore, replaceOperations, ); + keyserverStoreOperations = [ + ...keyserverStoreOperations, + ...replaceOperations, + ]; } const { draftStore, draftStoreOperations } = reduceDraftStore( @@ -203,6 +210,7 @@ messageStoreOperations, reportStoreOperations, userStoreOperations, + keyserverStoreOperations, }, }; } diff --git a/lib/types/store-ops-types.js b/lib/types/store-ops-types.js --- a/lib/types/store-ops-types.js +++ b/lib/types/store-ops-types.js @@ -15,6 +15,7 @@ import type { ClientDBKeyserverInfo, ClientDBKeyserverStoreOperation, + KeyserverStoreOperation, } from '../ops/keyserver-store-ops.js'; import type { ClientDBMessageStoreOperation, @@ -40,6 +41,7 @@ +messageStoreOperations: $ReadOnlyArray, +reportStoreOperations: $ReadOnlyArray, +userStoreOperations: $ReadOnlyArray, + +keyserverStoreOperations: $ReadOnlyArray, }; export type ClientDBStoreOperations = { diff --git a/native/redux/redux-setup.js b/native/redux/redux-setup.js --- a/native/redux/redux-setup.js +++ b/native/redux/redux-setup.js @@ -287,6 +287,7 @@ messageStoreOperations, reportStoreOperations, userStoreOperations, + keyserverStoreOperations, } = storeOperations; const fixUnreadActiveThreadResult = fixUnreadActiveThread(state, action); @@ -303,6 +304,7 @@ threadStoreOperations: threadStoreOperationsWithUnreadFix, reportStoreOperations, userStoreOperations, + keyserverStoreOperations, }); return state; diff --git a/native/redux/redux-utils.js b/native/redux/redux-utils.js --- a/native/redux/redux-utils.js +++ b/native/redux/redux-utils.js @@ -2,6 +2,7 @@ import { useSelector as reactReduxUseSelector } from 'react-redux'; +import { keyserverStoreOpsHandlers } from 'lib/ops/keyserver-store-ops.js'; import { messageStoreOpsHandlers } from 'lib/ops/message-store-ops.js'; import { reportStoreOpsHandlers } from 'lib/ops/report-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; @@ -28,6 +29,7 @@ messageStoreOperations, reportStoreOperations, userStoreOperations, + keyserverStoreOperations, } = storeOperations; const convertedThreadStoreOperations = @@ -38,6 +40,8 @@ reportStoreOpsHandlers.convertOpsToClientDBOps(reportStoreOperations); const convertedUserStoreOperations = userStoreOpsHandlers.convertOpsToClientDBOps(userStoreOperations); + const convertedKeyserverStoreOperations = + keyserverStoreOpsHandlers.convertOpsToClientDBOps(keyserverStoreOperations); try { const promises = []; @@ -72,6 +76,13 @@ commCoreModule.processUserStoreOperations(convertedUserStoreOperations), ); } + if (convertedKeyserverStoreOperations.length > 0) { + promises.push( + commCoreModule.processKeyserverStoreOperations( + convertedKeyserverStoreOperations, + ), + ); + } await Promise.all(promises); } catch (e) { if (isTaskCancelledError(e)) { diff --git a/web/database/utils/store.js b/web/database/utils/store.js --- a/web/database/utils/store.js +++ b/web/database/utils/store.js @@ -1,5 +1,6 @@ // @flow +import { keyserverStoreOpsHandlers } from 'lib/ops/keyserver-store-ops.js'; import { reportStoreOpsHandlers } from 'lib/ops/report-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; import { canUseDatabaseOnWeb } from 'lib/shared/web-database.js'; @@ -54,8 +55,12 @@ storeOperations: StoreOperations, userID: null | string, ): Promise { - const { draftStoreOperations, threadStoreOperations, reportStoreOperations } = - storeOperations; + const { + draftStoreOperations, + threadStoreOperations, + reportStoreOperations, + keyserverStoreOperations, + } = storeOperations; const canUseDatabase = canUseDatabaseOnWeb(userID); @@ -64,11 +69,14 @@ : []; const convertedReportStoreOperations = reportStoreOpsHandlers.convertOpsToClientDBOps(reportStoreOperations); + const convertedKeyserverStoreOperations = + keyserverStoreOpsHandlers.convertOpsToClientDBOps(keyserverStoreOperations); if ( convertedThreadStoreOperations.length === 0 && convertedReportStoreOperations.length === 0 && - draftStoreOperations.length === 0 + draftStoreOperations.length === 0 && + convertedKeyserverStoreOperations.length === 0 ) { return; } @@ -85,6 +93,7 @@ draftStoreOperations, reportStoreOperations: convertedReportStoreOperations, threadStoreOperations: convertedThreadStoreOperations, + keyserverStoreOperations: convertedKeyserverStoreOperations, }, }); } catch (e) { diff --git a/web/redux/initial-state-gate.js b/web/redux/initial-state-gate.js --- a/web/redux/initial-state-gate.js +++ b/web/redux/initial-state-gate.js @@ -120,6 +120,7 @@ messageStoreOperations: [], reportStoreOperations: [], userStoreOperations: [], + keyserverStoreOperations: [], }, currentLoggedInUserID, ); diff --git a/web/redux/redux-setup.js b/web/redux/redux-setup.js --- a/web/redux/redux-setup.js +++ b/web/redux/redux-setup.js @@ -143,6 +143,7 @@ messageStoreOperations: [], reportStoreOperations: [], userStoreOperations: [], + keyserverStoreOperations: [], }; if (action.type === setInitialReduxState) { @@ -172,7 +173,13 @@ ), initialStateLoaded: true, }, - storeOperations, + { + ...storeOperations, + keyserverStoreOperations: [ + ...storeOperations.keyserverStoreOperations, + ...replaceOperations, + ], + }, ); } else if (action.type === updateWindowDimensionsActionType) { return validateStateAndProcessDBOperations( @@ -235,6 +242,13 @@ [replaceOperation], ), }; + storeOperations = { + ...storeOperations, + keyserverStoreOperations: [ + ...storeOperations.keyserverStoreOperations, + replaceOperation, + ], + }; } else if (action.type === deleteKeyserverAccountActionTypes.success) { const { currentUserInfo, preRequestUserState } = action.payload; const newKeyserverIDs = []; @@ -301,7 +315,13 @@ ) { const baseReducerResult = baseReducer(state, action, onStateDifference); state = baseReducerResult.state; - storeOperations = baseReducerResult.storeOperations; + storeOperations = { + ...baseReducerResult.storeOperations, + keyserverStoreOperations: [ + ...storeOperations.keyserverStoreOperations, + ...baseReducerResult.storeOperations.keyserverStoreOperations, + ], + }; } const communityPickerStore = reduceCommunityPickerStore(