Upload attachment before sending to fix sending attachments to multiple recipients

Fixes #259
This commit is contained in:
AsamK 2020-01-21 20:32:45 +01:00
parent 4bafc7212a
commit eca1737d28
2 changed files with 18 additions and 5 deletions

View file

@ -647,7 +647,20 @@ public class Manager implements Signal {
throws IOException, EncapsulatedExceptions, AttachmentInvalidException {
final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder().withBody(messageText);
if (attachments != null) {
messageBuilder.withAttachments(Utils.getSignalServiceAttachments(attachments));
List<SignalServiceAttachment> attachmentStreams = Utils.getSignalServiceAttachments(attachments);
// Upload attachments here, so we only upload once even for multiple recipients
SignalServiceMessageSender messageSender = getMessageSender();
List<SignalServiceAttachment> attachmentPointers = new ArrayList<>(attachmentStreams.size());
for (SignalServiceAttachment attachment : attachmentStreams) {
if (attachment.isStream()) {
attachmentPointers.add(messageSender.uploadAttachment(attachment.asStream()));
} else if (attachment.isPointer()) {
attachmentPointers.add(attachment.asPointer());
}
}
messageBuilder.withAttachments(attachmentPointers);
}
messageBuilder.withProfileKey(account.getProfileKey());
sendMessageLegacy(messageBuilder, recipients);