]> nmode's Git Repositories - signal-cli/commitdiff
Refactor message send methods
authorAsamK <asamk@gmx.de>
Tue, 24 Aug 2021 10:36:09 +0000 (12:36 +0200)
committerAsamK <asamk@gmx.de>
Wed, 25 Aug 2021 10:23:31 +0000 (12:23 +0200)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/api/Message.java [new file with mode: 0644]
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 60ee407138a746053f575c20ed0a5001c1e99d3e..ae3f6aedecf40f3a10a7a1d4e2964a67fe75fb72 100644 (file)
@@ -17,6 +17,7 @@
 package org.asamk.signal.manager;
 
 import org.asamk.signal.manager.api.Device;
 package org.asamk.signal.manager;
 
 import org.asamk.signal.manager.api.Device;
+import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.TypingAction;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironment;
 import org.asamk.signal.manager.api.TypingAction;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironment;
@@ -697,12 +698,10 @@ public class Manager implements Closeable {
     }
 
     public Pair<Long, List<SendMessageResult>> sendGroupMessage(
     }
 
     public Pair<Long, List<SendMessageResult>> sendGroupMessage(
-            String messageText, List<String> attachments, GroupId groupId
+            Message message, GroupId groupId
     ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException {
     ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException {
-        final var messageBuilder = createMessageBuilder().withBody(messageText);
-        if (attachments != null) {
-            messageBuilder.withAttachments(AttachmentUtils.getSignalServiceAttachments(attachments));
-        }
+        final var messageBuilder = createMessageBuilder();
+        applyMessage(messageBuilder, message);
 
         return sendHelper.sendAsGroupMessage(messageBuilder, groupId);
     }
 
         return sendHelper.sendAsGroupMessage(messageBuilder, groupId);
     }
@@ -1230,11 +1229,19 @@ public class Manager implements Closeable {
     }
 
     public Pair<Long, List<SendMessageResult>> sendMessage(
     }
 
     public Pair<Long, List<SendMessageResult>> sendMessage(
-            String messageText, List<String> attachments, List<String> recipients
+            Message message, List<String> recipients
     ) throws IOException, AttachmentInvalidException, InvalidNumberException {
     ) throws IOException, AttachmentInvalidException, InvalidNumberException {
-        final var messageBuilder = createMessageBuilder().withBody(messageText);
-        if (attachments != null) {
-            var attachmentStreams = AttachmentUtils.getSignalServiceAttachments(attachments);
+        final var messageBuilder = createMessageBuilder();
+        applyMessage(messageBuilder, message);
+        return sendHelper.sendMessage(messageBuilder, getRecipientIds(recipients));
+    }
+
+    private void applyMessage(
+            final SignalServiceDataMessage.Builder messageBuilder, final Message message
+    ) throws AttachmentInvalidException, IOException {
+        messageBuilder.withBody(message.getMessageText());
+        if (message.getAttachments() != null) {
+            var attachmentStreams = AttachmentUtils.getSignalServiceAttachments(message.getAttachments());
 
             // Upload attachments here, so we only upload once even for multiple recipients
             var messageSender = dependencies.getMessageSender();
 
             // Upload attachments here, so we only upload once even for multiple recipients
             var messageSender = dependencies.getMessageSender();
@@ -1249,16 +1256,11 @@ public class Manager implements Closeable {
 
             messageBuilder.withAttachments(attachmentPointers);
         }
 
             messageBuilder.withAttachments(attachmentPointers);
         }
-        return sendHelper.sendMessage(messageBuilder, getRecipientIds(recipients));
     }
 
     }
 
-    public Pair<Long, SendMessageResult> sendSelfMessage(
-            String messageText, List<String> attachments
-    ) throws IOException, AttachmentInvalidException {
-        final var messageBuilder = createMessageBuilder().withBody(messageText);
-        if (attachments != null) {
-            messageBuilder.withAttachments(AttachmentUtils.getSignalServiceAttachments(attachments));
-        }
+    public Pair<Long, SendMessageResult> sendSelfMessage(final Message message) throws IOException, AttachmentInvalidException {
+        final var messageBuilder = createMessageBuilder();
+        applyMessage(messageBuilder, message);
         return sendHelper.sendSelfMessage(messageBuilder);
     }
 
         return sendHelper.sendSelfMessage(messageBuilder);
     }
 
diff --git a/lib/src/main/java/org/asamk/signal/manager/api/Message.java b/lib/src/main/java/org/asamk/signal/manager/api/Message.java
new file mode 100644 (file)
index 0000000..dee1852
--- /dev/null
@@ -0,0 +1,22 @@
+package org.asamk.signal.manager.api;
+
+import java.util.List;
+
+public class Message {
+
+    private final String messageText;
+    private final List<String> attachments;
+
+    public Message(final String messageText, final List<String> attachments) {
+        this.messageText = messageText;
+        this.attachments = attachments;
+    }
+
+    public String getMessageText() {
+        return messageText;
+    }
+
+    public List<String> getAttachments() {
+        return attachments;
+    }
+}
index a214ef882a817f2d0f1210dbac6f80f729a06efe..ab2bcda04c9c125e7063987aa39b38ac39522119 100644 (file)
@@ -5,6 +5,7 @@ import org.asamk.signal.BaseConfig;
 import org.asamk.signal.manager.AttachmentInvalidException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.NotMasterDeviceException;
 import org.asamk.signal.manager.AttachmentInvalidException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.NotMasterDeviceException;
+import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
 import org.asamk.signal.manager.groups.GroupNotFoundException;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
 import org.asamk.signal.manager.groups.GroupNotFoundException;
@@ -100,7 +101,7 @@ public class DbusSignalImpl implements Signal {
     @Override
     public long sendMessage(final String message, final List<String> attachments, final List<String> recipients) {
         try {
     @Override
     public long sendMessage(final String message, final List<String> attachments, final List<String> recipients) {
         try {
-            final var results = m.sendMessage(message, attachments, recipients);
+            final var results = m.sendMessage(new Message(message, attachments), recipients);
             checkSendMessageResults(results.first(), results.second());
             return results.first();
         } catch (InvalidNumberException e) {
             checkSendMessageResults(results.first(), results.second());
             return results.first();
         } catch (InvalidNumberException e) {
@@ -188,7 +189,7 @@ public class DbusSignalImpl implements Signal {
             final String message, final List<String> attachments
     ) throws Error.AttachmentInvalid, Error.Failure, Error.UntrustedIdentity {
         try {
             final String message, final List<String> attachments
     ) throws Error.AttachmentInvalid, Error.Failure, Error.UntrustedIdentity {
         try {
-            final var results = m.sendSelfMessage(message, attachments);
+            final var results = m.sendSelfMessage(new Message(message, attachments));
             checkSendMessageResult(results.first(), results.second());
             return results.first();
         } catch (AttachmentInvalidException e) {
             checkSendMessageResult(results.first(), results.second());
             return results.first();
         } catch (AttachmentInvalidException e) {
@@ -213,7 +214,7 @@ public class DbusSignalImpl implements Signal {
     @Override
     public long sendGroupMessage(final String message, final List<String> attachments, final byte[] groupId) {
         try {
     @Override
     public long sendGroupMessage(final String message, final List<String> attachments, final byte[] groupId) {
         try {
-            var results = m.sendGroupMessage(message, attachments, GroupId.unknownVersion(groupId));
+            var results = m.sendGroupMessage(new Message(message, attachments), GroupId.unknownVersion(groupId));
             checkSendMessageResults(results.first(), results.second());
             return results.first();
         } catch (IOException e) {
             checkSendMessageResults(results.first(), results.second());
             return results.first();
         } catch (IOException e) {