]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
Fix sending large text messages to multiple recipients
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / ManagerImpl.java
index 3123163022a531a327790aa68052fc4a391f0a7d..844c3323c192f171d43a34e9cec8615ad1211787 100644 (file)
@@ -84,6 +84,7 @@ import org.whispersystems.signalservice.internal.util.Util;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
 import java.time.Duration;
@@ -393,7 +394,7 @@ class ManagerImpl implements Manager {
 
     @Override
     public Pair<GroupId, SendGroupMessageResults> createGroup(
-            String name, Set<RecipientIdentifier.Single> members, File avatarFile
+            String name, Set<RecipientIdentifier.Single> members, String avatarFile
     ) throws IOException, AttachmentInvalidException, UnregisteredRecipientException {
         return context.getGroupHelper()
                 .createGroup(name,
@@ -568,7 +569,7 @@ class ManagerImpl implements Manager {
             final var textAttachment = AttachmentUtils.createAttachmentStream(new StreamDetails(new ByteArrayInputStream(
                     messageBytes), MimeUtils.LONG_TEXT, messageBytes.length), Optional.empty());
             messageBuilder.withBody(message.messageText().substring(0, 2000));
-            messageBuilder.withAttachment(textAttachment);
+            messageBuilder.withAttachment(context.getAttachmentHelper().uploadAttachment(textAttachment));
         } else {
             messageBuilder.withBody(message.messageText());
         }
@@ -587,7 +588,8 @@ class ManagerImpl implements Manager {
                     quote.message(),
                     List.of(),
                     resolveMentions(quote.mentions()),
-                    SignalServiceDataMessage.Quote.Type.NORMAL));
+                    SignalServiceDataMessage.Quote.Type.NORMAL,
+                    List.of()));
         }
         if (message.sticker().isPresent()) {
             final var sticker = message.sticker().get();
@@ -698,7 +700,7 @@ class ManagerImpl implements Manager {
             byte[] receipt, String note, RecipientIdentifier.Single recipient
     ) throws IOException {
         final var paymentNotification = new SignalServiceDataMessage.PaymentNotification(receipt, note);
-        final var payment = new SignalServiceDataMessage.Payment(paymentNotification);
+        final var payment = new SignalServiceDataMessage.Payment(paymentNotification, null);
         final var messageBuilder = SignalServiceDataMessage.newBuilder().withPayment(payment);
         try {
             return sendMessage(messageBuilder, Set.of(recipient));
@@ -1167,6 +1169,11 @@ class ManagerImpl implements Manager {
         }
     }
 
+    @Override
+    public InputStream retrieveAttachment(final String id) throws IOException {
+        return context.getAttachmentHelper().retrieveAttachment(id).getStream();
+    }
+
     @Override
     public void close() {
         Thread thread;