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 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 = const isOpenGroupMessage =
sentMessage.group && sentMessage.group &&
sentMessage.group instanceof libsession.Types.OpenGroup; sentMessage.group instanceof libsession.Types.OpenGroup;
@ -1230,6 +1235,7 @@
const shouldTriggerSyncMessage = const shouldTriggerSyncMessage =
!isOurDevice && !isOurDevice &&
!isOpenGroupMessage && !isOpenGroupMessage &&
!isMediumGroupMessage &&
!this.get('synced') && !this.get('synced') &&
!this.get('sentSync'); !this.get('sentSync');

@ -2,6 +2,7 @@ import { PubKey } from '../types';
import { onGroupReceived } from '../../receiver/receiver'; import { onGroupReceived } from '../../receiver/receiver';
import { StringUtils } from '../utils'; import { StringUtils } from '../utils';
import * as Data from '../../../js/modules/data'; import * as Data from '../../../js/modules/data';
import _ from 'lodash';
import { import {
createSenderKeyForGroup, createSenderKeyForGroup,
@ -10,6 +11,7 @@ import {
saveSenderKeysInner, saveSenderKeysInner,
} from './senderKeys'; } from './senderKeys';
import { getChainKey } from './ratchet'; import { getChainKey } from './ratchet';
import { MultiDeviceProtocol } from '../protocols';
export { export {
createSenderKeyForGroup, createSenderKeyForGroup,
@ -22,9 +24,16 @@ async function createSenderKeysForMembers(
groupId: string, groupId: string,
members: Array<string> members: Array<string>
): Promise<Array<RatchetState>> { ): Promise<Array<RatchetState>> {
// TODO: generate for secondary devices too const allDevices = await Promise.all(
return Promise.all(
members.map(async pk => { 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)); return createSenderKeyForGroup(groupId, PubKey.cast(pk));
}) })
); );

Loading…
Cancel
Save