]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java
Rotate profile key after blocking a contact/group
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / GroupHelper.java
index 9d4f712ce9a040d9b74e6fd263b033348d2ddcfb..ab3e1264ca658483bbab6a8e63de093f4cf5965b 100644 (file)
@@ -254,6 +254,24 @@ public class GroupHelper {
         return result;
     }
 
+    public void updateGroupProfileKey(GroupIdV2 groupId) throws GroupNotFoundException, NotAGroupMemberException, IOException {
+        var group = getGroupForUpdating(groupId);
+
+        if (group instanceof GroupInfoV2 groupInfoV2) {
+            Pair<DecryptedGroup, GroupChange> groupChangePair;
+            try {
+                groupChangePair = context.getGroupV2Helper().updateSelfProfileKey(groupInfoV2);
+            } catch (ConflictException e) {
+                // Detected conflicting update, refreshing group and trying again
+                groupInfoV2 = (GroupInfoV2) getGroup(groupId, true);
+                groupChangePair = context.getGroupV2Helper().updateSelfProfileKey(groupInfoV2);
+            }
+            if (groupChangePair != null) {
+                sendUpdateGroupV2Message(groupInfoV2, groupChangePair.first(), groupChangePair.second());
+            }
+        }
+    }
+
     public Pair<GroupId, SendGroupMessageResults> joinGroup(
             GroupInviteLinkUrl inviteLinkUrl
     ) throws IOException, InactiveGroupLinkException {