]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/Group.java
62f39290c40e65a6294189a36ba5d08ae764df01
[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.RecipientId;
9
10 import java.util.Set;
11 import java.util.stream.Collectors;
12
13 public record Group(
14 GroupId groupId,
15 String title,
16 String description,
17 GroupInviteLinkUrl groupInviteLinkUrl,
18 Set<RecipientAddress> members,
19 Set<RecipientAddress> pendingMembers,
20 Set<RecipientAddress> requestingMembers,
21 Set<RecipientAddress> adminMembers,
22 Set<RecipientAddress> bannedMembers,
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 .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
43 .collect(Collectors.toSet()),
44 groupInfo.getPendingMembers()
45 .stream()
46 .map(recipientStore::resolveRecipientAddress)
47 .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
48 .collect(Collectors.toSet()),
49 groupInfo.getRequestingMembers()
50 .stream()
51 .map(recipientStore::resolveRecipientAddress)
52 .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
53 .collect(Collectors.toSet()),
54 groupInfo.getAdminMembers()
55 .stream()
56 .map(recipientStore::resolveRecipientAddress)
57 .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
58 .collect(Collectors.toSet()),
59 groupInfo.getBannedMembers()
60 .stream()
61 .map(recipientStore::resolveRecipientAddress)
62 .map(org.asamk.signal.manager.storage.recipients.RecipientAddress::toApiRecipientAddress)
63 .collect(Collectors.toSet()),
64 groupInfo.isBlocked(),
65 groupInfo.getMessageExpirationTimer(),
66 groupInfo.getPermissionAddMember(),
67 groupInfo.getPermissionEditDetails(),
68 groupInfo.getPermissionSendMessage(),
69 groupInfo.isMember(selfRecipientId),
70 groupInfo.isAdmin(selfRecipientId));
71 }
72 }