From 4d7a0e7a04fc8135211a317ef0d20bb39adc5e36 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 15 Jul 2024 15:53:51 +1000 Subject: [PATCH] fix: add name property to GroupPromoteMessage --- protos/SignalService.proto | 1 + ts/receiver/groupv2/handleGroupV2Message.ts | 4 ++-- ts/session/apis/snode_api/signature/groupSignature.ts | 3 +++ .../group_v2/to_user/GroupUpdatePromoteMessage.ts | 7 +++++++ ts/session/utils/job_runners/jobs/GroupPromoteJob.ts | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/protos/SignalService.proto b/protos/SignalService.proto index 010513269..5242d158e 100644 --- a/protos/SignalService.proto +++ b/protos/SignalService.proto @@ -115,6 +115,7 @@ message GroupUpdateMemberChangeMessage { message GroupUpdatePromoteMessage { required bytes groupIdentitySeed = 1; + required string name = 2; } message GroupUpdateMemberLeftMessage { diff --git a/ts/receiver/groupv2/handleGroupV2Message.ts b/ts/receiver/groupv2/handleGroupV2Message.ts index 32b44ef70..38d2c5a7d 100644 --- a/ts/receiver/groupv2/handleGroupV2Message.ts +++ b/ts/receiver/groupv2/handleGroupV2Message.ts @@ -73,7 +73,7 @@ async function sendInviteResponseToGroup({ groupPk }: { groupPk: GroupPubkeyType }); } -async function handleGroupInviteMessage({ +async function handleGroupUpdateInviteMessage({ inviteMessage, author, signatureTimestamp, @@ -555,7 +555,7 @@ async function handle1o1GroupUpdateMessage( throw new PreConditionFailed('received group invite/promote with invalid author'); } if (details.updateMessage.inviteMessage) { - await handleGroupInviteMessage({ + await handleGroupUpdateInviteMessage({ inviteMessage: details.updateMessage .inviteMessage as SignalService.GroupUpdateInviteMessage, ...details, diff --git a/ts/session/apis/snode_api/signature/groupSignature.ts b/ts/session/apis/snode_api/signature/groupSignature.ts index efee04473..3264dafd5 100644 --- a/ts/session/apis/snode_api/signature/groupSignature.ts +++ b/ts/session/apis/snode_api/signature/groupSignature.ts @@ -61,10 +61,12 @@ async function getGroupPromoteMessage({ member, secretKey, groupPk, + name, }: { member: PubkeyType; secretKey: Uint8ArrayLen64; // len 64 groupPk: GroupPubkeyType; + name: string; }) { const createAtNetworkTimestamp = GetNetworkTime.now(); @@ -78,6 +80,7 @@ async function getGroupPromoteMessage({ groupIdentitySeed: secretKey.slice(0, 32), // the seed is the first 32 bytes of the secretkey expirationType: 'unknown', // a promote message is not expiring expireTimer: 0, + name, }); return msg; } diff --git a/ts/session/messages/outgoing/controlMessage/group_v2/to_user/GroupUpdatePromoteMessage.ts b/ts/session/messages/outgoing/controlMessage/group_v2/to_user/GroupUpdatePromoteMessage.ts index 84782223d..5c5c20283 100644 --- a/ts/session/messages/outgoing/controlMessage/group_v2/to_user/GroupUpdatePromoteMessage.ts +++ b/ts/session/messages/outgoing/controlMessage/group_v2/to_user/GroupUpdatePromoteMessage.ts @@ -5,6 +5,7 @@ import { GroupUpdateMessage, GroupUpdateMessageParams } from '../GroupUpdateMess interface Params extends GroupUpdateMessageParams { groupPk: GroupPubkeyType; groupIdentitySeed: Uint8Array; + name: string; } /** @@ -12,19 +13,25 @@ interface Params extends GroupUpdateMessageParams { */ export class GroupUpdatePromoteMessage extends GroupUpdateMessage { public readonly groupIdentitySeed: Params['groupIdentitySeed']; + public readonly name: Params['name']; constructor(params: Params) { super(params); this.groupIdentitySeed = params.groupIdentitySeed; + this.name = params.name; if (!this.groupIdentitySeed || this.groupIdentitySeed.length !== 32) { throw new Error('groupIdentitySeed must be set'); } + if (!this.name) { + throw new Error('name must be set and not empty'); + } } public dataProto(): SignalService.DataMessage { const promoteMessage = new SignalService.GroupUpdatePromoteMessage({ groupIdentitySeed: this.groupIdentitySeed, + name: this.name, }); return new SignalService.DataMessage({ diff --git a/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts b/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts index 0fb9fde3e..9ae1675d2 100644 --- a/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts +++ b/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts @@ -102,6 +102,7 @@ class GroupPromoteJob extends PersistedJob { member, secretKey: group.secretKey, groupPk, + name: group.name, }); const storedAt = await getMessageQueue().sendTo1o1NonDurably({