]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Group.java
a8dfdff144af5b09baf788b8dc8c59d2bbd5568e
[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 boolean isBlocked,
24 int messageExpirationTimer,
25 GroupPermission permissionAddMember,
26 GroupPermission permissionEditDetails,
27 GroupPermission permissionSendMessage,
28 boolean isMember,
29 boolean isAdmin
30 ) {
31
32 public static Group from(
33 final GroupInfo groupInfo, final RecipientAddressResolver recipientStore, final RecipientId selfRecipientId
34 ) {
35 return new Group(groupInfo.getGroupId(),
36 groupInfo.getTitle(),
37 groupInfo.getDescription(),
38 groupInfo.getGroupInviteLink(),
39 groupInfo.getMembers()
40 .stream()
41 .map(recipientStore::resolveRecipientAddress)
42 .collect(Collectors.toSet()),
43 groupInfo.getPendingMembers()
44 .stream()
45 .map(recipientStore::resolveRecipientAddress)
46 .collect(Collectors.toSet()),
47 groupInfo.getRequestingMembers()
48 .stream()
49 .map(recipientStore::resolveRecipientAddress)
50 .collect(Collectors.toSet()),
51 groupInfo.getAdminMembers()
52 .stream()
53 .map(recipientStore::resolveRecipientAddress)
54 .collect(Collectors.toSet()),
55 groupInfo.isBlocked(),
56 groupInfo.getMessageExpirationTimer(),
57 groupInfo.getPermissionAddMember(),
58 groupInfo.getPermissionEditDetails(),
59 groupInfo.getPermissionSendMessage(),
60 groupInfo.isMember(selfRecipientId),
61 groupInfo.isAdmin(selfRecipientId));
62 }
63 }