1 package org
.asamk
.signal
.manager
.helper
;
3 import org
.asamk
.signal
.manager
.api
.Contact
;
4 import org
.asamk
.signal
.manager
.storage
.SignalAccount
;
5 import org
.asamk
.signal
.manager
.storage
.recipients
.RecipientId
;
7 public class ContactHelper
{
9 private final SignalAccount account
;
11 public ContactHelper(final SignalAccount account
) {
12 this.account
= account
;
15 public boolean isContactBlocked(final RecipientId recipientId
) {
16 var sourceContact
= account
.getContactStore().getContact(recipientId
);
17 return sourceContact
!= null && sourceContact
.isBlocked();
20 public void setContactName(final RecipientId recipientId
, final String givenName
, final String familyName
) {
21 var contact
= account
.getContactStore().getContact(recipientId
);
22 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
23 builder
.withIsHidden(false);
24 if (givenName
!= null) {
25 builder
.withGivenName(givenName
);
27 if (familyName
!= null) {
28 builder
.withFamilyName(familyName
);
30 account
.getContactStore().storeContact(recipientId
, builder
.build());
33 public void setExpirationTimer(RecipientId recipientId
, int messageExpirationTimer
) {
34 var contact
= account
.getContactStore().getContact(recipientId
);
35 if (contact
!= null && contact
.messageExpirationTime() == messageExpirationTimer
) {
38 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
39 final var version
= contact
== null
41 : contact
.messageExpirationTimeVersion() == Integer
.MAX_VALUE
43 : contact
.messageExpirationTimeVersion() + 1;
44 account
.getContactStore()
45 .storeContact(recipientId
,
46 builder
.withMessageExpirationTime(messageExpirationTimer
)
47 .withMessageExpirationTimeVersion(version
)
51 public void setExpirationTimer(
52 RecipientId recipientId
, int messageExpirationTimer
, int messageExpirationTimerVersion
54 var contact
= account
.getContactStore().getContact(recipientId
);
55 if (contact
!= null && (
56 contact
.messageExpirationTime() == messageExpirationTimer
57 || contact
.messageExpirationTimeVersion() >= messageExpirationTimerVersion
61 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
62 account
.getContactStore()
63 .storeContact(recipientId
,
64 builder
.withMessageExpirationTime(messageExpirationTimer
)
65 .withMessageExpirationTimeVersion(messageExpirationTimerVersion
)
69 public void setContactBlocked(RecipientId recipientId
, boolean blocked
) {
70 var contact
= account
.getContactStore().getContact(recipientId
);
71 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
73 builder
.withIsProfileSharingEnabled(false);
75 account
.getContactStore().storeContact(recipientId
, builder
.withIsBlocked(blocked
).build());
78 public void setContactProfileSharing(RecipientId recipientId
, boolean profileSharing
) {
79 var contact
= account
.getContactStore().getContact(recipientId
);
80 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
81 builder
.withIsProfileSharingEnabled(profileSharing
);
82 account
.getContactStore().storeContact(recipientId
, builder
.build());
85 public void setContactHidden(RecipientId recipientId
, boolean hidden
) {
86 var contact
= account
.getContactStore().getContact(recipientId
);
87 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
88 account
.getContactStore().storeContact(recipientId
, builder
.withIsHidden(hidden
).build());