diff --git a/lib/shared/dm-ops/dm-op-specs.js b/lib/shared/dm-ops/dm-op-specs.js --- a/lib/shared/dm-ops/dm-op-specs.js +++ b/lib/shared/dm-ops/dm-op-specs.js @@ -13,7 +13,6 @@ import { editEntrySpec } from './edit-entry-spec.js'; import { joinThreadSpec } from './join-thread-spec.js'; import { leaveThreadSpec } from './leave-thread-spec.js'; -import { removeMembersSpec } from './remove-members-spec.js'; import { sendEditMessageSpec } from './send-edit-message-spec.js'; import { sendMultimediaMessageSpec } from './send-multimedia-message-spec.js'; import { sendReactionMessageSpec } from './send-reaction-message-spec.js'; @@ -34,7 +33,6 @@ [dmOperationTypes.ADD_VIEWER_TO_THREAD_MEMBERS]: addViewerToThreadMembersSpec, [dmOperationTypes.JOIN_THREAD]: joinThreadSpec, [dmOperationTypes.LEAVE_THREAD]: leaveThreadSpec, - [dmOperationTypes.REMOVE_MEMBERS]: removeMembersSpec, [dmOperationTypes.CHANGE_THREAD_SETTINGS]: changeThreadSettingsSpec, [dmOperationTypes.CHANGE_THREAD_SUBSCRIPTION]: changeThreadSubscriptionSpec, [dmOperationTypes.CHANGE_THREAD_READ_STATUS]: changeThreadReadStatusSpec, diff --git a/lib/shared/dm-ops/remove-members-spec.js b/lib/shared/dm-ops/remove-members-spec.js deleted file mode 100644 --- a/lib/shared/dm-ops/remove-members-spec.js +++ /dev/null @@ -1,134 +0,0 @@ -// @flow - -import uuid from 'uuid'; - -import type { - DMOperationSpec, - ProcessDMOperationUtilities, -} from './dm-op-spec.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'; -import type { ClientUpdateInfo } from '../../types/update-types.js'; -import { rawMessageInfoFromMessageData } from '../message-utils.js'; - -function createMessageDataWithInfoFromDMOperation( - dmOperation: DMRemoveMembersOperation, -) { - const { editorID, time, threadID, removedUserIDs, messageID } = dmOperation; - const messageData = { - type: messageTypes.REMOVE_MEMBERS, - threadID, - time, - creatorID: editorID, - removedUserIDs: [...removedUserIDs], - }; - const rawMessageInfo = rawMessageInfoFromMessageData(messageData, messageID); - return { messageData, rawMessageInfo }; -} - -const removeMembersSpec: DMOperationSpec = - Object.freeze({ - processDMOperation: async ( - dmOperation: DMRemoveMembersOperation, - utilities: ProcessDMOperationUtilities, - ) => { - const { time, threadID, removedUserIDs } = dmOperation; - const { viewerID, threadInfos } = utilities; - const threadInfo = threadInfos[threadID]; - - const messageDataWithMessageInfos = - createMessageDataWithInfoFromDMOperation(dmOperation); - const { rawMessageInfo } = messageDataWithMessageInfos; - const rawMessageInfos = [rawMessageInfo]; - - const memberTimestamps = { ...threadInfo.timestamps.members }; - const removedUserIDsSet = new Set(); - for (const userID of removedUserIDs) { - if (!memberTimestamps[userID]) { - memberTimestamps[userID] = { - isMember: time, - subscription: threadInfo.creationTime, - }; - } - - if (memberTimestamps[userID].isMember > time) { - continue; - } - - memberTimestamps[userID] = { - ...memberTimestamps[userID], - isMember: time, - }; - - removedUserIDsSet.add(userID); - } - - const viewerIsRemoved = removedUserIDsSet.has(viewerID); - const updateInfos: Array = []; - if ( - viewerIsRemoved && - (threadInfo.type !== threadTypes.THICK_SIDEBAR || - (threadInfo.parentThreadID && - !threadInfos[threadInfo.parentThreadID])) - ) { - updateInfos.push({ - type: updateTypes.DELETE_THREAD, - id: uuid.v4(), - time, - threadID, - }); - } else { - const updatedThreadInfo = { - ...threadInfo, - members: threadInfo.members.filter( - member => !removedUserIDsSet.has(member.id), - ), - timestamps: { - ...threadInfo.timestamps, - members: memberTimestamps, - }, - }; - updateInfos.push({ - type: updateTypes.UPDATE_THREAD, - id: uuid.v4(), - time, - threadInfo: updatedThreadInfo, - }); - } - - const notificationsCreationData = { - messageDatasWithMessageInfos: [messageDataWithMessageInfos], - }; - - return { - rawMessageInfos, - updateInfos, - blobOps: [], - notificationsCreationData, - }; - }, - canBeProcessed: async ( - dmOperation: DMRemoveMembersOperation, - utilities: ProcessDMOperationUtilities, - ) => { - if (utilities.threadInfos[dmOperation.threadID]) { - return { isProcessingPossible: true }; - } - return { - isProcessingPossible: false, - reason: { - type: 'missing_thread', - threadID: dmOperation.threadID, - }, - }; - }, - supportsAutoRetry: true, - operationValidator: dmRemoveMembersOperationValidator, - }); - -export { removeMembersSpec }; 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 @@ -38,7 +38,6 @@ ADD_VIEWER_TO_THREAD_MEMBERS: 'add_viewer_to_thread_members', JOIN_THREAD: 'join_thread', LEAVE_THREAD: 'leave_thread', - REMOVE_MEMBERS: 'remove_members', CHANGE_THREAD_SETTINGS: 'change_thread_settings', CHANGE_THREAD_SUBSCRIPTION: 'change_thread_subscription', CHANGE_THREAD_READ_STATUS: 'change_thread_read_status', @@ -294,24 +293,6 @@ threadID: t.String, }); -export type DMRemoveMembersOperation = { - +type: 'remove_members', - +editorID: string, - +time: number, - +messageID: string, - +threadID: string, - +removedUserIDs: $ReadOnlyArray, -}; -export const dmRemoveMembersOperationValidator: TInterface = - tShape({ - type: tString(dmOperationTypes.REMOVE_MEMBERS), - editorID: tUserID, - time: t.Number, - messageID: t.String, - threadID: t.String, - removedUserIDs: t.list(tUserID), - }); - export type DMThreadSettingsChanges = { +name?: string, +description?: string, @@ -483,7 +464,6 @@ | DMAddViewerToThreadMembersOperation | DMJoinThreadOperation | DMLeaveThreadOperation - | DMRemoveMembersOperation | DMChangeThreadSettingsOperation | DMChangeThreadSubscriptionOperation | DMChangeThreadReadStatusOperation @@ -502,7 +482,6 @@ dmAddViewerToThreadMembersValidator, dmJoinThreadOperationValidator, dmLeaveThreadOperationValidator, - dmRemoveMembersOperationValidator, dmChangeThreadSettingsOperationValidator, dmChangeThreadSubscriptionOperationValidator, dmChangeThreadReadStatusOperationValidator,