]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/Manager.java
Apply decrypted group change when receiving signed change
[signal-cli] / src / main / java / org / asamk / signal / manager / Manager.java
index 909100855784f08e1a3c1d0f17e065db6c80eeaa..000455ac169740d0ec9ad6b9099030f3dc708b92 100644 (file)
@@ -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);
                     }
                 }