X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/1e0aa8929d059b0740da496f6f4ac62159e75141..e048b1886d4858050125c4a341df9a8987c2dcb8:/src/main/java/org/asamk/signal/manager/Manager.java diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 01275cec..81f870cd 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -758,10 +758,23 @@ public class Manager implements Closeable { /** * Change the expiration timer for a contact */ - public void setExpirationTimer(SignalServiceAddress address, int messageExpirationTimer) { - ContactInfo c = account.getContactStore().getContact(address); - c.messageExpirationTime = messageExpirationTimer; - account.getContactStore().updateContact(c); + public void setExpirationTimer(SignalServiceAddress address, int messageExpirationTimer) throws IOException { + final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder(); + ContactInfo contact = account.getContactStore().getContact(address); + contact.messageExpirationTime = messageExpirationTimer; + account.getContactStore().updateContact(contact); + account.save(); + messageBuilder.withExpiration(messageExpirationTimer); + messageBuilder.asExpirationUpdate(); + sendMessage(messageBuilder, Collections.singleton(address)); + } + + /** + * Change the expiration timer for a contact + */ + public void setExpirationTimer(String number, int messageExpirationTimer) throws IOException, InvalidNumberException { + SignalServiceAddress address = canonicalizeAndResolveSignalServiceAddress(number); + setExpirationTimer(address, messageExpirationTimer); } /** @@ -1398,6 +1411,11 @@ public class Manager implements Closeable { System.err.println("Ignoring error: " + e.getMessage()); continue; } + if (envelope.hasSource()) { + // Store uuid if we don't have it already + SignalServiceAddress source = envelope.getSourceAddress(); + resolveSignalServiceAddress(source); + } if (!envelope.isReceipt()) { try { content = decryptMessage(envelope); @@ -1459,6 +1477,9 @@ public class Manager implements Closeable { } else { sender = content.getSender(); } + // Store uuid if we don't have it already + resolveSignalServiceAddress(sender); + if (content.getDataMessage().isPresent()) { SignalServiceDataMessage message = content.getDataMessage().get();