diff --git a/lib/reducers/dm-operations-queue-reducer.js b/lib/reducers/dm-operations-queue-reducer.js --- a/lib/reducers/dm-operations-queue-reducer.js +++ b/lib/reducers/dm-operations-queue-reducer.js @@ -1,7 +1,11 @@ // @flow +import { setClientDBStoreActionType } from '../actions/client-db-store-actions.js'; import type { DMOperationStoreOperation } from '../ops/dm-operations-store-ops.js'; -import { dmOperationsStoreOpsHandlers } from '../ops/dm-operations-store-ops.js'; +import { + dmOperationsStoreOpsHandlers, + dmOperationUnshimmedType, +} from '../ops/dm-operations-store-ops.js'; import { clearQueuedDMOpsActionType, pruneDMOpsQueueActionType, @@ -79,6 +83,27 @@ store: processStoreOperations(store, operations), operations, }; + } else if (action.type === setClientDBStoreActionType) { + const newQueuedOperations = action.payload.queuedDMOperations ?? {}; + + const shimmedOperations = + action.payload.dmOperations + // Only already unshimmed operations should be added to the store. + // Other types are still unknown to the client. + ?.filter(op => op.type === dmOperationUnshimmedType) + ?.map(op => ({ + id: op.id, + operation: op.operation, + })) ?? []; + + return { + store: { + ...store, + ...newQueuedOperations, + shimmedOperations, + }, + operations: [], + }; } return { store, operations: [] }; }