diff --git a/js/background.js b/js/background.js index 1b6de3a46..9b9cf706b 100644 --- a/js/background.js +++ b/js/background.js @@ -1621,22 +1621,16 @@ }); if (Whisper.Import.isComplete()) { - // FIXME Audric; Is that needed for us? - // const { - // wrap, - // sendOptions, - // } = ConversationController.prepareForSend( - // textsecure.storage.user.getNumber(), - // { syncMessage: true } - // ); - // wrap( - // textsecure.messaging.sendRequestConfigurationSyncMessage(sendOptions) - // ).catch(error => { - // window.log.error( - // 'Import complete, but failed to send sync message', - // error && error.stack ? error.stack : error - // ); - // }); + const { CONFIGURATION } = textsecure.protobuf.SyncMessage.Request.Type; + const { RequestSyncMessage } = window.libsession.Messages.Outgoing; + + const requestConfigurationSyncMessage = new RequestSyncMessage({ + timestamp: Date.now(), + reqestType: CONFIGURATION, + }); + await libsession + .getMessageQueue() + .sendSyncMessage(requestConfigurationSyncMessage); } } diff --git a/js/models/conversations.js b/js/models/conversations.js index 8b2362ff5..46b1e1d85 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -1375,15 +1375,22 @@ } if (conversationType === Message.GROUP) { - // let dest = destination; - // let numbers = groupNumbers; if (this.isMediumGroup()) { - // FIXME audric to implement back - - // dest = this.id; - // numbers = [destination]; - // options.isMediumGroup = true; - throw new Error('To implement back'); + const mediumGroupChatMessage = new libsession.Messages.Outgoing.MediumGroupChatMessage( + { + chatMessage, + groupId: destination, + } + ); + const members = this.get('members'); + await Promise.all( + members.map(async m => { + const memberPubKey = new libsession.Types.PubKey(m); + await libsession + .getMessageQueue() + .sendUsingMultiDevice(memberPubKey, mediumGroupChatMessage); + }) + ); } else { const closedGroupChatMessage = new libsession.Messages.Outgoing.ClosedGroupChatMessage( { diff --git a/libtextsecure/sendmessage.js b/libtextsecure/sendmessage.js index 3c37e6d45..f70cb1aa9 100644 --- a/libtextsecure/sendmessage.js +++ b/libtextsecure/sendmessage.js @@ -1,4 +1,4 @@ -/* global textsecure, WebAPI, libsignal, window, OutgoingMessage, libloki, _, libsession */ +/* global textsecure, WebAPI, libsignal, window, libloki, _, libsession */ /* eslint-disable more/no-then, no-bitwise */ @@ -351,7 +351,6 @@ MessageSender.prototype = { }); }, - uploadAvatar(attachment) { // isRaw is true since the data is already encrypted // and doesn't need to be encrypted again diff --git a/ts/session/messages/outgoing/content/data/mediumgroup/MediumGroupChatMessage.ts b/ts/session/messages/outgoing/content/data/mediumgroup/MediumGroupChatMessage.ts new file mode 100644 index 000000000..59d557ab7 --- /dev/null +++ b/ts/session/messages/outgoing/content/data/mediumgroup/MediumGroupChatMessage.ts @@ -0,0 +1,30 @@ +import { SignalService } from '../../../../../../protobuf'; +import { ChatMessage } from '../ChatMessage'; +import { PubKey } from '../../../../../types'; +import { MediumGroupMessage } from './MediumGroupMessage'; + +interface MediumGroupChatMessageParams { + identifier?: string; + groupId: string | PubKey; + chatMessage: ChatMessage; +} + +export class MediumGroupChatMessage extends MediumGroupMessage { + private readonly chatMessage: ChatMessage; + + constructor(params: MediumGroupChatMessageParams) { + super({ + timestamp: params.chatMessage.timestamp, + identifier: params.identifier ?? params.chatMessage.identifier, + groupId: params.groupId, + }); + this.chatMessage = params.chatMessage; + } + + protected dataProto(): SignalService.DataMessage { + const messageProto = this.chatMessage.dataProto(); + messageProto.mediumGroupUpdate = super.dataProto().mediumGroupUpdate; + + return messageProto; + } +} diff --git a/ts/session/messages/outgoing/content/data/mediumgroup/index.ts b/ts/session/messages/outgoing/content/data/mediumgroup/index.ts index f6b317532..25f87eb5f 100644 --- a/ts/session/messages/outgoing/content/data/mediumgroup/index.ts +++ b/ts/session/messages/outgoing/content/data/mediumgroup/index.ts @@ -2,3 +2,4 @@ export * from './MediumGroupMessage'; export * from './MediumGroupRequestKeysMessage'; export * from './MediumGroupResponseKeysMessage'; export * from './MediumGroupCreateMessage'; +export * from './MediumGroupChatMessage';