From: AsamK Date: Sat, 27 Aug 2016 11:22:11 +0000 (+0200) Subject: Add support for contact color sync and receiving blocklists and expiring messages X-Git-Tag: v0.5.0~2 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/e4618456a1551bfa06914a23d545f8540963db79?ds=sidebyside Add support for contact color sync and receiving blocklists and expiring messages --- diff --git a/src/main/java/org/asamk/signal/ContactInfo.java b/src/main/java/org/asamk/signal/ContactInfo.java index 89802050..c607238f 100644 --- a/src/main/java/org/asamk/signal/ContactInfo.java +++ b/src/main/java/org/asamk/signal/ContactInfo.java @@ -8,4 +8,7 @@ public class ContactInfo { @JsonProperty public String number; + + @JsonProperty + public String color; } diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index 40e28d25..8a1dd860 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -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.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; @@ -837,9 +834,20 @@ public class Main { 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); } + 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 { @@ -882,6 +890,12 @@ public class Main { 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: "); diff --git a/src/main/java/org/asamk/signal/Manager.java b/src/main/java/org/asamk/signal/Manager.java index 6bd8c657..6ed8b045 100644 --- a/src/main/java/org/asamk/signal/Manager.java +++ b/src/main/java/org/asamk/signal/Manager.java @@ -1017,6 +1017,9 @@ class Manager implements Signal { } catch (Exception e) { e.printStackTrace(); } + if (syncMessage.getBlockedList().isPresent()) { + // TODO store list of blocked numbers + } } if (syncMessage.getContacts().isPresent()) { try { @@ -1028,6 +1031,9 @@ class Manager implements Signal { 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()) { @@ -1264,7 +1270,7 @@ class Manager implements Signal { 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();