From: AsamK Date: Tue, 24 Aug 2021 10:36:09 +0000 (+0200) Subject: Refactor message send methods X-Git-Tag: v0.9.0~47 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/cd7172ee57049d292e7916ef58886d74bc82fcf7?ds=inline Refactor message send methods --- diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 60ee4071..ae3f6aed 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -17,6 +17,7 @@ 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; @@ -697,12 +698,10 @@ public class Manager implements Closeable { } public Pair> sendGroupMessage( - String messageText, List attachments, GroupId groupId + Message message, GroupId groupId ) 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); } @@ -1230,11 +1229,19 @@ public class Manager implements Closeable { } public Pair> sendMessage( - String messageText, List attachments, List recipients + Message message, List recipients ) 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(); @@ -1249,16 +1256,11 @@ public class Manager implements Closeable { messageBuilder.withAttachments(attachmentPointers); } - return sendHelper.sendMessage(messageBuilder, getRecipientIds(recipients)); } - public Pair sendSelfMessage( - String messageText, List attachments - ) throws IOException, AttachmentInvalidException { - final var messageBuilder = createMessageBuilder().withBody(messageText); - if (attachments != null) { - messageBuilder.withAttachments(AttachmentUtils.getSignalServiceAttachments(attachments)); - } + public Pair sendSelfMessage(final Message message) throws IOException, AttachmentInvalidException { + final var messageBuilder = createMessageBuilder(); + applyMessage(messageBuilder, message); 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 index 00000000..dee18524 --- /dev/null +++ b/lib/src/main/java/org/asamk/signal/manager/api/Message.java @@ -0,0 +1,22 @@ +package org.asamk.signal.manager.api; + +import java.util.List; + +public class Message { + + private final String messageText; + private final List attachments; + + public Message(final String messageText, final List attachments) { + this.messageText = messageText; + this.attachments = attachments; + } + + public String getMessageText() { + return messageText; + } + + public List getAttachments() { + return attachments; + } +} diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index a214ef88..ab2bcda0 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -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.api.Message; 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 attachments, final List 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) { @@ -188,7 +189,7 @@ public class DbusSignalImpl implements Signal { final String message, final List 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) { @@ -213,7 +214,7 @@ public class DbusSignalImpl implements Signal { @Override public long sendGroupMessage(final String message, final List 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) {