package org.thoughtcrime.securesms.mms; import org.thoughtcrime.securesms.attachments.Attachment; import org.thoughtcrime.securesms.attachments.PointerAttachment; import org.thoughtcrime.securesms.database.Address; import org.thoughtcrime.securesms.util.GroupUtil; import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceGroup; import java.util.LinkedList; import java.util.List; public class IncomingMediaMessage { private final Address from; private final Address groupId; private final String body; private final boolean push; private final long sentTimeMillis; private final int subscriptionId; private final long expiresIn; private final boolean expirationUpdate; private final List attachments = new LinkedList<>(); public IncomingMediaMessage(Address from, Optional
groupId, String body, long sentTimeMillis, List attachments, int subscriptionId, long expiresIn, boolean expirationUpdate) { this.from = from; this.groupId = groupId.orNull(); this.sentTimeMillis = sentTimeMillis; this.body = body; this.push = false; this.subscriptionId = subscriptionId; this.expiresIn = expiresIn; this.expirationUpdate = expirationUpdate; this.attachments.addAll(attachments); } public IncomingMediaMessage(Address from, long sentTimeMillis, int subscriptionId, long expiresIn, boolean expirationUpdate, Optional relay, Optional body, Optional group, Optional> attachments) { this.push = true; this.from = from; this.sentTimeMillis = sentTimeMillis; this.body = body.orNull(); this.subscriptionId = subscriptionId; this.expiresIn = expiresIn; this.expirationUpdate = expirationUpdate; if (group.isPresent()) this.groupId = Address.fromSerialized(GroupUtil.getEncodedId(group.get().getGroupId(), false)); else this.groupId = null; this.attachments.addAll(PointerAttachment.forPointers(attachments)); } public int getSubscriptionId() { return subscriptionId; } public String getBody() { return body; } public List getAttachments() { return attachments; } public Address getFrom() { return from; } public Address getGroupId() { return groupId; } public boolean isPushMessage() { return push; } public boolean isExpirationUpdate() { return expirationUpdate; } public long getSentTimeMillis() { return sentTimeMillis; } public long getExpiresIn() { return expiresIn; } public boolean isGroupMessage() { return groupId != null; } }