Disable remote emoji reaction buttons on Iceshrimp

This commit is contained in:
Jacocococo
2024-03-16 14:25:30 +01:00
parent 86f54f5a02
commit 2dfb79c828
3 changed files with 45 additions and 3 deletions

View File

@@ -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<Pair<EmojiReactionsStatusDisplayItem, EmojiReaction>> 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, ()->{

View File

@@ -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);
}
}

View File

@@ -15,7 +15,7 @@
android:indeterminate="true"
android:outlineProvider="none"
android:visibility="gone"/>
<org.joinmastodon.android.ui.views.ProgressBarButton
<org.joinmastodon.android.ui.views.EmojiReactionButton
android:id="@+id/btn"
style="@style/Widget.Mastodon.M3.Button.Outlined.Icon"
android:layout_width="wrap_content"