Page MenuHomePhorge

D15154.1765055237.diff
No OneTemporary

Size
7 KB
Referenced Files
None
Subscribers
None

D15154.1765055237.diff

diff --git a/lib/ops/dm-operations-store-ops.js b/lib/ops/dm-operations-store-ops.js
--- a/lib/ops/dm-operations-store-ops.js
+++ b/lib/ops/dm-operations-store-ops.js
@@ -1,6 +1,11 @@
// @flow
-import type { DMOperation } from '../types/dm-ops.js';
+import {
+ type QueuedDMOperations,
+ queuedDMOperationConditionType,
+ type QueueDMOpsCondition,
+ type DMOperation,
+} from '../types/dm-ops.js';
type Operation = {
+id: string,
@@ -87,6 +92,120 @@
};
}
+export function addQueuedDMOpsToStore(
+ store: QueuedDMOperations,
+ condition: QueueDMOpsCondition,
+ operation: DMOperation,
+ timestamp: number,
+): QueuedDMOperations {
+ if (condition.type === queuedDMOperationConditionType.THREAD) {
+ return {
+ ...store,
+ threadQueue: {
+ ...store.threadQueue,
+ [condition.threadID]: [
+ ...(store.threadQueue[condition.threadID] ?? []),
+ { operation, timestamp },
+ ],
+ },
+ };
+ }
+
+ if (condition.type === queuedDMOperationConditionType.ENTRY) {
+ return {
+ ...store,
+ entryQueue: {
+ ...store.entryQueue,
+ [condition.entryID]: [
+ ...(store.entryQueue[condition.entryID] ?? []),
+ { operation, timestamp },
+ ],
+ },
+ };
+ }
+
+ if (condition.type === queuedDMOperationConditionType.MESSAGE) {
+ return {
+ ...store,
+ messageQueue: {
+ ...store.messageQueue,
+ [condition.messageID]: [
+ ...(store.messageQueue[condition.messageID] ?? []),
+ { operation, timestamp },
+ ],
+ },
+ };
+ }
+
+ return {
+ ...store,
+ membershipQueue: {
+ ...store.membershipQueue,
+ [condition.threadID]: {
+ ...(store.membershipQueue[condition.threadID] ?? {}),
+ [condition.userID]: [
+ ...(store.membershipQueue[condition.threadID]?.[condition.userID] ??
+ []),
+ { operation, timestamp },
+ ],
+ },
+ },
+ };
+}
+
+export function removeQueuedDMOpsToStore(
+ store: QueuedDMOperations,
+ condition: QueueDMOpsCondition,
+): QueuedDMOperations {
+ if (condition.type === queuedDMOperationConditionType.THREAD) {
+ const { [condition.threadID]: removed, ...threadQueue } = store.threadQueue;
+ return {
+ ...store,
+ threadQueue,
+ };
+ }
+
+ if (condition.type === queuedDMOperationConditionType.ENTRY) {
+ const { [condition.entryID]: removed, ...entryQueue } = store.entryQueue;
+ return {
+ ...store,
+ entryQueue,
+ };
+ }
+
+ if (condition.type === queuedDMOperationConditionType.MESSAGE) {
+ const { [condition.messageID]: removed, ...messageQueue } =
+ store.messageQueue;
+ return {
+ ...store,
+ messageQueue,
+ };
+ }
+
+ const threadQueue = store.membershipQueue[condition.threadID];
+ if (!threadQueue) {
+ return store;
+ }
+
+ const { [condition.userID]: removed, ...queue } = threadQueue;
+ if (Object.keys(queue).length === 0) {
+ const { [condition.threadID]: removedThread, ...membershipQueue } =
+ store.membershipQueue;
+ return {
+ ...store,
+ membershipQueue,
+ };
+ }
+
+ return {
+ ...store,
+ membershipQueue: {
+ ...store.membershipQueue,
+ [condition.threadID]: queue,
+ },
+ };
+}
+
export {
convertDMOperationIntoClientDBDMOperation,
convertDMOperationOpsToClientDBOps,
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
@@ -2,12 +2,15 @@
import _mapValues from 'lodash/fp/mapValues.js';
-import type { DMOperationStoreOperation } from '../ops/dm-operations-store-ops.js';
+import {
+ type DMOperationStoreOperation,
+ addQueuedDMOpsToStore,
+ removeQueuedDMOpsToStore,
+} from '../ops/dm-operations-store-ops.js';
import {
clearQueuedDMOpsActionType,
type OperationsQueue,
pruneDMOpsQueueActionType,
- queuedDMOperationConditionType,
type QueuedDMOperations,
queueDMOpsActionType,
reportUnshimmingOperationCompletedActionType,
@@ -25,70 +28,8 @@
if (action.type === queueDMOpsActionType) {
const { condition, operation, timestamp } = action.payload;
- if (condition.type === queuedDMOperationConditionType.THREAD) {
- return {
- store: {
- ...store,
- threadQueue: {
- ...store.threadQueue,
- [condition.threadID]: [
- ...(store.threadQueue[condition.threadID] ?? []),
- { operation, timestamp },
- ],
- },
- },
- operations: [],
- };
- }
-
- if (condition.type === queuedDMOperationConditionType.ENTRY) {
- return {
- store: {
- ...store,
- entryQueue: {
- ...store.entryQueue,
- [condition.entryID]: [
- ...(store.entryQueue[condition.entryID] ?? []),
- { operation, timestamp },
- ],
- },
- },
- operations: [],
- };
- }
-
- if (condition.type === queuedDMOperationConditionType.MESSAGE) {
- return {
- store: {
- ...store,
- messageQueue: {
- ...store.messageQueue,
- [condition.messageID]: [
- ...(store.messageQueue[condition.messageID] ?? []),
- { operation, timestamp },
- ],
- },
- },
- operations: [],
- };
- }
-
return {
- store: {
- ...store,
- membershipQueue: {
- ...store.membershipQueue,
- [condition.threadID]: {
- ...(store.membershipQueue[condition.threadID] ?? {}),
- [condition.userID]: [
- ...(store.membershipQueue[condition.threadID]?.[
- condition.userID
- ] ?? []),
- { operation, timestamp },
- ],
- },
- },
- },
+ store: addQueuedDMOpsToStore(store, condition, operation, timestamp),
operations: [],
};
} else if (action.type === pruneDMOpsQueueActionType) {
@@ -117,67 +58,8 @@
} else if (action.type === clearQueuedDMOpsActionType) {
const condition = action.payload;
- if (condition.type === queuedDMOperationConditionType.THREAD) {
- const { [condition.threadID]: removed, ...threadQueue } =
- store.threadQueue;
- return {
- store: {
- ...store,
- threadQueue,
- },
- operations: [],
- };
- }
-
- if (condition.type === queuedDMOperationConditionType.ENTRY) {
- const { [condition.entryID]: removed, ...entryQueue } = store.entryQueue;
- return {
- store: {
- ...store,
- entryQueue,
- },
- operations: [],
- };
- }
-
- if (condition.type === queuedDMOperationConditionType.MESSAGE) {
- const { [condition.messageID]: removed, ...messageQueue } =
- store.messageQueue;
- return {
- store: {
- ...store,
- messageQueue,
- },
- operations: [],
- };
- }
-
- const threadQueue = store.membershipQueue[condition.threadID];
- if (!threadQueue) {
- return { store, operations: [] };
- }
-
- const { [condition.userID]: removed, ...queue } = threadQueue;
- if (Object.keys(queue).length === 0) {
- const { [condition.threadID]: removedThread, ...membershipQueue } =
- store.membershipQueue;
- return {
- store: {
- ...store,
- membershipQueue,
- },
- operations: [],
- };
- }
-
return {
- store: {
- ...store,
- membershipQueue: {
- ...store.membershipQueue,
- [condition.threadID]: queue,
- },
- },
+ store: removeQueuedDMOpsToStore(store, condition),
operations: [],
};
} else if (action.type === saveUnsupportedOperationActionType) {

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 9:07 PM (19 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5840863
Default Alt Text
D15154.1765055237.diff (7 KB)

Event Timeline