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
,
53 int messageExpirationTimer
,
54 int messageExpirationTimerVersion
56 var contact
= account
.getContactStore().getContact(recipientId
);
57 if (contact
!= null && (
58 contact
.messageExpirationTime() == messageExpirationTimer
59 || contact
.messageExpirationTimeVersion() >= messageExpirationTimerVersion
63 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
64 account
.getContactStore()
65 .storeContact(recipientId
,
66 builder
.withMessageExpirationTime(messageExpirationTimer
)
67 .withMessageExpirationTimeVersion(messageExpirationTimerVersion
)
71 public void setContactBlocked(RecipientId recipientId
, boolean blocked
) {
72 var contact
= account
.getContactStore().getContact(recipientId
);
73 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
75 builder
.withIsProfileSharingEnabled(false);
77 account
.getContactStore().storeContact(recipientId
, builder
.withIsBlocked(blocked
).build());
80 public void setContactProfileSharing(RecipientId recipientId
, boolean profileSharing
) {
81 var contact
= account
.getContactStore().getContact(recipientId
);
82 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
83 builder
.withIsProfileSharingEnabled(profileSharing
);
84 account
.getContactStore().storeContact(recipientId
, builder
.build());
87 public void setContactHidden(RecipientId recipientId
, boolean hidden
) {
88 var contact
= account
.getContactStore().getContact(recipientId
);
89 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
90 account
.getContactStore().storeContact(recipientId
, builder
.withIsHidden(hidden
).build());