import { SignalService } from '../../../../../protobuf'; import { fromHexToArray } from '../../../../utils/String'; import { ClosedGroupMessage, ClosedGroupMessageParams } from './ClosedGroupMessage'; interface ClosedGroupRemovedMembersMessageParams extends ClosedGroupMessageParams { removedMembers: Array; } export class ClosedGroupRemovedMembersMessage extends ClosedGroupMessage { private readonly removedMembers: Array; constructor(params: ClosedGroupRemovedMembersMessageParams) { super({ timestamp: params.timestamp, identifier: params.identifier, groupId: params.groupId, expirationType: params.expirationType, expireTimer: params.expireTimer, }); this.removedMembers = params.removedMembers; if (!this.removedMembers?.length) { throw new Error('removedMembers cannot be empty'); } } public dataProto(): SignalService.DataMessage { const dataMessage = super.dataProto(); dataMessage.closedGroupControlMessage!.type = SignalService.DataMessage.ClosedGroupControlMessage.Type.MEMBERS_REMOVED; dataMessage.closedGroupControlMessage!.members = this.removedMembers.map(fromHexToArray); return dataMessage; } }