mirror of
https://github.com/oxen-io/session-desktop.git
synced 2023-12-14 02:12:57 +01:00
make sure the left member convo exist in rendering GroupUpdate
This commit is contained in:
parent
77f80c4bc1
commit
288d4a6a2e
|
@ -128,6 +128,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
|
|||
public getDescription() {
|
||||
if (this.isGroupUpdate()) {
|
||||
const groupUpdate = this.get('group_update');
|
||||
|
||||
const ourPrimary = window.textsecure.storage.get('primaryDevicePubKey');
|
||||
if (
|
||||
groupUpdate.left === 'You' ||
|
||||
|
@ -136,7 +137,10 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
|
|||
groupUpdate.left[0] === ourPrimary)
|
||||
) {
|
||||
return window.i18n('youLeftTheGroup');
|
||||
} else if (groupUpdate.left) {
|
||||
} else if (
|
||||
(groupUpdate.left && Array.isArray(groupUpdate.left) && groupUpdate.left.length === 1) ||
|
||||
typeof groupUpdate.left === 'string'
|
||||
) {
|
||||
return window.i18n(
|
||||
'leftTheGroup',
|
||||
ConversationController.getInstance().getContactProfileNameOrShortenedPubKey(
|
||||
|
@ -144,7 +148,6 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (groupUpdate.kicked === 'You') {
|
||||
return window.i18n('youGotKickedFromGroup');
|
||||
}
|
||||
|
@ -373,7 +376,10 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
|
|||
type: 'remove',
|
||||
isMe: true,
|
||||
});
|
||||
} else {
|
||||
} else if (
|
||||
typeof groupUpdate.left === 'string' ||
|
||||
(Array.isArray(groupUpdate.left) && groupUpdate.left.length === 1)
|
||||
) {
|
||||
changes.push({
|
||||
type: 'remove',
|
||||
contacts: _.map(
|
||||
|
|
|
@ -449,6 +449,12 @@ async function performIfValid(
|
|||
await removeFromCache(envelope);
|
||||
return;
|
||||
}
|
||||
// make sure the conversation with this user exist (even if it's just hidden)
|
||||
await ConversationController.getInstance().getOrCreateAndWait(
|
||||
sender,
|
||||
ConversationTypeEnum.PRIVATE
|
||||
);
|
||||
|
||||
if (groupUpdate.type === Type.NAME_CHANGE) {
|
||||
await handleClosedGroupNameChanged(envelope, groupUpdate, convo);
|
||||
} else if (groupUpdate.type === Type.MEMBERS_ADDED) {
|
||||
|
@ -531,6 +537,12 @@ async function handleClosedGroupMembersAdded(
|
|||
}
|
||||
|
||||
const members = [...oldMembers, ...membersNotAlreadyPresent];
|
||||
// make sure the conversation with those members (even if it's just hidden)
|
||||
await Promise.all(
|
||||
members.map(async m =>
|
||||
ConversationController.getInstance().getOrCreateAndWait(m, ConversationTypeEnum.PRIVATE)
|
||||
)
|
||||
);
|
||||
|
||||
const groupDiff: ClosedGroup.GroupDiff = {
|
||||
joiningMembers: membersNotAlreadyPresent,
|
||||
|
@ -748,6 +760,7 @@ async function handleClosedGroupMemberLeft(envelope: EnvelopePlus, convo: Conver
|
|||
const groupDiff: ClosedGroup.GroupDiff = {
|
||||
leavingMembers: [sender],
|
||||
};
|
||||
|
||||
await ClosedGroup.addUpdateMessage(convo, groupDiff, 'incoming', _.toNumber(envelope.timestamp));
|
||||
convo.updateLastMessage();
|
||||
// if a user just left and we are the admin, we remove him right away for everyone by sending a MEMBERS_REMOVED message so no need to add him as a zombie
|
||||
|
|
Loading…
Reference in a new issue