That fuck shit the fascists are using
at master 107 lines 3.8 kB view raw
1package org.tm.archive.conversation; 2 3import android.app.Activity; 4import android.graphics.PointF; 5import android.view.MotionEvent; 6 7import androidx.annotation.NonNull; 8 9import org.tm.archive.database.model.MessageRecord; 10import org.tm.archive.recipients.Recipient; 11import org.tm.archive.util.views.Stub; 12 13/** 14 * Delegate class that mimics the ConversationReactionOverlay public API 15 * 16 * This allows us to properly stub out the ConversationReactionOverlay View class while still 17 * respecting listeners and other positional information that can be set BEFORE we want to actually 18 * resolve the view. 19 */ 20public final class ConversationReactionDelegate { 21 22 private final Stub<ConversationReactionOverlay> overlayStub; 23 private final PointF lastSeenDownPoint = new PointF(); 24 25 private ConversationReactionOverlay.OnReactionSelectedListener onReactionSelectedListener; 26 private ConversationReactionOverlay.OnActionSelectedListener onActionSelectedListener; 27 private ConversationReactionOverlay.OnHideListener onHideListener; 28 29 public ConversationReactionDelegate(@NonNull Stub<ConversationReactionOverlay> overlayStub) { 30 this.overlayStub = overlayStub; 31 } 32 33 public boolean isShowing() { 34 return overlayStub.resolved() && overlayStub.get().isShowing(); 35 } 36 37 public void show(@NonNull Activity activity, 38 @NonNull Recipient conversationRecipient, 39 @NonNull ConversationMessage conversationMessage, 40 boolean isNonAdminInAnnouncementGroup, 41 @NonNull SelectedConversationModel selectedConversationModel) 42 { 43 resolveOverlay().show(activity, conversationRecipient, conversationMessage, lastSeenDownPoint, isNonAdminInAnnouncementGroup, selectedConversationModel); 44 } 45 46 public void hide() { 47 overlayStub.get().hide(); 48 } 49 50 public void hideForReactWithAny() { 51 overlayStub.get().hideForReactWithAny(); 52 } 53 54 public void setOnReactionSelectedListener(@NonNull ConversationReactionOverlay.OnReactionSelectedListener onReactionSelectedListener) { 55 this.onReactionSelectedListener = onReactionSelectedListener; 56 57 if (overlayStub.resolved()) { 58 overlayStub.get().setOnReactionSelectedListener(onReactionSelectedListener); 59 } 60 } 61 62 public void setOnActionSelectedListener(@NonNull ConversationReactionOverlay.OnActionSelectedListener onActionSelectedListener) { 63 this.onActionSelectedListener = onActionSelectedListener; 64 65 if (overlayStub.resolved()) { 66 overlayStub.get().setOnActionSelectedListener(onActionSelectedListener); 67 } 68 } 69 70 public void setOnHideListener(@NonNull ConversationReactionOverlay.OnHideListener onHideListener) { 71 this.onHideListener = onHideListener; 72 73 if (overlayStub.resolved()) { 74 overlayStub.get().setOnHideListener(onHideListener); 75 } 76 } 77 78 public @NonNull MessageRecord getMessageRecord() { 79 if (!overlayStub.resolved()) { 80 throw new IllegalStateException("Cannot call getMessageRecord right now."); 81 } 82 83 return overlayStub.get().getMessageRecord(); 84 } 85 86 public boolean applyTouchEvent(@NonNull MotionEvent motionEvent) { 87 if (!overlayStub.resolved() || !overlayStub.get().isShowing()) { 88 if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 89 lastSeenDownPoint.set(motionEvent.getX(), motionEvent.getY()); 90 } 91 return false; 92 } else { 93 return overlayStub.get().applyTouchEvent(motionEvent); 94 } 95 } 96 97 private @NonNull ConversationReactionOverlay resolveOverlay() { 98 ConversationReactionOverlay overlay = overlayStub.get(); 99 overlay.requestFitSystemWindows(); 100 101 overlay.setOnHideListener(onHideListener); 102 overlay.setOnActionSelectedListener(onActionSelectedListener); 103 overlay.setOnReactionSelectedListener(onReactionSelectedListener); 104 105 return overlay; 106 } 107}