]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Group.java
9b2d988a99e6b78bbe875e113935fc2a1b91d7bd
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / Group.java
1 package org.asamk.signal.manager.api;
2
3 import org.asamk.signal.manager.groups.GroupId;
4 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
5 import org.asamk.signal.manager.groups.GroupPermission;
6 import org.asamk.signal.manager.helper.RecipientAddressResolver;
7 import org.asamk.signal.manager.storage.groups.GroupInfo;
8 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
9 import org.asamk.signal.manager.storage.recipients.RecipientId;
10
11 import java.util.Set;
12 import java.util.stream.Collectors;
13
14 public record Group(
15 GroupId groupId,
16 String title,
17 String description,
18 GroupInviteLinkUrl groupInviteLinkUrl,
19 Set<RecipientAddress> members,
20 Set<RecipientAddress> pendingMembers,
21 Set<RecipientAddress> requestingMembers,
22 Set<RecipientAddress> adminMembers,
23 Set<RecipientAddress> bannedMembers,
24 boolean isBlocked,
25 int messageExpirationTimer,
26 GroupPermission permissionAddMember,
27 GroupPermission permissionEditDetails,
28 GroupPermission permissionSendMessage,
29 boolean isMember,
30 boolean isAdmin
31 ) {
32
33 public static Group from(
34 final GroupInfo groupInfo, final RecipientAddressResolver recipientStore, final RecipientId selfRecipientId
35 ) {
36 return new Group(groupInfo.getGroupId(),
37 groupInfo.getTitle(),
38 groupInfo.getDescription(),
39 groupInfo.getGroupInviteLink(),
40 groupInfo.getMembers()
41 .stream()
42 .map(recipientStore::resolveRecipientAddress)
43 .collect(Collectors.toSet()),
44 groupInfo.getPendingMembers()
45 .stream()
46 .map(recipientStore::resolveRecipientAddress)
47 .collect(Collectors.toSet()),
48 groupInfo.getRequestingMembers()
49 .stream()
50 .map(recipientStore::resolveRecipientAddress)
51 .collect(Collectors.toSet()),
52 groupInfo.getAdminMembers()
53 .stream()
54 .map(recipientStore::resolveRecipientAddress)
55 .collect(Collectors.toSet()),
56 groupInfo.getBannedMembers()
57 .stream()
58 .map(recipientStore::resolveRecipientAddress)
59 .collect(Collectors.toSet()),
60 groupInfo.isBlocked(),
61 groupInfo.getMessageExpirationTimer(),
62 groupInfo.getPermissionAddMember(),
63 groupInfo.getPermissionEditDetails(),
64 groupInfo.getPermissionSendMessage(),
65 groupInfo.isMember(selfRecipientId),
66 groupInfo.isAdmin(selfRecipientId));
67 }
68 }