*-n*, *--name*::
Specify the new name for this contact.
+*-e*, *--expiration*::
+Set expiration time of messages (seconds).
+To disable expiration set expiration time to 0.
+
=== block
Block the given contacts or groups (no messages will be received).
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
+import java.io.IOException;
+
import org.asamk.signal.manager.Manager;
import org.whispersystems.signalservice.api.util.InvalidNumberException;
subparser.addArgument("-n", "--name")
.required(true)
.help("New contact name");
+ subparser.addArgument("-e", "--expiration")
+ .required(false)
+ .type(int.class)
+ .help("Set expiration time of messages (seconds)");
subparser.help("Update the details of a given contact");
}
try {
m.setContactName(number, name);
+
+ Integer expiration = ns.getInt("expiration");
+ if (expiration != null) {
+ m.setExpirationTimer(number, expiration);
+ }
} catch (InvalidNumberException e) {
System.out.println("Invalid contact number: " + e.getMessage());
+ } catch (IOException e) {
+ System.err.println("Update contact error: " + e.getMessage());
+ return 3;
}
return 0;
/**
* 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);
}
/**