Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F2841265
D13483.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
16 KB
Referenced Files
None
Subscribers
None
D13483.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D13483: [lib] Validate DM operations
Attached
Detach File
Event Timeline
Log In to Comment