]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java
Extend updateContact command with nick given/family name and note
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / ContactHelper.java
index 609c2bcf77ee100ceec3ddc4913f76e9b2aa580c..8461fbe0fd66483e03703af04cc5a9dcc074c5e0 100644 (file)
@@ -17,7 +17,14 @@ public class ContactHelper {
         return sourceContact != null && sourceContact.isBlocked();
     }
 
-    public void setContactName(final RecipientId recipientId, final String givenName, final String familyName) {
+    public void setContactName(
+            final RecipientId recipientId,
+            final String givenName,
+            final String familyName,
+            final String nickGivenName,
+            final String nickFamilyName,
+            final String note
+    ) {
         var contact = account.getContactStore().getContact(recipientId);
         final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
         builder.withIsHidden(false);
@@ -27,6 +34,15 @@ public class ContactHelper {
         if (familyName != null) {
             builder.withFamilyName(familyName);
         }
+        if (nickGivenName != null) {
+            builder.withNickNameGivenName(nickGivenName);
+        }
+        if (nickFamilyName != null) {
+            builder.withNickNameFamilyName(nickFamilyName);
+        }
+        if (note != null) {
+            builder.withNote(note);
+        }
         account.getContactStore().storeContact(recipientId, builder.build());
     }
 
@@ -36,8 +52,36 @@ public class ContactHelper {
             return;
         }
         final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
+        final var version = contact == null
+                ? 1
+                : contact.messageExpirationTimeVersion() == Integer.MAX_VALUE
+                        ? Integer.MAX_VALUE
+                        : contact.messageExpirationTimeVersion() + 1;
         account.getContactStore()
-                .storeContact(recipientId, builder.withMessageExpirationTime(messageExpirationTimer).build());
+                .storeContact(recipientId,
+                        builder.withMessageExpirationTime(messageExpirationTimer)
+                                .withMessageExpirationTimeVersion(version)
+                                .build());
+    }
+
+    public void setExpirationTimer(
+            RecipientId recipientId,
+            int messageExpirationTimer,
+            int messageExpirationTimerVersion
+    ) {
+        var contact = account.getContactStore().getContact(recipientId);
+        if (contact != null && (
+                contact.messageExpirationTime() == messageExpirationTimer
+                        || contact.messageExpirationTimeVersion() >= messageExpirationTimerVersion
+        )) {
+            return;
+        }
+        final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
+        account.getContactStore()
+                .storeContact(recipientId,
+                        builder.withMessageExpirationTime(messageExpirationTimer)
+                                .withMessageExpirationTimeVersion(messageExpirationTimerVersion)
+                                .build());
     }
 
     public void setContactBlocked(RecipientId recipientId, boolean blocked) {
@@ -49,6 +93,13 @@ public class ContactHelper {
         account.getContactStore().storeContact(recipientId, builder.withIsBlocked(blocked).build());
     }
 
+    public void setContactProfileSharing(RecipientId recipientId, boolean profileSharing) {
+        var contact = account.getContactStore().getContact(recipientId);
+        final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);
+        builder.withIsProfileSharingEnabled(profileSharing);
+        account.getContactStore().storeContact(recipientId, builder.build());
+    }
+
     public void setContactHidden(RecipientId recipientId, boolean hidden) {
         var contact = account.getContactStore().getContact(recipientId);
         final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact);