Fix incorrectly syncing medium group chat messages

pull/1238/head
Maxim Shishmarev 5 years ago
parent 3faa4f71f3
commit 1d1a62e683

@ -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');

@ -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<string>
): Promise<Array<RatchetState>> {
// 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));
})
);

Loading…
Cancel
Save