send message when expiration time is changed for contact

This commit is contained in:
Matus Kosut 2020-05-16 20:14:03 +02:00
parent 77e48bf041
commit a6f961babd
2 changed files with 14 additions and 5 deletions

View file

@ -3,6 +3,8 @@ package org.asamk.signal.commands;
import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparser;
import java.io.IOException;
import org.asamk.signal.manager.Manager; import org.asamk.signal.manager.Manager;
import org.whispersystems.signalservice.api.util.InvalidNumberException; import org.whispersystems.signalservice.api.util.InvalidNumberException;
@ -41,6 +43,9 @@ public class UpdateContactCommand implements LocalCommand {
} }
} catch (InvalidNumberException e) { } catch (InvalidNumberException e) {
System.out.println("Invalid contact number: " + e.getMessage()); System.out.println("Invalid contact number: " + e.getMessage());
} catch (IOException e) {
System.err.println("Update contact error: " + e.getMessage());
return 3;
} }
return 0; return 0;

View file

@ -810,17 +810,21 @@ public class Manager implements Signal, Closeable {
/** /**
* Change the expiration timer for a contact * Change the expiration timer for a contact
*/ */
public void setExpirationTimer(SignalServiceAddress address, int messageExpirationTimer) { public void setExpirationTimer(SignalServiceAddress address, int messageExpirationTimer) throws IOException {
ContactInfo c = account.getContactStore().getContact(address); final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder();
c.messageExpirationTime = messageExpirationTimer; ContactInfo contact = account.getContactStore().getContact(address);
account.getContactStore().updateContact(c); contact.messageExpirationTime = messageExpirationTimer;
account.getContactStore().updateContact(contact);
account.save(); account.save();
messageBuilder.withExpiration(messageExpirationTimer);
messageBuilder.asExpirationUpdate();
sendMessage(messageBuilder, Collections.singleton(address));
} }
/** /**
* Change the expiration timer for a contact * Change the expiration timer for a contact
*/ */
public void setExpirationTimer(String number, int messageExpirationTimer) throws InvalidNumberException { public void setExpirationTimer(String number, int messageExpirationTimer) throws IOException, InvalidNumberException {
SignalServiceAddress address = canonicalizeAndResolveSignalServiceAddress(number); SignalServiceAddress address = canonicalizeAndResolveSignalServiceAddress(number);
setExpirationTimer(address, messageExpirationTimer); setExpirationTimer(address, messageExpirationTimer);
} }