Page MenuHomePhabricator

D13483.diff
No OneTemporary

D13483.diff

diff --git a/lib/shared/dm-ops/add-members-spec.js b/lib/shared/dm-ops/add-members-spec.js
--- a/lib/shared/dm-ops/add-members-spec.js
+++ b/lib/shared/dm-ops/add-members-spec.js
@@ -8,7 +8,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMAddMembersOperation } from '../../types/dm-ops.js';
+import {
+ type DMAddMembersOperation,
+ dmAddMembersOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { RawMessageInfo } from '../../types/message-types.js';
import type { AddMembersMessageData } from '../../types/messages/add-members.js';
@@ -166,6 +169,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmAddMembersOperationValidator,
});
export {
diff --git a/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js b/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js
--- a/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js
+++ b/lib/shared/dm-ops/add-viewer-to-thread-members-spec.js
@@ -7,7 +7,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMAddViewerToThreadMembersOperation } from '../../types/dm-ops.js';
+import {
+ type DMAddViewerToThreadMembersOperation,
+ dmAddViewerToThreadMembersValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { RawMessageInfo } from '../../types/message-types.js';
import { messageTruncationStatus } from '../../types/message-types.js';
@@ -157,6 +160,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmAddViewerToThreadMembersValidator,
});
export {
diff --git a/lib/shared/dm-ops/change-thread-read-status-spec.js b/lib/shared/dm-ops/change-thread-read-status-spec.js
--- a/lib/shared/dm-ops/change-thread-read-status-spec.js
+++ b/lib/shared/dm-ops/change-thread-read-status-spec.js
@@ -6,8 +6,11 @@
import type {
DMOperationSpec,
ProcessDMOperationUtilities,
-} from './dm-op-spec';
-import type { DMChangeThreadReadStatusOperation } from '../../types/dm-ops';
+} from './dm-op-spec.js';
+import {
+ type DMChangeThreadReadStatusOperation,
+ dmChangeThreadReadStatusOperationValidator,
+} from '../../types/dm-ops.js';
import { updateTypes } from '../../types/update-types-enum.js';
const changeThreadReadStatusSpec: DMOperationSpec<DMChangeThreadReadStatusOperation> =
@@ -72,6 +75,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: true,
+ operationValidator: dmChangeThreadReadStatusOperationValidator,
});
export { changeThreadReadStatusSpec };
diff --git a/lib/shared/dm-ops/change-thread-settings-spec.js b/lib/shared/dm-ops/change-thread-settings-spec.js
--- a/lib/shared/dm-ops/change-thread-settings-spec.js
+++ b/lib/shared/dm-ops/change-thread-settings-spec.js
@@ -8,10 +8,11 @@
ProcessDMOperationUtilities,
ProcessingPossibilityCheckResult,
} from './dm-op-spec.js';
-import type {
- DMBlobOperation,
- DMChangeThreadSettingsOperation,
- DMThreadSettingsChanges,
+import {
+ type DMBlobOperation,
+ type DMChangeThreadSettingsOperation,
+ type DMThreadSettingsChanges,
+ dmChangeThreadSettingsOperationValidator,
} from '../../types/dm-ops.js';
import type { RawMessageInfo } from '../../types/message-types';
import { messageTypes } from '../../types/message-types-enum.js';
@@ -246,6 +247,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: true,
+ operationValidator: dmChangeThreadSettingsOperationValidator,
});
export { changeThreadSettingsSpec, createChangeSettingsMessageDatasAndUpdate };
diff --git a/lib/shared/dm-ops/change-thread-subscription.js b/lib/shared/dm-ops/change-thread-subscription.js
--- a/lib/shared/dm-ops/change-thread-subscription.js
+++ b/lib/shared/dm-ops/change-thread-subscription.js
@@ -7,7 +7,10 @@
ProcessDMOperationUtilities,
DMOperationSpec,
} from './dm-op-spec.js';
-import type { DMChangeThreadSubscriptionOperation } from '../../types/dm-ops.js';
+import {
+ type DMChangeThreadSubscriptionOperation,
+ dmChangeThreadSubscriptionOperationValidator,
+} from '../../types/dm-ops.js';
import { updateTypes } from '../../types/update-types-enum.js';
import type { ClientUpdateInfo } from '../../types/update-types.js';
@@ -108,6 +111,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: true,
+ operationValidator: dmChangeThreadSubscriptionOperationValidator,
});
export { changeThreadSubscriptionSpec };
diff --git a/lib/shared/dm-ops/create-entry-spec.js b/lib/shared/dm-ops/create-entry-spec.js
--- a/lib/shared/dm-ops/create-entry-spec.js
+++ b/lib/shared/dm-ops/create-entry-spec.js
@@ -6,7 +6,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMCreateEntryOperation } from '../../types/dm-ops.js';
+import {
+ type DMCreateEntryOperation,
+ dmCreateEntryOperationValidator,
+} from '../../types/dm-ops.js';
import type { ThickRawEntryInfo } from '../../types/entry-types.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { updateTypes } from '../../types/update-types-enum.js';
@@ -103,6 +106,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmCreateEntryOperationValidator,
});
export { createEntrySpec };
diff --git a/lib/shared/dm-ops/create-sidebar-spec.js b/lib/shared/dm-ops/create-sidebar-spec.js
--- a/lib/shared/dm-ops/create-sidebar-spec.js
+++ b/lib/shared/dm-ops/create-sidebar-spec.js
@@ -7,7 +7,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMCreateSidebarOperation } from '../../types/dm-ops.js';
+import {
+ type DMCreateSidebarOperation,
+ dmCreateSidebarOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import {
type RawMessageInfo,
@@ -251,6 +254,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: true,
+ operationValidator: dmCreateSidebarOperationValidator,
});
export { createSidebarSpec };
diff --git a/lib/shared/dm-ops/create-thread-spec.js b/lib/shared/dm-ops/create-thread-spec.js
--- a/lib/shared/dm-ops/create-thread-spec.js
+++ b/lib/shared/dm-ops/create-thread-spec.js
@@ -14,9 +14,10 @@
getThickThreadRolePermissionsBlob,
makePermissionsForChildrenBlob,
} from '../../permissions/thread-permissions.js';
-import type {
- CreateThickRawThreadInfoInput,
- DMCreateThreadOperation,
+import {
+ type CreateThickRawThreadInfoInput,
+ type DMCreateThreadOperation,
+ dmCreateThreadOperationValidator,
} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { messageTruncationStatus } from '../../types/message-types.js';
@@ -309,6 +310,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: true,
+ operationValidator: dmCreateThreadOperationValidator,
});
export {
diff --git a/lib/shared/dm-ops/delete-entry-spec.js b/lib/shared/dm-ops/delete-entry-spec.js
--- a/lib/shared/dm-ops/delete-entry-spec.js
+++ b/lib/shared/dm-ops/delete-entry-spec.js
@@ -7,7 +7,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMDeleteEntryOperation } from '../../types/dm-ops.js';
+import {
+ type DMDeleteEntryOperation,
+ dmDeleteEntryOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { updateTypes } from '../../types/update-types-enum.js';
import type { EntryUpdateInfo } from '../../types/update-types.js';
@@ -116,6 +119,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmDeleteEntryOperationValidator,
});
export { deleteEntrySpec };
diff --git a/lib/shared/dm-ops/dm-op-spec.js b/lib/shared/dm-ops/dm-op-spec.js
--- a/lib/shared/dm-ops/dm-op-spec.js
+++ b/lib/shared/dm-ops/dm-op-spec.js
@@ -1,5 +1,7 @@
// @flow
+import type { TInterface } from 'tcomb';
+
import type { DMOperation, DMOperationResult } from '../../types/dm-ops.js';
import type { RawEntryInfos } from '../../types/entry-types.js';
import type { UserIdentitiesResponse } from '../../types/identity-service-types.js';
@@ -44,4 +46,5 @@
utilities: ProcessDMOperationUtilities,
) => Promise<ProcessingPossibilityCheckResult>,
+supportsAutoRetry: boolean,
+ +operationValidator: TInterface<DMOp>,
};
diff --git a/lib/shared/dm-ops/edit-entry-spec.js b/lib/shared/dm-ops/edit-entry-spec.js
--- a/lib/shared/dm-ops/edit-entry-spec.js
+++ b/lib/shared/dm-ops/edit-entry-spec.js
@@ -7,7 +7,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMEditEntryOperation } from '../../types/dm-ops.js';
+import {
+ type DMEditEntryOperation,
+ dmEditEntryOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { updateTypes } from '../../types/update-types-enum.js';
import type { EntryUpdateInfo } from '../../types/update-types.js';
@@ -117,6 +120,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmEditEntryOperationValidator,
});
export { editEntrySpec };
diff --git a/lib/shared/dm-ops/join-thread-spec.js b/lib/shared/dm-ops/join-thread-spec.js
--- a/lib/shared/dm-ops/join-thread-spec.js
+++ b/lib/shared/dm-ops/join-thread-spec.js
@@ -11,7 +11,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMJoinThreadOperation } from '../../types/dm-ops.js';
+import {
+ type DMJoinThreadOperation,
+ dmJoinThreadOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import {
messageTruncationStatus,
@@ -206,6 +209,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmJoinThreadOperationValidator,
});
export { joinThreadSpec };
diff --git a/lib/shared/dm-ops/leave-thread-spec.js b/lib/shared/dm-ops/leave-thread-spec.js
--- a/lib/shared/dm-ops/leave-thread-spec.js
+++ b/lib/shared/dm-ops/leave-thread-spec.js
@@ -8,7 +8,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMLeaveThreadOperation } from '../../types/dm-ops.js';
+import {
+ type DMLeaveThreadOperation,
+ dmLeaveThreadOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { ThickRawThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js';
import { minimallyEncodeThreadCurrentUserInfo } from '../../types/minimally-encoded-thread-permissions-types.js';
@@ -192,6 +195,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmLeaveThreadOperationValidator,
});
export { leaveThreadSpec };
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
@@ -147,6 +147,11 @@
return;
}
+ if (!dmOpSpecs[dmOp.type].operationValidator.is(dmOp)) {
+ console.log(`Ignoring ${dmOp.type} operation because it is invalid`);
+ return;
+ }
+
const [messageIDConflictCheckResult, processingCheckResult] =
await Promise.all([
checkMessageIDConflict(dmOp, utilities),
diff --git a/lib/shared/dm-ops/remove-members-spec.js b/lib/shared/dm-ops/remove-members-spec.js
--- a/lib/shared/dm-ops/remove-members-spec.js
+++ b/lib/shared/dm-ops/remove-members-spec.js
@@ -7,7 +7,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMRemoveMembersOperation } from '../../types/dm-ops.js';
+import {
+ type DMRemoveMembersOperation,
+ dmRemoveMembersOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { threadTypes } from '../../types/thread-types-enum.js';
import { updateTypes } from '../../types/update-types-enum.js';
@@ -129,6 +132,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmRemoveMembersOperationValidator,
});
export { removeMembersSpec };
diff --git a/lib/shared/dm-ops/send-edit-message-spec.js b/lib/shared/dm-ops/send-edit-message-spec.js
--- a/lib/shared/dm-ops/send-edit-message-spec.js
+++ b/lib/shared/dm-ops/send-edit-message-spec.js
@@ -4,7 +4,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMSendEditMessageOperation } from '../../types/dm-ops.js';
+import {
+ type DMSendEditMessageOperation,
+ dmSendEditMessageOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { rawMessageInfoFromMessageData } from '../message-utils.js';
@@ -68,6 +71,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmSendEditMessageOperationValidator,
});
export { sendEditMessageSpec };
diff --git a/lib/shared/dm-ops/send-multimedia-message-spec.js b/lib/shared/dm-ops/send-multimedia-message-spec.js
--- a/lib/shared/dm-ops/send-multimedia-message-spec.js
+++ b/lib/shared/dm-ops/send-multimedia-message-spec.js
@@ -8,9 +8,10 @@
encryptedMediaBlobURI,
encryptedVideoThumbnailBlobURI,
} from '../../media/media-utils.js';
-import type {
- DMSendMultimediaMessageOperation,
- DMBlobOperation,
+import {
+ type DMSendMultimediaMessageOperation,
+ type DMBlobOperation,
+ dmSendMultimediaMessageOperationValidator,
} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { ClientUpdateInfo } from '../../types/update-types.js';
@@ -101,6 +102,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: false,
+ operationValidator: dmSendMultimediaMessageOperationValidator,
});
export { sendMultimediaMessageSpec };
diff --git a/lib/shared/dm-ops/send-reaction-message-spec.js b/lib/shared/dm-ops/send-reaction-message-spec.js
--- a/lib/shared/dm-ops/send-reaction-message-spec.js
+++ b/lib/shared/dm-ops/send-reaction-message-spec.js
@@ -4,7 +4,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMSendReactionMessageOperation } from '../../types/dm-ops.js';
+import {
+ type DMSendReactionMessageOperation,
+ dmSendReactionMessageOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { rawMessageInfoFromMessageData } from '../message-utils.js';
@@ -76,6 +79,7 @@
};
},
supportsAutoRetry: true,
+ operationValidator: dmSendReactionMessageOperationValidator,
});
export { sendReactionMessageSpec };
diff --git a/lib/shared/dm-ops/send-text-message-spec.js b/lib/shared/dm-ops/send-text-message-spec.js
--- a/lib/shared/dm-ops/send-text-message-spec.js
+++ b/lib/shared/dm-ops/send-text-message-spec.js
@@ -4,7 +4,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMSendTextMessageOperation } from '../../types/dm-ops.js';
+import {
+ type DMSendTextMessageOperation,
+ dmSendTextMessageOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import type { ClientUpdateInfo } from '../../types/update-types.js';
import { rawMessageInfoFromMessageData } from '../message-utils.js';
@@ -62,6 +65,7 @@
return { isProcessingPossible: true };
},
supportsAutoRetry: false,
+ operationValidator: dmSendTextMessageOperationValidator,
});
export { sendTextMessageSpec };
diff --git a/lib/shared/dm-ops/update-relationship-spec.js b/lib/shared/dm-ops/update-relationship-spec.js
--- a/lib/shared/dm-ops/update-relationship-spec.js
+++ b/lib/shared/dm-ops/update-relationship-spec.js
@@ -4,7 +4,10 @@
DMOperationSpec,
ProcessDMOperationUtilities,
} from './dm-op-spec.js';
-import type { DMUpdateRelationshipOperation } from '../../types/dm-ops.js';
+import {
+ type DMUpdateRelationshipOperation,
+ dmUpdateRelationshipOperationValidator,
+} from '../../types/dm-ops.js';
import { messageTypes } from '../../types/message-types-enum.js';
import { rawMessageInfoFromMessageData } from '../message-utils.js';
@@ -105,6 +108,7 @@
}
},
supportsAutoRetry: true,
+ operationValidator: dmUpdateRelationshipOperationValidator,
});
export { updateRelationshipSpec };

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 30, 10:01 AM (21 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2204490
Default Alt Text
D13483.diff (16 KB)

Event Timeline