diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java index 2e1800de29..5f91fb0dbe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java @@ -45,6 +45,10 @@ public class SlideDeck { if (slide != null) slides.add(slide); } + public SlideDeck(SlideDeck otherSlideDeck) { + slides.addAll(otherSlideDeck.slides); + } + public SlideDeck() { } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index 67c8123161..36ccd1b412 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -86,12 +86,12 @@ public final class MultiShareSender { List results = new ArrayList<>(multiShareArgs.getContactSearchKeys().size()); Context context = AppDependencies.getApplication(); String message = multiShareArgs.getDraftText(); - SlideDeck slideDeck; + SlideDeck primarySlideDeck; List storiesBatch = new LinkedList<>(); ChatColors generatedTextStoryBackgroundColor = TextStoryBackgroundColors.getRandomBackgroundColor(); try { - slideDeck = buildSlideDeck(context, multiShareArgs); + primarySlideDeck = buildSlideDeck(context, multiShareArgs); } catch (SlideNotFoundException e) { Log.w(TAG, "Could not create slide for media message"); for (ContactSearchKey.RecipientSearchKey recipientSearchKey : multiShareArgs.getRecipientSearchKeys()) { @@ -105,11 +105,13 @@ public final class MultiShareSender { for (ContactSearchKey.RecipientSearchKey recipientSearchKey : multiShareArgs.getRecipientSearchKeys()) { Recipient recipient = Recipient.resolved(recipientSearchKey.getRecipientId()); - long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient); - List mentions = getValidMentionsForRecipient(recipient, multiShareArgs.getMentions()); - MessageSendType sendType = MessageSendType.SignalMessageSendType.INSTANCE; - long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); - List contacts = multiShareArgs.getSharedContacts(); + long threadId = SignalDatabase.threads().getOrCreateThreadIdFor(recipient); + List mentions = getValidMentionsForRecipient(recipient, multiShareArgs.getMentions()); + MessageSendType sendType = MessageSendType.SignalMessageSendType.INSTANCE; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); + List contacts = multiShareArgs.getSharedContacts(); + SlideDeck slideDeck = new SlideDeck(primarySlideDeck); + boolean needsSplit = message != null && message.length() > sendType.calculateCharacters(message).maxPrimaryMessageSize; boolean hasMmsMedia = !multiShareArgs.getMedia().isEmpty() ||