That fuck shit the fascists are using
1package org.tm.archive;
2
3import android.net.Uri;
4import android.view.View;
5
6import androidx.annotation.NonNull;
7import androidx.annotation.Nullable;
8import androidx.lifecycle.LifecycleOwner;
9import androidx.lifecycle.Observer;
10
11import com.bumptech.glide.RequestManager;
12
13import org.signal.ringrtc.CallLinkRootKey;
14import org.tm.archive.components.voice.VoiceNotePlaybackState;
15import org.tm.archive.contactshare.Contact;
16import org.tm.archive.conversation.ConversationItem;
17import org.tm.archive.conversation.ConversationItemDisplayMode;
18import org.tm.archive.conversation.ConversationMessage;
19import org.tm.archive.conversation.colors.Colorizable;
20import org.tm.archive.conversation.colors.Colorizer;
21import org.tm.archive.conversation.mutiselect.MultiselectPart;
22import org.tm.archive.conversation.mutiselect.Multiselectable;
23import org.tm.archive.database.model.InMemoryMessageRecord;
24import org.tm.archive.database.model.MessageRecord;
25import org.tm.archive.database.model.MmsMessageRecord;
26import org.tm.archive.giph.mp4.GiphyMp4Playable;
27import org.tm.archive.groups.GroupId;
28import org.tm.archive.groups.GroupMigrationMembershipChange;
29import org.tm.archive.linkpreview.LinkPreview;
30import org.tm.archive.mediapreview.MediaIntentFactory;
31import org.tm.archive.recipients.Recipient;
32import org.tm.archive.recipients.RecipientId;
33import org.tm.archive.stickers.StickerLocator;
34
35import java.util.List;
36import java.util.Locale;
37import java.util.Optional;
38import java.util.Set;
39
40public interface BindableConversationItem extends Unbindable, GiphyMp4Playable, Colorizable, Multiselectable {
41 void bind(@NonNull LifecycleOwner lifecycleOwner,
42 @NonNull ConversationMessage messageRecord,
43 @NonNull Optional<MessageRecord> previousMessageRecord,
44 @NonNull Optional<MessageRecord> nextMessageRecord,
45 @NonNull RequestManager requestManager,
46 @NonNull Locale locale,
47 @NonNull Set<MultiselectPart> batchSelected,
48 @NonNull Recipient recipients,
49 @Nullable String searchQuery,
50 boolean pulseMention,
51 boolean hasWallpaper,
52 boolean isMessageRequestAccepted,
53 boolean canPlayInline,
54 @NonNull Colorizer colorizer,
55 @NonNull ConversationItemDisplayMode displayMode);
56
57 @NonNull ConversationMessage getConversationMessage();
58
59 void setEventListener(@Nullable EventListener listener);
60
61 default void setParentScrolling(boolean isParentScrolling) {
62 // Intentionally Blank.
63 }
64
65 default void updateTimestamps() {
66 // Intentionally Blank.
67 }
68
69 default void updateContactNameColor() {
70 // Intentionally Blank.
71 }
72
73 default void updateSelectedState() {
74 // Intentionally Blank.
75 }
76
77 interface EventListener {
78 void onQuoteClicked(MmsMessageRecord messageRecord);
79 void onLinkPreviewClicked(@NonNull LinkPreview linkPreview);
80 void onQuotedIndicatorClicked(@NonNull MessageRecord messageRecord);
81 void onMoreTextClicked(@NonNull RecipientId conversationRecipientId, long messageId, boolean isMms);
82 void onStickerClicked(@NonNull StickerLocator stickerLocator);
83 void onViewOnceMessageClicked(@NonNull MmsMessageRecord messageRecord);
84 void onSharedContactDetailsClicked(@NonNull Contact contact, @NonNull View avatarTransitionView);
85 void onAddToContactsClicked(@NonNull Contact contact);
86 void onMessageSharedContactClicked(@NonNull List<Recipient> choices);
87 void onInviteSharedContactClicked(@NonNull List<Recipient> choices);
88 void onReactionClicked(@NonNull MultiselectPart multiselectPart, long messageId, boolean isMms);
89 void onGroupMemberClicked(@NonNull RecipientId recipientId, @NonNull GroupId groupId);
90 void onMessageWithErrorClicked(@NonNull MessageRecord messageRecord);
91 void onMessageWithRecaptchaNeededClicked(@NonNull MessageRecord messageRecord);
92 void onIncomingIdentityMismatchClicked(@NonNull RecipientId recipientId);
93 void onRegisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
94 void onUnregisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
95 void onVoiceNotePause(@NonNull Uri uri);
96 void onVoiceNotePlay(@NonNull Uri uri, long messageId, double position);
97 void onVoiceNoteSeekTo(@NonNull Uri uri, double position);
98 void onVoiceNotePlaybackSpeedChanged(@NonNull Uri uri, float speed);
99 void onGroupMigrationLearnMoreClicked(@NonNull GroupMigrationMembershipChange membershipChange);
100 void onChatSessionRefreshLearnMoreClicked();
101 void onBadDecryptLearnMoreClicked(@NonNull RecipientId author);
102 void onSafetyNumberLearnMoreClicked(@NonNull Recipient recipient);
103 void onJoinGroupCallClicked();
104 void onInviteFriendsToGroupClicked(@NonNull GroupId.V2 groupId);
105 void onEnableCallNotificationsClicked();
106 void onPlayInlineContent(ConversationMessage conversationMessage);
107 void onInMemoryMessageClicked(@NonNull InMemoryMessageRecord messageRecord);
108 void onViewGroupDescriptionChange(@Nullable GroupId groupId, @NonNull String description, boolean isMessageRequestAccepted);
109 void onChangeNumberUpdateContact(@NonNull Recipient recipient);
110 void onCallToAction(@NonNull String action);
111 void onDonateClicked();
112 void onBlockJoinRequest(@NonNull Recipient recipient);
113 void onRecipientNameClicked(@NonNull RecipientId target);
114 void onInviteToSignalClicked();
115 void onActivatePaymentsClicked();
116 void onSendPaymentClicked(@NonNull RecipientId recipientId);
117 void onScheduledIndicatorClicked(@NonNull View view, @NonNull ConversationMessage conversationMessage);
118 /** @return true if handled, false if you want to let the normal url handling continue */
119 boolean onUrlClicked(@NonNull String url);
120 void onViewGiftBadgeClicked(@NonNull MessageRecord messageRecord);
121 void onGiftBadgeRevealed(@NonNull MessageRecord messageRecord);
122 void goToMediaPreview(ConversationItem parent, View sharedElement, MediaIntentFactory.MediaPreviewArgs args);
123 void onEditedIndicatorClicked(@NonNull MessageRecord messageRecord);
124 void onShowGroupDescriptionClicked(@NonNull String groupName, @NonNull String description, boolean shouldLinkifyWebLinks);
125 void onJoinCallLink(@NonNull CallLinkRootKey callLinkRootKey);
126 void onShowSafetyTips(boolean forGroup);
127 void onReportSpamLearnMoreClicked();
128 void onMessageRequestAcceptOptionsClicked();
129 }
130}