]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/api/Group.java
Reformat files
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / Group.java
index 88be3539b8971a3458f4289500c106dd56b4404c..4d1fdaa13c33e35e0d1070416158524db980c3b6 100644 (file)
@@ -1,11 +1,11 @@
 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.storage.recipients.RecipientAddress;
+import org.asamk.signal.manager.helper.RecipientAddressResolver;
+import org.asamk.signal.manager.storage.groups.GroupInfo;
+import org.asamk.signal.manager.storage.recipients.RecipientId;
 
 import java.util.Set;
+import java.util.stream.Collectors;
 
 public record Group(
         GroupId groupId,
@@ -16,6 +16,7 @@ public record Group(
         Set<RecipientAddress> pendingMembers,
         Set<RecipientAddress> requestingMembers,
         Set<RecipientAddress> adminMembers,
+        Set<RecipientAddress> bannedMembers,
         boolean isBlocked,
         int messageExpirationTimer,
         GroupPermission permissionAddMember,
@@ -23,4 +24,48 @@ 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)
+                        .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getPendingMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getRequestingMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getAdminMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.getBannedMembers()
+                        .stream()
+                        .map(recipientStore::resolveRecipientAddress)
+                        .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
+                        .collect(Collectors.toSet()),
+                groupInfo.isBlocked(),
+                groupInfo.getMessageExpirationTimer(),
+                groupInfo.getPermissionAddMember(),
+                groupInfo.getPermissionEditDetails(),
+                groupInfo.getPermissionSendMessage(),
+                groupInfo.isMember(selfRecipientId),
+                groupInfo.isAdmin(selfRecipientId));
+    }
+}