fix reaction data and binding inconsistencies
This commit is contained in:
@@ -175,8 +175,7 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
|||||||
reblogged=ev.reblogged;
|
reblogged=ev.reblogged;
|
||||||
bookmarked=ev.bookmarked;
|
bookmarked=ev.bookmarked;
|
||||||
pinned=ev.pinned;
|
pinned=ev.pinned;
|
||||||
reactions.clear();
|
reactions=ev.reactions;
|
||||||
reactions.addAll(ev.reactions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Status getContentStatus(){
|
public Status getContentStatus(){
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
import android.util.Pair;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
@@ -222,17 +223,16 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
FrameLayout frame=new FrameLayout(parent.getContext());
|
FrameLayout frame=new FrameLayout(parent.getContext());
|
||||||
frame.setPaddingRelative(0, 0, V.dp(8), 0);
|
frame.setPaddingRelative(0, 0, V.dp(8), 0);
|
||||||
Button btn=new Button(parent.getContext(), null, 0, R.style.Widget_Mastodon_M3_Button_Outlined_Icon);
|
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.setCompoundDrawableTintList(null);
|
||||||
btn.setBackgroundResource(R.drawable.bg_button_m3_tonal);
|
btn.setBackgroundResource(R.drawable.bg_button_m3_tonal);
|
||||||
btn.setCompoundDrawables(item.placeholder, null, null, null);
|
btn.setCompoundDrawables(item.placeholder, null, null, null);
|
||||||
frame.addView(btn);
|
frame.addView(btn);
|
||||||
return new EmojiReactionViewHolder(frame, item);
|
return new EmojiReactionViewHolder(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(EmojiReactionViewHolder holder, int position){
|
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);
|
super.onBindViewHolder(holder, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,14 +252,12 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class EmojiReactionViewHolder extends BindableViewHolder<EmojiReaction> implements ImageLoaderViewHolder{
|
private static class EmojiReactionViewHolder extends BindableViewHolder<Pair<EmojiReactionsStatusDisplayItem, EmojiReaction>> implements ImageLoaderViewHolder{
|
||||||
private final Button btn;
|
private final Button btn;
|
||||||
private final EmojiReactionsStatusDisplayItem parent;
|
|
||||||
|
|
||||||
public EmojiReactionViewHolder(@NonNull View itemView, EmojiReactionsStatusDisplayItem parent){
|
public EmojiReactionViewHolder(@NonNull View itemView){
|
||||||
super(itemView);
|
super(itemView);
|
||||||
btn=(Button) ((FrameLayout) itemView).getChildAt(0);
|
btn=(Button) ((FrameLayout) itemView).getChildAt(0);
|
||||||
this.parent=parent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -271,29 +269,31 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearImage(int index){
|
public void clearImage(int index){
|
||||||
setImage(index, parent.placeholder);
|
setImage(index, item.first.placeholder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBind(EmojiReaction item){
|
public void onBind(Pair<EmojiReactionsStatusDisplayItem, EmojiReaction> item){
|
||||||
btn.setText(UiUtils.abbreviateNumber(item.count));
|
EmojiReactionsStatusDisplayItem parent=item.first;
|
||||||
btn.setContentDescription(item.name);
|
EmojiReaction reaction=item.second;
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) btn.setTooltipText(item.name);
|
btn.setText(UiUtils.abbreviateNumber(reaction.count));
|
||||||
if(item.url==null){
|
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();
|
Paint p=new Paint();
|
||||||
p.setTextSize(V.sp(18));
|
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);
|
btn.setCompoundDrawablesRelative(drawable, null, null, null);
|
||||||
}else{
|
}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 -> {
|
btn.setOnClickListener(e -> {
|
||||||
boolean deleting=item.me;
|
boolean deleting=reaction.me;
|
||||||
boolean ak=parent.parentFragment.isInstanceAkkoma();
|
boolean ak=parent.parentFragment.isInstanceAkkoma();
|
||||||
MastodonAPIRequest<Status> req = deleting
|
MastodonAPIRequest<Status> req = deleting
|
||||||
? (ak ? new PleromaDeleteStatusReaction(parent.status.id, item.name) : new DeleteStatusReaction(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, item.name) : new AddStatusReaction(parent.status.id, item.name));
|
: (ak ? new PleromaAddStatusReaction(parent.status.id, reaction.name) : new AddStatusReaction(parent.status.id, reaction.name));
|
||||||
req.setCallback(new Callback<>() {
|
req.setCallback(new Callback<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Status result) {
|
public void onSuccess(Status result) {
|
||||||
@@ -301,7 +301,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
|
|
||||||
for(int i=0; i<parent.status.reactions.size(); i++){
|
for(int i=0; i<parent.status.reactions.size(); i++){
|
||||||
EmojiReaction r=parent.status.reactions.get(i);
|
EmojiReaction r=parent.status.reactions.get(i);
|
||||||
if(!r.name.equals(item.name)) continue;
|
if(!r.name.equals(reaction.name)) continue;
|
||||||
if(deleting && r.count==1) {
|
if(deleting && r.count==1) {
|
||||||
parent.status.reactions.remove(i);
|
parent.status.reactions.remove(i);
|
||||||
adapter.notifyItemRemoved(i);
|
adapter.notifyItemRemoved(i);
|
||||||
|
|||||||
Reference in New Issue
Block a user