]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/api/Group.java
Extract AccountHelper
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / Group.java
index 88be3539b8971a3458f4289500c106dd56b4404c..a8dfdff144af5b09baf788b8dc8c59d2bbd5568e 100644 (file)
@@ -3,9 +3,13 @@ package org.asamk.signal.manager.api;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
 import org.asamk.signal.manager.groups.GroupPermission;
+import org.asamk.signal.manager.helper.RecipientAddressResolver;
+import org.asamk.signal.manager.storage.groups.GroupInfo;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
+import org.asamk.signal.manager.storage.recipients.RecipientId;
 
 import java.util.Set;
+import java.util.stream.Collectors;
 
 public record Group(
         GroupId groupId,
@@ -23,4 +27,37 @@ public record Group(
         GroupPermission permissionSendMessage,
         boolean isMember,
         boolean isAdmin
-) {}
+) {
+
+    public static Group from(
+            final GroupInfo groupInfo, final RecipientAddressResolver recipientStore, final RecipientId selfRecipientId
+    ) {
+        return new Group(groupInfo.getGroupId(),
+                groupInfo.getTitle(),
+                groupInfo.getDescription(),
+                groupInfo.getGroupInviteLink(),
+                groupInfo.getMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getPendingMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getRequestingMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getAdminMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.isBlocked(),
+                groupInfo.getMessageExpirationTimer(),
+                groupInfo.getPermissionAddMember(),
+                groupInfo.getPermissionEditDetails(),
+                groupInfo.getPermissionSendMessage(),
+                groupInfo.isMember(selfRecipientId),
+                groupInfo.isAdmin(selfRecipientId));
+    }
+}