Disable add reaction button upon reaching limit when using that button

This commit is contained in:
Jacocococo
2024-03-16 23:08:55 +01:00
parent 2dfb79c828
commit 684164903a

View File

@@ -154,6 +154,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
private final EmojiReactionsAdapter adapter; private final EmojiReactionsAdapter adapter;
private final ListImageLoaderWrapper imgLoader; private final ListImageLoaderWrapper imgLoader;
private int meReactionCount = 0; private int meReactionCount = 0;
private Instance instance;
public Holder(Activity activity, ViewGroup parent) { public Holder(Activity activity, ViewGroup parent) {
super(activity, R.layout.display_item_emoji_reactions, parent); super(activity, R.layout.display_item_emoji_reactions, parent);
@@ -174,7 +175,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
if(emojiKeyboard != null) root.removeView(emojiKeyboard.getView()); if(emojiKeyboard != null) root.removeView(emojiKeyboard.getView());
addButton.setSelected(false); addButton.setSelected(false);
AccountSession session=item.parentFragment.getSession(); AccountSession session=item.parentFragment.getSession();
Instance instance=item.parentFragment.getInstance().get(); instance=item.parentFragment.getInstance().get();
if(instance.configuration!=null && instance.configuration.reactions!=null && instance.configuration.reactions.maxReactions!=0){ if(instance.configuration!=null && instance.configuration.reactions!=null && instance.configuration.reactions.maxReactions!=0){
meReactionCount=(int) item.status.reactions.stream().filter(r->r.me).count(); meReactionCount=(int) item.status.reactions.stream().filter(r->r.me).count();
boolean canReact=meReactionCount<instance.configuration.reactions.maxReactions; boolean canReact=meReactionCount<instance.configuration.reactions.maxReactions;
@@ -263,6 +264,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
RecyclerView.SmoothScroller scroller=new LinearSmoothScroller(list.getContext()); RecyclerView.SmoothScroller scroller=new LinearSmoothScroller(list.getContext());
scroller.setTargetPosition(pos); scroller.setTargetPosition(pos);
list.getLayoutManager().startSmoothScroll(scroller); list.getLayoutManager().startSmoothScroll(scroller);
updateAddButtonClickable(false);
}else{ }else{
finalExisting.add(me); finalExisting.add(me);
adapter.notifyItemChanged(item.status.reactions.indexOf(finalExisting)); adapter.notifyItemChanged(item.status.reactions.indexOf(finalExisting));
@@ -288,6 +290,19 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
} }
} }
private void updateAddButtonClickable(boolean deleting) {
meReactionCount+=deleting ? -1 : 1;
boolean canReact=meReactionCount<instance.configuration.reactions.maxReactions;
addButton.setClickable(canReact);
ObjectAnimator anim=ObjectAnimator.ofFloat(
addButton, View.ALPHA,
canReact ? ALPHA_DISABLED : 1,
canReact ? 1 : ALPHA_DISABLED);
anim.setDuration(200);
anim.start();
}
@Override @Override
public void setImage(int index, Drawable image){ public void setImage(int index, Drawable image){
View child=list.getChildAt(index); View child=list.getChildAt(index);
@@ -413,16 +428,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
Instance instance=parent.parentFragment.getInstance().get(); Instance instance=parent.parentFragment.getInstance().get();
if(instance.configuration!=null && instance.configuration.reactions!=null && instance.configuration.reactions.maxReactions!=0){ if(instance.configuration!=null && instance.configuration.reactions!=null && instance.configuration.reactions.maxReactions!=0){
adapter.parentHolder.meReactionCount+=deleting ? -1 : 1; adapter.parentHolder.updateAddButtonClickable(deleting);
boolean canReact=adapter.parentHolder.meReactionCount<instance.configuration.reactions.maxReactions;
adapter.parentHolder.addButton.setClickable(canReact);
ObjectAnimator anim=ObjectAnimator.ofFloat(
adapter.parentHolder.addButton, View.ALPHA,
canReact ? ALPHA_DISABLED : 1,
canReact ? 1 : ALPHA_DISABLED);
anim.setDuration(200);
anim.start();
} }
E.post(new EmojiReactionsUpdatedEvent(parent.status.id, parent.status.reactions, parent.status.reactions.isEmpty(), adapter.parentHolder)); E.post(new EmojiReactionsUpdatedEvent(parent.status.id, parent.status.reactions, parent.status.reactions.isEmpty(), adapter.parentHolder));
adapter.parentHolder.imgLoader.updateImages(); adapter.parentHolder.imgLoader.updateImages();