]> nmode's Git Repositories - signal-cli/commitdiff
Add support for contact color sync and receiving blocklists and expiring messages
authorAsamK <asamk@gmx.de>
Sat, 27 Aug 2016 11:22:11 +0000 (13:22 +0200)
committerAsamK <asamk@gmx.de>
Sat, 27 Aug 2016 11:22:11 +0000 (13:22 +0200)
src/main/java/org/asamk/signal/ContactInfo.java
src/main/java/org/asamk/signal/Main.java
src/main/java/org/asamk/signal/Manager.java

index 89802050b24ea832c1c54807b205926dbd2cfcdc..c607238f6f65c463e29f5f53a050a494e5746e94 100644 (file)
@@ -8,4 +8,7 @@ public class ContactInfo {
 
     @JsonProperty
     public String number;
 
     @JsonProperty
     public String number;
+
+    @JsonProperty
+    public String color;
 }
 }
index 40e28d25673213216af1b5bf186653c4e6f23253..8a1dd860b42b943a7a65718378f3e0db19f0758e 100644 (file)
@@ -28,10 +28,7 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
 import org.whispersystems.signalservice.api.messages.*;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
 import org.whispersystems.signalservice.api.messages.*;
-import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo;
-import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage;
-import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage;
-import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
+import org.whispersystems.signalservice.api.messages.multidevice.*;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions;
 import org.whispersystems.signalservice.api.push.exceptions.NetworkFailureException;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.EncapsulatedExceptions;
 import org.whispersystems.signalservice.api.push.exceptions.NetworkFailureException;
@@ -837,9 +834,20 @@ public class Main {
                                 to = "Unknown";
                             }
                             System.out.println("To: " + to + " , Message timestamp: " + sentTranscriptMessage.getTimestamp());
                                 to = "Unknown";
                             }
                             System.out.println("To: " + to + " , Message timestamp: " + sentTranscriptMessage.getTimestamp());
+                            if (sentTranscriptMessage.getExpirationStartTimestamp() > 0) {
+                                System.out.println("Expiration started at: " + sentTranscriptMessage.getExpirationStartTimestamp());
+                            }
                             SignalServiceDataMessage message = sentTranscriptMessage.getMessage();
                             handleSignalServiceDataMessage(message);
                         }
                             SignalServiceDataMessage message = sentTranscriptMessage.getMessage();
                             handleSignalServiceDataMessage(message);
                         }
+                        if (syncMessage.getBlockedList().isPresent()) {
+                            System.out.println("Received sync message with block list");
+                            System.out.println("Blocked numbers:");
+                            final BlockedListMessage blockedList = syncMessage.getBlockedList().get();
+                            for (String number : blockedList.getNumbers()) {
+                                System.out.println(" - " + number);
+                            }
+                        }
                     }
                 }
             } else {
                     }
                 }
             } else {
@@ -882,6 +890,12 @@ public class Main {
             if (message.isEndSession()) {
                 System.out.println("Is end session");
             }
             if (message.isEndSession()) {
                 System.out.println("Is end session");
             }
+            if (message.isExpirationUpdate()) {
+                System.out.println("Is Expiration update: " + message.isExpirationUpdate());
+            }
+            if (message.getExpiresInSeconds() > 0) {
+                System.out.println("Expires in: " + message.getExpiresInSeconds() + " seconds");
+            }
 
             if (message.getAttachments().isPresent()) {
                 System.out.println("Attachments: ");
 
             if (message.getAttachments().isPresent()) {
                 System.out.println("Attachments: ");
index 6bd8c65716e83bb06c20566bd41bccd593c98973..6ed8b04517b8f556d8424ae9b575eacd1516535f 100644 (file)
@@ -1017,6 +1017,9 @@ class Manager implements Signal {
                     } catch (Exception e) {
                         e.printStackTrace();
                     }
                     } catch (Exception e) {
                         e.printStackTrace();
                     }
+                    if (syncMessage.getBlockedList().isPresent()) {
+                        // TODO store list of blocked numbers
+                    }
                 }
                 if (syncMessage.getContacts().isPresent()) {
                     try {
                 }
                 if (syncMessage.getContacts().isPresent()) {
                     try {
@@ -1028,6 +1031,9 @@ class Manager implements Signal {
                             if (c.getName().isPresent()) {
                                 contact.name = c.getName().get();
                             }
                             if (c.getName().isPresent()) {
                                 contact.name = c.getName().get();
                             }
+                            if (c.getColor().isPresent()) {
+                                contact.color = c.getColor().get();
+                            }
                             contactStore.updateContact(contact);
 
                             if (c.getAvatar().isPresent()) {
                             contactStore.updateContact(contact);
 
                             if (c.getAvatar().isPresent()) {
@@ -1264,7 +1270,7 @@ class Manager implements Signal {
             try {
                 for (ContactInfo record : contactStore.getContacts()) {
                     out.write(new DeviceContact(record.number, Optional.fromNullable(record.name),
             try {
                 for (ContactInfo record : contactStore.getContacts()) {
                     out.write(new DeviceContact(record.number, Optional.fromNullable(record.name),
-                            createContactAvatarAttachment(record.number)));
+                            createContactAvatarAttachment(record.number), Optional.fromNullable(record.color)));
                 }
             } finally {
                 out.close();
                 }
             } finally {
                 out.close();