]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java
fafb9ffeb321f745400dcab5ee1cd4c51efd40bb
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / ContactHelper.java
1 package org.asamk.signal.manager.helper;
2
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;
6
7 public class ContactHelper {
8
9 private final SignalAccount account;
10
11 public ContactHelper(final SignalAccount account) {
12 this.account = account;
13 }
14
15 public boolean isContactBlocked(final RecipientId recipientId) {
16 var sourceContact = account.getContactStore().getContact(recipientId);
17 return sourceContact != null && sourceContact.isBlocked();
18 }
19
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);
26 }
27 if (familyName != null) {
28 builder.withFamilyName(familyName);
29 }
30 account.getContactStore().storeContact(recipientId, builder.build());
31 }
32
33 public void setExpirationTimer(RecipientId recipientId, int messageExpirationTimer) {
34 var contact = account.getContactStore().getContact(recipientId);
35 if (contact != null && contact.messageExpirationTime() == messageExpirationTimer) {
36 return;
37 }
38 final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
39 final var version = contact == null
40 ? 1
41 : contact.messageExpirationTimeVersion() == Integer.MAX_VALUE
42 ? Integer.MAX_VALUE
43 : contact.messageExpirationTimeVersion() + 1;
44 account.getContactStore()
45 .storeContact(recipientId,
46 builder.withMessageExpirationTime(messageExpirationTimer)
47 .withMessageExpirationTimeVersion(version)
48 .build());
49 }
50
51 public void setExpirationTimer(
52 RecipientId recipientId,
53 int messageExpirationTimer,
54 int messageExpirationTimerVersion
55 ) {
56 var contact = account.getContactStore().getContact(recipientId);
57 if (contact != null && (
58 contact.messageExpirationTime() == messageExpirationTimer
59 || contact.messageExpirationTimeVersion() >= messageExpirationTimerVersion
60 )) {
61 return;
62 }
63 final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
64 account.getContactStore()
65 .storeContact(recipientId,
66 builder.withMessageExpirationTime(messageExpirationTimer)
67 .withMessageExpirationTimeVersion(messageExpirationTimerVersion)
68 .build());
69 }
70
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);
74 if (blocked) {
75 builder.withIsProfileSharingEnabled(false);
76 }
77 account.getContactStore().storeContact(recipientId, builder.withIsBlocked(blocked).build());
78 }
79
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());
85 }
86
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());
91 }
92 }