2021-03-12 05:23:29 +01:00
|
|
|
package org.session.libsession.messaging.messages.signal;
|
2013-07-19 02:42:45 +02:00
|
|
|
|
2021-02-11 05:00:27 +01:00
|
|
|
import org.session.libsession.messaging.messages.visible.VisibleMessage;
|
2021-01-14 00:28:07 +01:00
|
|
|
import org.session.libsession.messaging.sending_receiving.attachments.Attachment;
|
|
|
|
import org.session.libsession.messaging.sending_receiving.attachments.PointerAttachment;
|
2021-04-26 03:23:09 +02:00
|
|
|
import org.session.libsession.messaging.sending_receiving.data_extraction.DataExtractionNotificationInfoMessage;
|
2021-02-02 05:40:43 +01:00
|
|
|
import org.session.libsession.messaging.sending_receiving.sharecontacts.Contact;
|
2021-01-13 07:11:30 +01:00
|
|
|
import org.session.libsession.messaging.threads.Address;
|
2021-04-26 03:23:09 +02:00
|
|
|
import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview;
|
2021-01-14 06:33:03 +01:00
|
|
|
import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel;
|
2021-01-14 00:28:07 +01:00
|
|
|
import org.session.libsession.utilities.GroupUtil;
|
2021-05-18 01:26:08 +02:00
|
|
|
import org.session.libsignal.utilities.guava.Optional;
|
2021-05-18 01:50:16 +02:00
|
|
|
import org.session.libsignal.messages.SignalServiceAttachment;
|
|
|
|
import org.session.libsignal.messages.SignalServiceGroup;
|
2014-11-04 00:16:04 +01:00
|
|
|
|
2018-04-27 02:03:54 +02:00
|
|
|
import java.util.Collections;
|
2015-10-13 03:25:05 +02:00
|
|
|
import java.util.LinkedList;
|
2014-11-04 00:16:04 +01:00
|
|
|
import java.util.List;
|
2013-07-19 02:42:45 +02:00
|
|
|
|
|
|
|
public class IncomingMediaMessage {
|
|
|
|
|
2018-02-07 23:01:37 +01:00
|
|
|
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;
|
2018-05-22 11:13:10 +02:00
|
|
|
private final boolean unidentified;
|
2015-10-13 03:25:05 +02:00
|
|
|
|
2021-03-16 04:56:47 +01:00
|
|
|
private final DataExtractionNotificationInfoMessage dataExtractionNotification;
|
|
|
|
private final QuoteModel quote;
|
|
|
|
|
2019-01-15 09:41:05 +01:00
|
|
|
private final List<Attachment> attachments = new LinkedList<>();
|
|
|
|
private final List<Contact> sharedContacts = new LinkedList<>();
|
|
|
|
private final List<LinkPreview> linkPreviews = new LinkedList<>();
|
2013-07-19 02:42:45 +02:00
|
|
|
|
2018-01-25 04:17:44 +01:00
|
|
|
public IncomingMediaMessage(Address from,
|
2014-11-04 00:16:04 +01:00
|
|
|
long sentTimeMillis,
|
2016-02-06 01:10:33 +01:00
|
|
|
int subscriptionId,
|
2016-08-16 05:23:56 +02:00
|
|
|
long expiresIn,
|
|
|
|
boolean expirationUpdate,
|
2018-05-22 11:13:10 +02:00
|
|
|
boolean unidentified,
|
2014-11-04 00:16:04 +01:00
|
|
|
Optional<String> body,
|
2016-03-23 18:34:41 +01:00
|
|
|
Optional<SignalServiceGroup> group,
|
2018-02-07 23:01:37 +01:00
|
|
|
Optional<List<SignalServiceAttachment>> attachments,
|
2018-04-27 02:03:54 +02:00
|
|
|
Optional<QuoteModel> quote,
|
2019-01-15 09:41:05 +01:00
|
|
|
Optional<List<Contact>> sharedContacts,
|
2021-03-16 04:56:47 +01:00
|
|
|
Optional<List<LinkPreview>> linkPreviews,
|
|
|
|
Optional<DataExtractionNotificationInfoMessage> dataExtractionNotification)
|
2013-07-19 02:42:45 +02:00
|
|
|
{
|
2021-03-16 04:56:47 +01:00
|
|
|
this.push = true;
|
|
|
|
this.from = from;
|
|
|
|
this.sentTimeMillis = sentTimeMillis;
|
|
|
|
this.body = body.orNull();
|
|
|
|
this.subscriptionId = subscriptionId;
|
|
|
|
this.expiresIn = expiresIn;
|
|
|
|
this.expirationUpdate = expirationUpdate;
|
|
|
|
this.dataExtractionNotification = dataExtractionNotification.orNull();
|
|
|
|
this.quote = quote.orNull();
|
|
|
|
this.unidentified = unidentified;
|
2015-10-13 03:25:05 +02:00
|
|
|
|
2021-02-17 06:09:36 +01:00
|
|
|
if (group.isPresent()) this.groupId = Address.fromSerialized(GroupUtil.INSTANCE.getEncodedId(group.get()));
|
2015-10-13 03:25:05 +02:00
|
|
|
else this.groupId = null;
|
2013-07-19 02:42:45 +02:00
|
|
|
|
2018-01-25 04:17:44 +01:00
|
|
|
this.attachments.addAll(PointerAttachment.forPointers(attachments));
|
2018-04-27 02:03:54 +02:00
|
|
|
this.sharedContacts.addAll(sharedContacts.or(Collections.emptyList()));
|
2019-01-15 09:41:05 +01:00
|
|
|
this.linkPreviews.addAll(linkPreviews.or(Collections.emptyList()));
|
2013-07-19 02:42:45 +02:00
|
|
|
}
|
|
|
|
|
2021-02-11 05:00:27 +01:00
|
|
|
public static IncomingMediaMessage from(VisibleMessage message,
|
|
|
|
Address from,
|
|
|
|
long expiresIn,
|
|
|
|
Optional<SignalServiceGroup> group,
|
2021-03-15 03:35:05 +01:00
|
|
|
List<SignalServiceAttachment> attachments,
|
2021-02-11 05:00:27 +01:00
|
|
|
Optional<QuoteModel> quote,
|
2021-04-08 07:40:00 +02:00
|
|
|
Optional<List<LinkPreview>> linkPreviews)
|
2021-02-11 05:00:27 +01:00
|
|
|
{
|
2021-03-24 07:17:01 +01:00
|
|
|
return new IncomingMediaMessage(from, message.getSentTimestamp(), -1, expiresIn, false,
|
2021-04-08 07:40:00 +02:00
|
|
|
false, Optional.fromNullable(message.getText()), group, Optional.fromNullable(attachments), quote, Optional.absent(), linkPreviews, Optional.absent());
|
2021-02-11 05:00:27 +01:00
|
|
|
}
|
|
|
|
|
2016-02-06 01:10:33 +01:00
|
|
|
public int getSubscriptionId() {
|
|
|
|
return subscriptionId;
|
|
|
|
}
|
|
|
|
|
2015-10-13 03:25:05 +02:00
|
|
|
public String getBody() {
|
2013-07-19 02:42:45 +02:00
|
|
|
return body;
|
|
|
|
}
|
|
|
|
|
2015-10-13 03:25:05 +02:00
|
|
|
public List<Attachment> getAttachments() {
|
|
|
|
return attachments;
|
|
|
|
}
|
|
|
|
|
2017-08-01 17:56:00 +02:00
|
|
|
public Address getFrom() {
|
|
|
|
return from;
|
|
|
|
}
|
|
|
|
|
2017-07-26 18:59:15 +02:00
|
|
|
public Address getGroupId() {
|
2014-01-14 09:26:43 +01:00
|
|
|
return groupId;
|
|
|
|
}
|
|
|
|
|
2014-02-21 08:00:38 +01:00
|
|
|
public boolean isPushMessage() {
|
|
|
|
return push;
|
|
|
|
}
|
|
|
|
|
2016-08-16 05:23:56 +02:00
|
|
|
public boolean isExpirationUpdate() {
|
|
|
|
return expirationUpdate;
|
|
|
|
}
|
|
|
|
|
2015-10-13 03:25:05 +02:00
|
|
|
public long getSentTimeMillis() {
|
|
|
|
return sentTimeMillis;
|
|
|
|
}
|
|
|
|
|
2016-08-16 05:23:56 +02:00
|
|
|
public long getExpiresIn() {
|
|
|
|
return expiresIn;
|
|
|
|
}
|
|
|
|
|
2013-07-19 02:42:45 +02:00
|
|
|
public boolean isGroupMessage() {
|
2017-08-01 17:56:00 +02:00
|
|
|
return groupId != null;
|
2013-07-19 02:42:45 +02:00
|
|
|
}
|
2018-02-07 23:01:37 +01:00
|
|
|
|
2021-04-09 08:06:12 +02:00
|
|
|
public boolean isScreenshotDataExtraction() {
|
|
|
|
if (dataExtractionNotification == null) return false;
|
|
|
|
else {
|
|
|
|
return dataExtractionNotification.getKind() == DataExtractionNotificationInfoMessage.Kind.SCREENSHOT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isMediaSavedDataExtraction() {
|
|
|
|
if (dataExtractionNotification == null) return false;
|
|
|
|
else {
|
2021-04-20 09:07:21 +02:00
|
|
|
return dataExtractionNotification.getKind() == DataExtractionNotificationInfoMessage.Kind.MEDIA_SAVED;
|
2021-04-09 08:06:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-02-07 23:01:37 +01:00
|
|
|
public QuoteModel getQuote() {
|
|
|
|
return quote;
|
|
|
|
}
|
2018-04-27 02:03:54 +02:00
|
|
|
|
|
|
|
public List<Contact> getSharedContacts() {
|
|
|
|
return sharedContacts;
|
|
|
|
}
|
2018-05-22 11:13:10 +02:00
|
|
|
|
2019-01-15 09:41:05 +01:00
|
|
|
public List<LinkPreview> getLinkPreviews() {
|
|
|
|
return linkPreviews;
|
|
|
|
}
|
|
|
|
|
2018-05-22 11:13:10 +02:00
|
|
|
public boolean isUnidentified() {
|
|
|
|
return unidentified;
|
|
|
|
}
|
2013-07-19 02:42:45 +02:00
|
|
|
}
|