X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/c10910e4660e96c24dce35455c31ec8056d9088c..98dee97cc69b49c0c3b75bb8691ae7ccc266e4d2:/src/main/java/org/asamk/signal/manager/Manager.java diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 90910085..000455ac 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -1534,8 +1534,18 @@ public class Manager implements Closeable { if (groupInfoV2.getGroup() == null || groupInfoV2.getGroup().getRevision() < groupContext.getRevision()) { - // TODO check if revision is only 1 behind and a signedGroupChange is available - groupInfoV2.setGroup(getDecryptedGroup(groupSecretParams)); + DecryptedGroup group = null; + if (groupContext.hasSignedGroupChange() + && groupInfoV2.getGroup() != null + && groupInfoV2.getGroup().getRevision() + 1 == groupContext.getRevision()) { + group = groupHelper.getUpdatedDecryptedGroup(groupInfoV2.getGroup(), + groupContext.getSignedGroupChange(), + groupMasterKey); + } + if (group == null) { + group = getDecryptedGroup(groupSecretParams); + } + groupInfoV2.setGroup(group); account.getGroupStore().updateGroup(groupInfoV2); } }