]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java
56ef89ed434e7189a9c06d6da6952127f2a0ac31
[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, int messageExpirationTimer, int messageExpirationTimerVersion
53 ) {
54 var contact = account.getContactStore().getContact(recipientId);
55 if (contact != null && (
56 contact.messageExpirationTime() == messageExpirationTimer
57 || contact.messageExpirationTimeVersion() >= messageExpirationTimerVersion
58 )) {
59 return;
60 }
61 final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
62 account.getContactStore()
63 .storeContact(recipientId,
64 builder.withMessageExpirationTime(messageExpirationTimer)
65 .withMessageExpirationTimeVersion(messageExpirationTimerVersion)
66 .build());
67 }
68
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);
72 if (blocked) {
73 builder.withIsProfileSharingEnabled(false);
74 }
75 account.getContactStore().storeContact(recipientId, builder.withIsBlocked(blocked).build());
76 }
77
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());
83 }
84
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());
89 }
90 }