diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java index d1ce333ea1..d90fe3d58e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MediaMmsMessageRecord.java @@ -125,7 +125,7 @@ public class MediaMmsMessageRecord extends MmsMessageRecord { return partCount; } - public MediaMmsMessageRecord withAttachments(@NonNull Context context, @NonNull List attachments) { + public @NonNull MediaMmsMessageRecord withAttachments(@NonNull Context context, @NonNull List attachments) { Map attachmentIdMap = new HashMap<>(); for (DatabaseAttachment attachment : attachments) { attachmentIdMap.put(attachment.getAttachmentId(), attachment); @@ -135,13 +135,14 @@ public class MediaMmsMessageRecord extends MmsMessageRecord { Set contactAttachments = contacts.stream().map(Contact::getAvatarAttachment).filter(Objects::nonNull).collect(Collectors.toSet()); List linkPreviews = updateLinkPreviews(getLinkPreviews(), attachmentIdMap); Set linkPreviewAttachments = linkPreviews.stream().map(LinkPreview::getThumbnail).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toSet()); + Quote quote = updateQuote(context, getQuote(), attachments); List slideAttachments = attachments.stream().filter(a -> !contactAttachments.contains(a)).filter(a -> !linkPreviewAttachments.contains(a)).collect(Collectors.toList()); + SlideDeck slideDeck = MmsDatabase.Reader.buildSlideDeck(context, slideAttachments); - SlideDeck slideDeck = MmsDatabase.Reader.buildSlideDeck(context, slideAttachments); return new MediaMmsMessageRecord(getId(), getRecipient(), getIndividualRecipient(), getRecipientDeviceId(), getDateSent(), getDateReceived(), getServerTimestamp(), getDeliveryReceiptCount(), getThreadId(), getBody(), slideDeck, getPartCount(), getType(), getIdentityKeyMismatches(), getNetworkFailures(), getSubscriptionId(), getExpiresIn(), getExpireStarted(), isViewOnce(), - getReadReceiptCount(), getQuote(), contacts, linkPreviews, isUnidentified(), getReactions(), isRemoteDelete(), mentionsSelf, + getReadReceiptCount(), quote, contacts, linkPreviews, isUnidentified(), getReactions(), isRemoteDelete(), mentionsSelf, getNotifiedTimestamp(), getViewedReceiptCount()); } @@ -178,4 +179,14 @@ public class MediaMmsMessageRecord extends MmsMessageRecord { }) .collect(Collectors.toList()); } + + private static @Nullable Quote updateQuote(@NonNull Context context, @Nullable Quote quote, @NonNull List attachments) { + if (quote == null) { + return null; + } + + List quoteAttachments = attachments.stream().filter(Attachment::isQuote).collect(Collectors.toList()); + + return quote.withAttachment(new SlideDeck(context, quoteAttachments)); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/Quote.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/Quote.java index d0eb177526..f814a0876f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/Quote.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/Quote.java @@ -39,6 +39,11 @@ public class Quote { this.text = spannable; } + public @NonNull Quote withAttachment(@NonNull SlideDeck updatedAttachment) { + return new Quote(id, author, text, missing, updatedAttachment, mentions); + } + + public long getId() { return id; }