Handle group quit sync messages

Previously, we would incorrectly reject group updates originating from a
linked device instructing us to remove ourselves from the group.

// FREEBIE
This commit is contained in:
lilia 2015-12-03 18:48:04 -08:00
parent edcb28aebb
commit 2f469835d9
3 changed files with 17 additions and 5 deletions

View file

@ -37062,7 +37062,11 @@ MessageReceiver.prototype = {
case textsecure.protobuf.GroupContext.Type.QUIT:
decrypted.body = null;
decrypted.attachments = [];
return textsecure.storage.groups.removeNumber(decrypted.group.id, source);
if (source === this.number) {
return textsecure.storage.groups.deleteGroup(decrypted.group.id);
} else {
return textsecure.storage.groups.removeNumber(decrypted.group.id, source);
}
case textsecure.protobuf.GroupContext.Type.DELIVER:
decrypted.group.name = null;
decrypted.group.members = [];
@ -37073,7 +37077,7 @@ MessageReceiver.prototype = {
throw new Error("Unknown group message type");
}
}
}));
}.bind(this)));
}
for (var i in decrypted.attachments) {

View file

@ -280,7 +280,11 @@
}
}
else if (dataMessage.group.type === textsecure.protobuf.GroupContext.Type.QUIT) {
group_update = { left: source };
if (source == textsecure.storage.user.getNumber()) {
group_update = { left: "You" };
} else {
group_update = { left: source };
}
attributes.members = _.without(conversation.get('members'), source);
}

View file

@ -331,7 +331,11 @@ MessageReceiver.prototype = {
case textsecure.protobuf.GroupContext.Type.QUIT:
decrypted.body = null;
decrypted.attachments = [];
return textsecure.storage.groups.removeNumber(decrypted.group.id, source);
if (source === this.number) {
return textsecure.storage.groups.deleteGroup(decrypted.group.id);
} else {
return textsecure.storage.groups.removeNumber(decrypted.group.id, source);
}
case textsecure.protobuf.GroupContext.Type.DELIVER:
decrypted.group.name = null;
decrypted.group.members = [];
@ -342,7 +346,7 @@ MessageReceiver.prototype = {
throw new Error("Unknown group message type");
}
}
}));
}.bind(this)));
}
for (var i in decrypted.attachments) {