diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java index 6864e7d5f..363b43f55 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java @@ -175,8 +175,7 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{ reblogged=ev.reblogged; bookmarked=ev.bookmarked; pinned=ev.pinned; - reactions.clear(); - reactions.addAll(ev.reactions); + reactions=ev.reactions; } public Status getContentStatus(){ 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 c5dd6d89e..d1cf6c94f 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 @@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.util.DisplayMetrics; +import android.util.Pair; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -222,17 +223,16 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { FrameLayout frame=new FrameLayout(parent.getContext()); frame.setPaddingRelative(0, 0, V.dp(8), 0); Button btn=new Button(parent.getContext(), null, 0, R.style.Widget_Mastodon_M3_Button_Outlined_Icon); - ViewGroup.MarginLayoutParams params=new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); btn.setCompoundDrawableTintList(null); btn.setBackgroundResource(R.drawable.bg_button_m3_tonal); btn.setCompoundDrawables(item.placeholder, null, null, null); frame.addView(btn); - return new EmojiReactionViewHolder(frame, item); + return new EmojiReactionViewHolder(frame); } @Override public void onBindViewHolder(EmojiReactionViewHolder holder, int position){ - holder.bind(item.status.reactions.get(position)); + holder.bind(Pair.create(item, item.status.reactions.get(position))); super.onBindViewHolder(holder, position); } @@ -252,14 +252,12 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { } } - private static class EmojiReactionViewHolder extends BindableViewHolder implements ImageLoaderViewHolder{ + private static class EmojiReactionViewHolder extends BindableViewHolder> implements ImageLoaderViewHolder{ private final Button btn; - private final EmojiReactionsStatusDisplayItem parent; - public EmojiReactionViewHolder(@NonNull View itemView, EmojiReactionsStatusDisplayItem parent){ + public EmojiReactionViewHolder(@NonNull View itemView){ super(itemView); btn=(Button) ((FrameLayout) itemView).getChildAt(0); - this.parent=parent; } @Override @@ -271,29 +269,31 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { @Override public void clearImage(int index){ - setImage(index, parent.placeholder); + setImage(index, item.first.placeholder); } @Override - public void onBind(EmojiReaction item){ - btn.setText(UiUtils.abbreviateNumber(item.count)); - btn.setContentDescription(item.name); - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) btn.setTooltipText(item.name); - if(item.url==null){ + public void onBind(Pair item){ + EmojiReactionsStatusDisplayItem parent=item.first; + EmojiReaction reaction=item.second; + btn.setText(UiUtils.abbreviateNumber(reaction.count)); + btn.setContentDescription(reaction.name); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) btn.setTooltipText(reaction.name); + if(reaction.url==null){ Paint p=new Paint(); p.setTextSize(V.sp(18)); - TextDrawable drawable=new TextDrawable(p, item.name); + TextDrawable drawable=new TextDrawable(p, reaction.name); btn.setCompoundDrawablesRelative(drawable, null, null, null); }else{ - btn.setCompoundDrawablesRelative(parent.placeholder, null, null, null); + btn.setCompoundDrawablesRelative(item.first.placeholder, null, null, null); } - btn.setSelected(item.me); + btn.setSelected(reaction.me); btn.setOnClickListener(e -> { - boolean deleting=item.me; + boolean deleting=reaction.me; boolean ak=parent.parentFragment.isInstanceAkkoma(); MastodonAPIRequest req = deleting - ? (ak ? new PleromaDeleteStatusReaction(parent.status.id, item.name) : new DeleteStatusReaction(parent.status.id, item.name)) - : (ak ? new PleromaAddStatusReaction(parent.status.id, item.name) : new AddStatusReaction(parent.status.id, item.name)); + ? (ak ? new PleromaDeleteStatusReaction(parent.status.id, reaction.name) : new DeleteStatusReaction(parent.status.id, reaction.name)) + : (ak ? new PleromaAddStatusReaction(parent.status.id, reaction.name) : new AddStatusReaction(parent.status.id, reaction.name)); req.setCallback(new Callback<>() { @Override public void onSuccess(Status result) { @@ -301,7 +301,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem { for(int i=0; i