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 @@ -77,7 +77,11 @@ reduceMessageStore(state.messageStore, action, threadInfos); let messageStore = reducedMessageStore; - let { keyserverStore } = reduceKeyserverStore(state.keyserverStore, action); + // eslint-disable-next-line prefer-const + let { keyserverStore, keyserverStoreOperations } = reduceKeyserverStore( + state.keyserverStore, + action, + ); if ( action.type !== incrementalStateSyncActionType && @@ -188,6 +192,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 @@ -248,6 +248,7 @@ messageStoreOperations, reportStoreOperations, userStoreOperations, + keyserverStoreOperations, } = storeOperations; const fixUnreadActiveThreadResult = fixUnreadActiveThread(state, action); @@ -264,6 +265,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); @@ -65,10 +70,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 +94,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 @@ -112,6 +112,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 @@ -120,6 +120,7 @@ messageStoreOperations: [], reportStoreOperations: [], userStoreOperations: [], + keyserverStoreOperations: [], }; if (action.type === setInitialReduxState) {