diff --git a/ts/session/messages/outgoing/content/data/GroupInvitationMessage.ts b/ts/session/messages/outgoing/content/data/GroupInvitationMessage.ts index 92c2dc574..b22325fb6 100644 --- a/ts/session/messages/outgoing/content/data/GroupInvitationMessage.ts +++ b/ts/session/messages/outgoing/content/data/GroupInvitationMessage.ts @@ -1,13 +1,39 @@ import { DataMessage } from './DataMessage'; import { SignalService } from '../../../../../protobuf'; +interface GroupInvitationMessageParams { + timestamp: number; + identifier: string; + serverAddress: string; + channelId: number; + serverName: string; +} + export class GroupInvitationMessage extends DataMessage { + private readonly serverAddress: string; + private readonly channelId: number; + private readonly serverName: string; + + constructor(params: GroupInvitationMessageParams) { + super({ timestamp: params.timestamp, identifier: params.identifier }); + this.serverAddress = params.serverAddress; + this.channelId = params.channelId; + this.serverName = params.serverName; + } public ttl(): number { return this.getDefaultTTL(); } protected dataProto(): SignalService.DataMessage { - throw new Error('Not implemented'); + const groupInvitation = new SignalService.DataMessage.GroupInvitation({ + serverAddress: this.serverAddress, + channelId: this.channelId, + serverName: this.serverName, + }); + + return new SignalService.DataMessage({ + groupInvitation, + }); } } diff --git a/ts/session/messages/outgoing/content/data/RegularMessage.ts b/ts/session/messages/outgoing/content/data/RegularMessage.ts index b3326b657..8c782cf29 100644 --- a/ts/session/messages/outgoing/content/data/RegularMessage.ts +++ b/ts/session/messages/outgoing/content/data/RegularMessage.ts @@ -3,6 +3,7 @@ import { SignalService } from '../../../../../protobuf'; // this message type is probably to sub divise again. // should handle quote, body, attachmentsPointer, ... @see DataMessage in compiled.d.ts +// Also, find a better name export abstract class RegularMessage extends DataMessage { public ttl(): number { return this.getDefaultTTL(); diff --git a/ts/session/messages/outgoing/index.ts b/ts/session/messages/outgoing/index.ts index ba7a3a88d..2a8fe3bdf 100644 --- a/ts/session/messages/outgoing/index.ts +++ b/ts/session/messages/outgoing/index.ts @@ -42,5 +42,5 @@ export { ClosedGroupMessage, DeviceUnlinkMessage, GroupInvitationMessage, - RegularMessage + RegularMessage, }; diff --git a/ts/test/session/messages/DeviceLinkMessage_test.ts b/ts/test/session/messages/DeviceLinkMessage_test.ts index 95577f450..f2e8e88cf 100644 --- a/ts/test/session/messages/DeviceLinkMessage_test.ts +++ b/ts/test/session/messages/DeviceLinkMessage_test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import { beforeEach} from 'mocha'; -import { DeviceLinkGrantMessage, DeviceLinkRequestMessage, ContentMessage } from '../../../session/messages/outgoing'; +import { DeviceLinkGrantMessage, DeviceLinkRequestMessage } from '../../../session/messages/outgoing'; import { SignalService } from '../../../protobuf'; import { LokiProfile } from '../../../types/Message'; diff --git a/ts/test/session/messages/GroupInvitationMessage_test.ts b/ts/test/session/messages/GroupInvitationMessage_test.ts new file mode 100644 index 000000000..e26f24f82 --- /dev/null +++ b/ts/test/session/messages/GroupInvitationMessage_test.ts @@ -0,0 +1,37 @@ +import { expect } from 'chai'; +import { beforeEach} from 'mocha'; + +import { GroupInvitationMessage } from '../../../session/messages/outgoing'; +import { SignalService } from '../../../protobuf'; + +describe('GroupInvitationMessage', () => { + let message: GroupInvitationMessage; + const timestamp = Date.now(); + const identifier = '123456'; + const serverAddress = 'http://localhost'; + const channelId = 1; + const serverName = 'test'; + + beforeEach(() => { + message = new GroupInvitationMessage({ + timestamp, + identifier, + serverAddress, + channelId, + serverName, + }); + }); + + it('dataMessage.groupInvitation has serverAddress, channelId, and serverName set', () => { + const plainText = message.plainTextBuffer(); + const decoded = SignalService.Content.toObject(SignalService.Content.decode(plainText)); + + expect(decoded.dataMessage.groupInvitation).to.have.property('serverAddress', serverAddress); + expect(decoded.dataMessage.groupInvitation).to.have.property('channelId', channelId); + expect(decoded.dataMessage.groupInvitation).to.have.property('serverName', serverName); + }); + + it('ttl of 1 day', () => { + expect(message.ttl()).to.equal(24 * 60 * 60 * 1000); + }); +});