88 lines
3.9 KiB
Java
88 lines
3.9 KiB
Java
package org.thoughtcrime.securesms.mms;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
|
|
import org.thoughtcrime.securesms.attachments.Attachment;
|
|
import org.thoughtcrime.securesms.contactshare.Contact;
|
|
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
|
import org.thoughtcrime.securesms.database.model.Mention;
|
|
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context;
|
|
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
|
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
|
import org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupContext;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public final class OutgoingGroupUpdateMessage extends OutgoingSecureMediaMessage {
|
|
|
|
private final MessageGroupContext messageGroupContext;
|
|
|
|
public OutgoingGroupUpdateMessage(@NonNull Recipient recipient,
|
|
@NonNull MessageGroupContext groupContext,
|
|
@NonNull List<Attachment> avatar,
|
|
long sentTimeMillis,
|
|
long expiresIn,
|
|
boolean viewOnce,
|
|
@Nullable QuoteModel quote,
|
|
@NonNull List<Contact> contacts,
|
|
@NonNull List<LinkPreview> previews,
|
|
@NonNull List<Mention> mentions)
|
|
{
|
|
super(recipient, groupContext.getEncodedGroupContext(), avatar, sentTimeMillis,
|
|
ThreadDatabase.DistributionTypes.CONVERSATION, expiresIn, viewOnce, quote, contacts, previews, mentions);
|
|
|
|
this.messageGroupContext = groupContext;
|
|
}
|
|
|
|
public OutgoingGroupUpdateMessage(@NonNull Recipient recipient,
|
|
@NonNull GroupContext group,
|
|
@Nullable final Attachment avatar,
|
|
long sentTimeMillis,
|
|
long expireIn,
|
|
boolean viewOnce,
|
|
@Nullable QuoteModel quote,
|
|
@NonNull List<Contact> contacts,
|
|
@NonNull List<LinkPreview> previews,
|
|
@NonNull List<Mention> mentions)
|
|
{
|
|
this(recipient, new MessageGroupContext(group), getAttachments(avatar), sentTimeMillis, expireIn, viewOnce, quote, contacts, previews, mentions);
|
|
}
|
|
|
|
public OutgoingGroupUpdateMessage(@NonNull Recipient recipient,
|
|
@NonNull DecryptedGroupV2Context group,
|
|
@Nullable final Attachment avatar,
|
|
long sentTimeMillis,
|
|
long expireIn,
|
|
boolean viewOnce,
|
|
@Nullable QuoteModel quote,
|
|
@NonNull List<Contact> contacts,
|
|
@NonNull List<LinkPreview> previews,
|
|
@NonNull List<Mention> mentions)
|
|
{
|
|
this(recipient, new MessageGroupContext(group), getAttachments(avatar), sentTimeMillis, expireIn, viewOnce, quote, contacts, previews, mentions);
|
|
}
|
|
|
|
@Override
|
|
public boolean isGroup() {
|
|
return true;
|
|
}
|
|
|
|
public boolean isV2Group() {
|
|
return messageGroupContext.isV2Group();
|
|
}
|
|
|
|
public @NonNull MessageGroupContext.GroupV1Properties requireGroupV1Properties() {
|
|
return messageGroupContext.requireGroupV1Properties();
|
|
}
|
|
|
|
public @NonNull MessageGroupContext.GroupV2Properties requireGroupV2Properties() {
|
|
return messageGroupContext.requireGroupV2Properties();
|
|
}
|
|
|
|
private static List<Attachment> getAttachments(@Nullable Attachment avatar) {
|
|
return avatar == null ? Collections.emptyList() : Collections.singletonList(avatar);
|
|
}
|
|
}
|