+ 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);