/**
* 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);
}
/**
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);
} else {
sender = content.getSender();
}
+ // Store uuid if we don't have it already
+ resolveSignalServiceAddress(sender);
+
if (content.getDataMessage().isPresent()) {
SignalServiceDataMessage message = content.getDataMessage().get();