Page MenuHomePhorge

D14454.1767411542.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D14454.1767411542.diff

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
@@ -12,6 +12,7 @@
pruneDMOpsQueueActionType,
type QueuedDMOperations,
queueDMOpsActionType,
+ saveUnsupportedOperationActionType,
} from '../types/dm-ops.js';
import type { BaseAction } from '../types/redux-types.js';
@@ -173,6 +174,20 @@
},
operations: [],
};
+ } else if (action.type === saveUnsupportedOperationActionType) {
+ return {
+ store,
+ operations: [
+ {
+ type: 'replace_dm_operation',
+ payload: {
+ id: action.payload.id,
+ type: action.payload.operation.type,
+ operation: action.payload.operation,
+ },
+ },
+ ],
+ };
}
return { store, operations: [] };
}
diff --git a/lib/shared/dm-ops/process-dm-ops.js b/lib/shared/dm-ops/process-dm-ops.js
--- a/lib/shared/dm-ops/process-dm-ops.js
+++ b/lib/shared/dm-ops/process-dm-ops.js
@@ -2,6 +2,7 @@
import invariant from 'invariant';
import * as React from 'react';
+import uuid from 'uuid';
import type { ProcessDMOperationUtilities } from './dm-op-spec.js';
import { dmOpSpecs } from './dm-op-specs.js';
@@ -19,11 +20,6 @@
import { useGetLatestMessageEdit } from '../../hooks/latest-message-edit.js';
import { useDispatchWithMetadata } from '../../hooks/ops-hooks.js';
import { mergeUpdatesWithMessageInfos } from '../../reducers/message-reducer.js';
-import {
- type MessageNotifyType,
- messageNotifyTypes,
-} from '../../shared/messages/message-spec.js';
-import { messageSpecs } from '../../shared/messages/message-specs.js';
import {
usePeerToPeerCommunication,
type ProcessOutboundP2PMessagesResult,
@@ -34,6 +30,7 @@
queueDMOpsActionType,
dmOperationValidator,
type ProcessDMOpsPayload,
+ saveUnsupportedOperationActionType,
} from '../../types/dm-ops.js';
import type { RawMessageInfo } from '../../types/message-types.js';
import type { DispatchMetadata } from '../../types/redux-types.js';
@@ -41,6 +38,11 @@
import type { ClientUpdateInfo } from '../../types/update-types.js';
import { extractUserIDsFromPayload } from '../../utils/conversion-utils.js';
import { useSelector, useDispatch } from '../../utils/redux-utils.js';
+import {
+ type MessageNotifyType,
+ messageNotifyTypes,
+} from '../messages/message-spec.js';
+import { messageSpecs } from '../messages/message-specs.js';
function useProcessDMOperation(): (
dmOperationSpecification: DMOperationSpecification,
@@ -102,6 +104,25 @@
dispatchMetadata = dmOperationSpecification.metadata;
}
+ if (!dmOpSpecs[dmOp.type]) {
+ dispatchWithMetadata(
+ {
+ type: saveUnsupportedOperationActionType,
+ payload: {
+ operation: dmOp,
+ id: uuid.v4(),
+ },
+ },
+ dispatchMetadata,
+ );
+ addLog(
+ "This operation type isn't supported by this code version",
+ JSON.stringify(dmOp),
+ );
+ await confirmPeerToPeerMessage(dispatchMetadata);
+ return;
+ }
+
let composableMessageID: ?string = null;
if (
dmOperationSpecification.type ===
diff --git a/lib/types/dm-ops.js b/lib/types/dm-ops.js
--- a/lib/types/dm-ops.js
+++ b/lib/types/dm-ops.js
@@ -585,6 +585,12 @@
+userID: string,
};
+export const saveUnsupportedOperationActionType = 'SAVE_UNSUPPORTED_OPERATION';
+export type SaveUnsupportedOperationPayload = {
+ +operation: DMOperation,
+ +id: string,
+};
+
export type OperationsQueue = $ReadOnlyArray<{
+operation: DMOperation,
+timestamp: number,
diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js
--- a/lib/types/redux-types.js
+++ b/lib/types/redux-types.js
@@ -53,6 +53,7 @@
ClearQueuedMessageDMOpsPayload,
ClearQueuedEntryDMOpsPayload,
ClearQueuedMembershipDMOpsPayload,
+ SaveUnsupportedOperationPayload,
} from './dm-ops.js';
import type { DraftStore } from './draft-types.js';
import type { EnabledApps, SupportedApps } from './enabled-apps.js';
@@ -1681,6 +1682,10 @@
+type: 'RESTORE_USER_SUCCESS',
+payload: RestoreUserResult,
+loadingInfo: LoadingInfo,
+ }
+ | {
+ +type: 'SAVE_UNSUPPORTED_OPERATION',
+ +payload: SaveUnsupportedOperationPayload,
},
}>;

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 3, 3:39 AM (14 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5885617
Default Alt Text
D14454.1767411542.diff (4 KB)

Event Timeline