From: AsamK Date: Fri, 3 Apr 2020 12:02:18 +0000 (+0200) Subject: Return message timestamp after sucessfully sending a message X-Git-Tag: v0.6.7~3 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/f51f0cbbcf0c7aab9bf725b4f3831544f50c4e14 Return message timestamp after sucessfully sending a message Fixes #104 --- diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index f8b353c7..f0e01dd8 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -13,13 +13,13 @@ import java.util.List; public interface Signal extends DBusInterface { - void sendMessage(String message, List attachments, String recipient) throws EncapsulatedExceptions, AttachmentInvalidException, IOException, InvalidNumberException; + long sendMessage(String message, List attachments, String recipient) throws EncapsulatedExceptions, AttachmentInvalidException, IOException, InvalidNumberException; - void sendMessage(String message, List attachments, List recipients) throws EncapsulatedExceptions, AttachmentInvalidException, IOException, InvalidNumberException; + long sendMessage(String message, List attachments, List recipients) throws EncapsulatedExceptions, AttachmentInvalidException, IOException, InvalidNumberException; void sendEndSessionMessage(List recipients) throws IOException, EncapsulatedExceptions, InvalidNumberException; - void sendGroupMessage(String message, List attachments, byte[] groupId) throws EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException, IOException; + long sendGroupMessage(String message, List attachments, byte[] groupId) throws EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException, IOException; String getContactName(String number) throws InvalidNumberException; diff --git a/src/main/java/org/asamk/signal/commands/SendCommand.java b/src/main/java/org/asamk/signal/commands/SendCommand.java index ab7ca246..f431d708 100644 --- a/src/main/java/org/asamk/signal/commands/SendCommand.java +++ b/src/main/java/org/asamk/signal/commands/SendCommand.java @@ -99,12 +99,14 @@ public class SendCommand implements DbusCommand { if (attachments == null) { attachments = new ArrayList<>(); } + long timestamp; if (ns.getString("group") != null) { byte[] groupId = Util.decodeGroupId(ns.getString("group")); - signal.sendGroupMessage(messageText, attachments, groupId); + timestamp = signal.sendGroupMessage(messageText, attachments, groupId); } else { - signal.sendMessage(messageText, attachments, ns.getList("recipient")); + timestamp = signal.sendMessage(messageText, attachments, ns.getList("recipient")); } + System.out.println(timestamp); return 0; } catch (IOException e) { handleIOException(e); diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index f1316d64..06350982 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -525,7 +525,7 @@ public class Manager implements Signal { } @Override - public void sendGroupMessage(String messageText, List attachments, + public long sendGroupMessage(String messageText, List attachments, byte[] groupId) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException { final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder().withBody(messageText); @@ -543,7 +543,7 @@ public class Manager implements Signal { messageBuilder.withExpiration(g.messageExpirationTime); - sendMessageLegacy(messageBuilder, g.getMembersWithout(account.getSelfAddress())); + return sendMessageLegacy(messageBuilder, g.getMembersWithout(account.getSelfAddress())); } public void sendGroupMessageReaction(String emoji, boolean remove, String targetAuthor, @@ -688,15 +688,15 @@ public class Manager implements Signal { } @Override - public void sendMessage(String message, List attachments, String recipient) + public long sendMessage(String message, List attachments, String recipient) throws EncapsulatedExceptions, AttachmentInvalidException, IOException, InvalidNumberException { List recipients = new ArrayList<>(1); recipients.add(recipient); - sendMessage(message, attachments, recipients); + return sendMessage(message, attachments, recipients); } @Override - public void sendMessage(String messageText, List attachments, + public long sendMessage(String messageText, List attachments, List recipients) throws IOException, EncapsulatedExceptions, AttachmentInvalidException, InvalidNumberException { final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder().withBody(messageText); @@ -716,7 +716,7 @@ public class Manager implements Signal { messageBuilder.withAttachments(attachmentPointers); } - sendMessageLegacy(messageBuilder, getSignalServiceAddresses(recipients)); + return sendMessageLegacy(messageBuilder, getSignalServiceAddresses(recipients)); } public void sendMessageReaction(String emoji, boolean remove, String targetAuthor, @@ -1134,8 +1134,10 @@ public class Manager implements Signal { /** * This method throws an EncapsulatedExceptions exception instead of returning a list of SendMessageResult. */ - private void sendMessageLegacy(SignalServiceDataMessage.Builder messageBuilder, Collection recipients) + private long sendMessageLegacy(SignalServiceDataMessage.Builder messageBuilder, Collection recipients) throws EncapsulatedExceptions, IOException { + final long timestamp = System.currentTimeMillis(); + messageBuilder.withTimestamp(timestamp); List results = sendMessage(messageBuilder, recipients); List untrustedIdentities = new LinkedList<>(); @@ -1154,6 +1156,7 @@ public class Manager implements Signal { if (!untrustedIdentities.isEmpty() || !unregisteredUsers.isEmpty() || !networkExceptions.isEmpty()) { throw new EncapsulatedExceptions(untrustedIdentities, unregisteredUsers, networkExceptions); } + return timestamp; } private Collection getSignalServiceAddresses(Collection numbers) throws InvalidNumberException {