From 2dfb79c828236dae05a1686bbbd0873f11791096 Mon Sep 17 00:00:00 2001 From: Jacocococo Date: Sat, 16 Mar 2024 14:25:30 +0100 Subject: [PATCH] Disable remote emoji reaction buttons on Iceshrimp --- .../EmojiReactionsStatusDisplayItem.java | 12 +++++-- .../android/ui/views/EmojiReactionButton.java | 34 +++++++++++++++++++ .../main/res/layout/item_emoji_reaction.xml | 2 +- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 mastodon/src/main/java/org/joinmastodon/android/ui/views/EmojiReactionButton.java diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/EmojiReactionsStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/EmojiReactionsStatusDisplayItem.java index 5aa6a0014..009c47642 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/EmojiReactionsStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/EmojiReactionsStatusDisplayItem.java @@ -44,7 +44,7 @@ import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.CustomEmojiPopupKeyboard; import org.joinmastodon.android.ui.utils.TextDrawable; import org.joinmastodon.android.ui.utils.UiUtils; -import org.joinmastodon.android.ui.views.ProgressBarButton; +import org.joinmastodon.android.ui.views.EmojiReactionButton; import me.grishka.appkit.Nav; import me.grishka.appkit.api.Callback; @@ -340,7 +340,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { } private static class EmojiReactionViewHolder extends BindableViewHolder> implements ImageLoaderViewHolder{ - private final ProgressBarButton btn; + private final EmojiReactionButton btn; private final ProgressBar progress; public EmojiReactionViewHolder(Context context, RecyclerView list){ @@ -379,6 +379,14 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { btn.setCompoundDrawablesRelative(item.first.placeholder, null, null, null); } btn.setSelected(reaction.me); + if(parent.parentFragment.isInstanceIceshrimp() && reaction.name.contains("@")){ + btn.setEnabled(false); + btn.setClickable(false); + btn.setLongClickable(true); + }else{ + btn.setEnabled(true); + btn.setClickable(true); + } btn.setOnClickListener(e->{ boolean deleting=reaction.me; parent.createRequest(reaction.name, reaction.count, deleting, this, ()->{ diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/EmojiReactionButton.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/EmojiReactionButton.java new file mode 100644 index 000000000..27322e456 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/EmojiReactionButton.java @@ -0,0 +1,34 @@ +package org.joinmastodon.android.ui.views; + +import android.content.Context; +import android.os.Handler; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewConfiguration; + +public class EmojiReactionButton extends ProgressBarButton { + private final Handler handler=new Handler(); + + public EmojiReactionButton(Context context){ + super(context); + } + + public EmojiReactionButton(Context context, AttributeSet attrs){ + super(context, attrs); + } + + public EmojiReactionButton(Context context, AttributeSet attrs, int defStyleAttr){ + super(context, attrs, defStyleAttr); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + // allow long click even if button is disabled + int action=event.getAction(); + if(action==MotionEvent.ACTION_DOWN) + handler.postDelayed(this::performLongClick, ViewConfiguration.getLongPressTimeout()); + if(action==MotionEvent.ACTION_UP) + handler.removeCallbacksAndMessages(null); + return super.onTouchEvent(event); + } +} diff --git a/mastodon/src/main/res/layout/item_emoji_reaction.xml b/mastodon/src/main/res/layout/item_emoji_reaction.xml index b5e9882c4..e9f131caf 100644 --- a/mastodon/src/main/res/layout/item_emoji_reaction.xml +++ b/mastodon/src/main/res/layout/item_emoji_reaction.xml @@ -15,7 +15,7 @@ android:indeterminate="true" android:outlineProvider="none" android:visibility="gone"/> -