diff --git a/js/models/messages.js b/js/models/messages.js index 00efaed58..c69cb26c9 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -1220,6 +1220,11 @@ sentMessage.device ); + // At this point the only way to check for medium + // group is by comparing the encryption type + const isMediumGroupMessage = + sentMessage.encryption === libsession.Types.EncryptionType.MediumGroup; + const isOpenGroupMessage = sentMessage.group && sentMessage.group instanceof libsession.Types.OpenGroup; @@ -1230,6 +1235,7 @@ const shouldTriggerSyncMessage = !isOurDevice && !isOpenGroupMessage && + !isMediumGroupMessage && !this.get('synced') && !this.get('sentSync'); diff --git a/ts/session/medium_group/index.ts b/ts/session/medium_group/index.ts index 3fa0d577b..20b0461df 100644 --- a/ts/session/medium_group/index.ts +++ b/ts/session/medium_group/index.ts @@ -2,6 +2,7 @@ import { PubKey } from '../types'; import { onGroupReceived } from '../../receiver/receiver'; import { StringUtils } from '../utils'; import * as Data from '../../../js/modules/data'; +import _ from 'lodash'; import { createSenderKeyForGroup, @@ -10,6 +11,7 @@ import { saveSenderKeysInner, } from './senderKeys'; import { getChainKey } from './ratchet'; +import { MultiDeviceProtocol } from '../protocols'; export { createSenderKeyForGroup, @@ -22,9 +24,16 @@ async function createSenderKeysForMembers( groupId: string, members: Array ): Promise> { - // TODO: generate for secondary devices too - return Promise.all( + const allDevices = await Promise.all( members.map(async pk => { + return MultiDeviceProtocol.getAllDevices(pk); + }) + ); + + const devicesFlat = _.flatten(allDevices); + + return Promise.all( + devicesFlat.map(async pk => { return createSenderKeyForGroup(groupId, PubKey.cast(pk)); }) );