package org.thoughtcrime.securesms.database.model; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.thoughtcrime.securesms.contactshare.Contact; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; import org.thoughtcrime.securesms.database.documents.NetworkFailure; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.mms.Slide; import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.recipients.Recipient; import java.util.LinkedList; import java.util.List; public abstract class MmsMessageRecord extends MessageRecord { private final @NonNull SlideDeck slideDeck; private final @Nullable Quote quote; private final @NonNull List contacts = new LinkedList<>(); private final @NonNull List linkPreviews = new LinkedList<>(); private final boolean viewOnce; MmsMessageRecord(long id, String body, Recipient conversationRecipient, Recipient individualRecipient, int recipientDeviceId, long dateSent, long dateReceived, long threadId, int deliveryStatus, int deliveryReceiptCount, long type, List mismatches, List networkFailures, int subscriptionId, long expiresIn, long expireStarted, boolean viewOnce, @NonNull SlideDeck slideDeck, int readReceiptCount, @Nullable Quote quote, @NonNull List contacts, @NonNull List linkPreviews, boolean unidentified) { super(id, body, conversationRecipient, individualRecipient, recipientDeviceId, dateSent, dateReceived, threadId, deliveryStatus, deliveryReceiptCount, type, mismatches, networkFailures, subscriptionId, expiresIn, expireStarted, readReceiptCount, unidentified); this.slideDeck = slideDeck; this.quote = quote; this.viewOnce = viewOnce; this.contacts.addAll(contacts); this.linkPreviews.addAll(linkPreviews); } @Override public boolean isMms() { return true; } @NonNull public SlideDeck getSlideDeck() { return slideDeck; } @Override public boolean isMediaPending() { for (Slide slide : getSlideDeck().getSlides()) { if (slide.isInProgress() || slide.isPendingDownload()) { return true; } } return false; } @Override public boolean isViewOnce() { return viewOnce; } public boolean containsMediaSlide() { return slideDeck.containsMediaSlide(); } public @Nullable Quote getQuote() { return quote; } public @NonNull List getSharedContacts() { return contacts; } public @NonNull List getLinkPreviews() { return linkPreviews; } }