2015-09-15 15:28:27 -07:00
|
|
|
package org.thoughtcrime.securesms;
|
|
|
|
|
2020-10-13 09:20:52 -03:00
|
|
|
import android.net.Uri;
|
2020-08-13 16:39:43 -03:00
|
|
|
import android.view.View;
|
|
|
|
|
2019-06-05 15:47:14 -04:00
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.annotation.Nullable;
|
2020-09-23 14:47:00 -03:00
|
|
|
import androidx.lifecycle.LifecycleOwner;
|
2020-10-13 09:20:52 -03:00
|
|
|
import androidx.lifecycle.Observer;
|
2015-09-15 15:28:27 -07:00
|
|
|
|
2020-10-13 09:20:52 -03:00
|
|
|
import org.thoughtcrime.securesms.components.voice.VoiceNotePlaybackState;
|
2018-04-26 17:03:54 -07:00
|
|
|
import org.thoughtcrime.securesms.contactshare.Contact;
|
2020-07-28 10:17:06 -04:00
|
|
|
import org.thoughtcrime.securesms.conversation.ConversationMessage;
|
2021-05-03 11:34:41 -03:00
|
|
|
import org.thoughtcrime.securesms.conversation.colors.Colorizable;
|
|
|
|
import org.thoughtcrime.securesms.conversation.colors.Colorizer;
|
2021-04-23 15:29:59 -04:00
|
|
|
import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord;
|
2015-09-15 15:28:27 -07:00
|
|
|
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
2018-04-02 16:17:32 -07:00
|
|
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
2021-04-20 15:12:35 -03:00
|
|
|
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4Playable;
|
2020-04-27 13:08:06 -03:00
|
|
|
import org.thoughtcrime.securesms.groups.GroupId;
|
2020-11-24 10:54:41 -05:00
|
|
|
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange;
|
2019-01-15 00:41:05 -08:00
|
|
|
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
|
2017-10-16 13:11:42 -07:00
|
|
|
import org.thoughtcrime.securesms.mms.GlideRequests;
|
2017-08-01 08:56:00 -07:00
|
|
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
2019-08-07 14:22:51 -04:00
|
|
|
import org.thoughtcrime.securesms.recipients.RecipientId;
|
2019-04-17 10:21:30 -04:00
|
|
|
import org.thoughtcrime.securesms.stickers.StickerLocator;
|
2021-04-20 15:12:35 -03:00
|
|
|
import org.thoughtcrime.securesms.video.exo.AttachmentMediaSourceFactory;
|
2018-06-26 10:27:44 -07:00
|
|
|
import org.whispersystems.libsignal.util.guava.Optional;
|
2015-09-15 15:28:27 -07:00
|
|
|
|
2018-04-26 17:03:54 -07:00
|
|
|
import java.util.List;
|
2015-09-15 15:28:27 -07:00
|
|
|
import java.util.Locale;
|
|
|
|
import java.util.Set;
|
|
|
|
|
2021-05-03 11:34:41 -03:00
|
|
|
public interface BindableConversationItem extends Unbindable, GiphyMp4Playable, Colorizable {
|
2020-09-23 14:47:00 -03:00
|
|
|
void bind(@NonNull LifecycleOwner lifecycleOwner,
|
|
|
|
@NonNull ConversationMessage messageRecord,
|
2018-06-26 10:27:44 -07:00
|
|
|
@NonNull Optional<MessageRecord> previousMessageRecord,
|
|
|
|
@NonNull Optional<MessageRecord> nextMessageRecord,
|
2020-07-28 10:17:06 -04:00
|
|
|
@NonNull GlideRequests glideRequests,
|
|
|
|
@NonNull Locale locale,
|
|
|
|
@NonNull Set<ConversationMessage> batchSelected,
|
|
|
|
@NonNull Recipient recipients,
|
|
|
|
@Nullable String searchQuery,
|
2021-01-19 21:54:10 -05:00
|
|
|
boolean pulseMention,
|
2021-02-03 12:45:14 -04:00
|
|
|
boolean hasWallpaper,
|
2021-04-20 15:12:35 -03:00
|
|
|
boolean isMessageRequestAccepted,
|
|
|
|
@NonNull AttachmentMediaSourceFactory attachmentMediaSourceFactory,
|
2021-05-03 11:34:41 -03:00
|
|
|
boolean canPlayInline,
|
|
|
|
@NonNull Colorizer colorizer);
|
2016-08-15 20:23:56 -07:00
|
|
|
|
2020-07-28 10:17:06 -04:00
|
|
|
ConversationMessage getConversationMessage();
|
2018-04-02 16:17:32 -07:00
|
|
|
|
|
|
|
void setEventListener(@Nullable EventListener listener);
|
|
|
|
|
|
|
|
interface EventListener {
|
|
|
|
void onQuoteClicked(MmsMessageRecord messageRecord);
|
2019-01-15 00:41:05 -08:00
|
|
|
void onLinkPreviewClicked(@NonNull LinkPreview linkPreview);
|
2019-08-07 14:22:51 -04:00
|
|
|
void onMoreTextClicked(@NonNull RecipientId conversationRecipientId, long messageId, boolean isMms);
|
2019-04-17 10:21:30 -04:00
|
|
|
void onStickerClicked(@NonNull StickerLocator stickerLocator);
|
2019-07-31 19:33:56 -04:00
|
|
|
void onViewOnceMessageClicked(@NonNull MmsMessageRecord messageRecord);
|
2018-04-26 17:03:54 -07:00
|
|
|
void onSharedContactDetailsClicked(@NonNull Contact contact, @NonNull View avatarTransitionView);
|
|
|
|
void onAddToContactsClicked(@NonNull Contact contact);
|
|
|
|
void onMessageSharedContactClicked(@NonNull List<Recipient> choices);
|
|
|
|
void onInviteSharedContactClicked(@NonNull List<Recipient> choices);
|
2020-07-29 13:44:23 -03:00
|
|
|
void onReactionClicked(@NonNull View reactionTarget, long messageId, boolean isMms);
|
2020-08-05 16:45:52 -04:00
|
|
|
void onGroupMemberClicked(@NonNull RecipientId recipientId, @NonNull GroupId groupId);
|
2020-06-26 11:10:54 -04:00
|
|
|
void onMessageWithErrorClicked(@NonNull MessageRecord messageRecord);
|
2021-05-05 12:49:18 -04:00
|
|
|
void onMessageWithRecaptchaNeededClicked(@NonNull MessageRecord messageRecord);
|
2020-10-13 09:20:52 -03:00
|
|
|
void onRegisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
|
|
|
|
void onUnregisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
|
|
|
|
void onVoiceNotePause(@NonNull Uri uri);
|
2020-10-16 15:37:26 -03:00
|
|
|
void onVoiceNotePlay(@NonNull Uri uri, long messageId, double position);
|
|
|
|
void onVoiceNoteSeekTo(@NonNull Uri uri, double position);
|
2020-11-24 10:54:41 -05:00
|
|
|
void onGroupMigrationLearnMoreClicked(@NonNull GroupMigrationMembershipChange membershipChange);
|
2021-01-08 10:23:46 -05:00
|
|
|
void onDecryptionFailedLearnMoreClicked();
|
2021-01-13 09:50:32 -05:00
|
|
|
void onSafetyNumberLearnMoreClicked(@NonNull Recipient recipient);
|
2020-11-20 15:42:46 -05:00
|
|
|
void onJoinGroupCallClicked();
|
2021-01-08 19:37:03 -04:00
|
|
|
void onInviteFriendsToGroupClicked(@NonNull GroupId.V2 groupId);
|
2021-03-31 13:45:28 -04:00
|
|
|
void onEnableCallNotificationsClicked();
|
2021-04-20 15:12:35 -03:00
|
|
|
void onPlayInlineContent(ConversationMessage conversationMessage);
|
2021-04-23 15:29:59 -04:00
|
|
|
void onInMemoryMessageClicked(@NonNull InMemoryMessageRecord messageRecord);
|
2021-05-07 13:43:31 -04:00
|
|
|
void onViewGroupDescriptionChange(@Nullable GroupId groupId, @NonNull String description, boolean isMessageRequestAccepted);
|
2020-08-13 16:39:43 -03:00
|
|
|
|
|
|
|
/** @return true if handled, false if you want to let the normal url handling continue */
|
|
|
|
boolean onUrlClicked(@NonNull String url);
|
2018-04-02 16:17:32 -07:00
|
|
|
}
|
2015-09-15 15:28:27 -07:00
|
|
|
}
|