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(
21 final RecipientId recipientId
,
22 final String givenName
,
23 final String familyName
,
24 final String nickGivenName
,
25 final String nickFamilyName
,
28 var contact
= account
.getContactStore().getContact(recipientId
);
29 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
30 builder
.withIsHidden(false);
31 if (givenName
!= null) {
32 builder
.withGivenName(givenName
);
34 if (familyName
!= null) {
35 builder
.withFamilyName(familyName
);
37 if (nickGivenName
!= null) {
38 builder
.withNickNameGivenName(nickGivenName
);
40 if (nickFamilyName
!= null) {
41 builder
.withNickNameFamilyName(nickFamilyName
);
44 builder
.withNote(note
);
46 account
.getContactStore().storeContact(recipientId
, builder
.build());
49 public void setExpirationTimer(RecipientId recipientId
, int messageExpirationTimer
) {
50 var contact
= account
.getContactStore().getContact(recipientId
);
51 if (contact
!= null && contact
.messageExpirationTime() == messageExpirationTimer
) {
54 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
55 final var version
= contact
== null
57 : contact
.messageExpirationTimeVersion() == Integer
.MAX_VALUE
59 : contact
.messageExpirationTimeVersion() + 1;
60 account
.getContactStore()
61 .storeContact(recipientId
,
62 builder
.withMessageExpirationTime(messageExpirationTimer
)
63 .withMessageExpirationTimeVersion(version
)
67 public void setExpirationTimer(
68 RecipientId recipientId
,
69 int messageExpirationTimer
,
70 int messageExpirationTimerVersion
72 var contact
= account
.getContactStore().getContact(recipientId
);
73 if (contact
!= null && (
74 contact
.messageExpirationTime() == messageExpirationTimer
75 || contact
.messageExpirationTimeVersion() >= messageExpirationTimerVersion
79 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
80 account
.getContactStore()
81 .storeContact(recipientId
,
82 builder
.withMessageExpirationTime(messageExpirationTimer
)
83 .withMessageExpirationTimeVersion(messageExpirationTimerVersion
)
87 public void setContactBlocked(RecipientId recipientId
, boolean blocked
) {
88 var contact
= account
.getContactStore().getContact(recipientId
);
89 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
91 builder
.withIsProfileSharingEnabled(false);
93 account
.getContactStore().storeContact(recipientId
, builder
.withIsBlocked(blocked
).build());
96 public void setContactProfileSharing(RecipientId recipientId
, boolean profileSharing
) {
97 var contact
= account
.getContactStore().getContact(recipientId
);
98 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
99 builder
.withIsProfileSharingEnabled(profileSharing
);
100 account
.getContactStore().storeContact(recipientId
, builder
.build());
103 public void setContactHidden(RecipientId recipientId
, boolean hidden
) {
104 var contact
= account
.getContactStore().getContact(recipientId
);
105 final var builder
= contact
== null ? Contact
.newBuilder() : Contact
.newBuilder(contact
);
106 account
.getContactStore().storeContact(recipientId
, builder
.withIsHidden(hidden
).build());