Merge remote-tracking branch 'megalodon_main/main' into m3-merger
This commit is contained in:
@@ -17,6 +17,7 @@ import android.widget.ProgressBar;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.LinearSmoothScroller;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import org.joinmastodon.android.E;
|
import org.joinmastodon.android.E;
|
||||||
@@ -43,6 +44,8 @@ import org.joinmastodon.android.ui.utils.TextDrawable;
|
|||||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||||
import org.joinmastodon.android.ui.views.ProgressBarButton;
|
import org.joinmastodon.android.ui.views.ProgressBarButton;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import me.grishka.appkit.Nav;
|
import me.grishka.appkit.Nav;
|
||||||
import me.grishka.appkit.api.Callback;
|
import me.grishka.appkit.api.Callback;
|
||||||
import me.grishka.appkit.api.ErrorResponse;
|
import me.grishka.appkit.api.ErrorResponse;
|
||||||
@@ -62,6 +65,7 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
private final boolean hideAdd, forAnnouncement;
|
private final boolean hideAdd, forAnnouncement;
|
||||||
private final String accountID;
|
private final String accountID;
|
||||||
private boolean hidden;
|
private boolean hidden;
|
||||||
|
private static final float ALPHA_DISABLED=0.55f;
|
||||||
|
|
||||||
public EmojiReactionsStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Status status, String accountID, boolean hideAdd, boolean forAnnouncement) {
|
public EmojiReactionsStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, Status status, String accountID, boolean hideAdd, boolean forAnnouncement) {
|
||||||
super(parentID, parentFragment);
|
super(parentID, parentFragment);
|
||||||
@@ -101,9 +105,8 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
private void setActionProgressVisible(Holder.EmojiReactionViewHolder vh, boolean visible){
|
private void setActionProgressVisible(Holder.EmojiReactionViewHolder vh, boolean visible){
|
||||||
if(vh==null) return;
|
if(vh==null) return;
|
||||||
vh.progress.setVisibility(visible ? View.VISIBLE : View.GONE);
|
vh.progress.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||||
if(visible)
|
|
||||||
vh.progress.setIndeterminateTintList(vh.btn.getTextColors());
|
|
||||||
vh.btn.setClickable(!visible);
|
vh.btn.setClickable(!visible);
|
||||||
|
vh.btn.setAlpha(visible ? ALPHA_DISABLED : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private MastodonAPIRequest<?> createRequest(String name, int count, boolean delete, Holder.EmojiReactionViewHolder vh, Runnable cb, Runnable err){
|
private MastodonAPIRequest<?> createRequest(String name, int count, boolean delete, Holder.EmojiReactionViewHolder vh, Runnable cb, Runnable err){
|
||||||
@@ -216,10 +219,19 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addEmojiReaction(String emoji, Emoji info) {
|
private void addEmojiReaction(String emoji, Emoji info) {
|
||||||
if(item.status.reactions.stream().filter(r->r.name.equals(emoji) && r.me).findAny().isPresent()) return;
|
for(int i=0; i<item.status.reactions.size(); i++){
|
||||||
|
EmojiReaction r=item.status.reactions.get(i);
|
||||||
|
if(r.name.equals(emoji) && r.me){
|
||||||
|
RecyclerView.SmoothScroller scroller=new LinearSmoothScroller(list.getContext());
|
||||||
|
scroller.setTargetPosition(i);
|
||||||
|
list.getLayoutManager().startSmoothScroll(scroller);
|
||||||
|
return; // nothing to do, already added
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
progress.setVisibility(View.VISIBLE);
|
progress.setVisibility(View.VISIBLE);
|
||||||
addButton.setClickable(false);
|
addButton.setClickable(false);
|
||||||
addButton.setAlpha(0.55f);
|
addButton.setAlpha(ALPHA_DISABLED);
|
||||||
|
|
||||||
Runnable resetBtn=()->{
|
Runnable resetBtn=()->{
|
||||||
progress.setVisibility(View.GONE);
|
progress.setVisibility(View.GONE);
|
||||||
@@ -239,8 +251,12 @@ public class EmojiReactionsStatusDisplayItem extends StatusDisplayItem {
|
|||||||
item.createRequest(emoji, existing==null ? 1 : existing.count, false, null, ()->{
|
item.createRequest(emoji, existing==null ? 1 : existing.count, false, null, ()->{
|
||||||
resetBtn.run();
|
resetBtn.run();
|
||||||
if(finalExisting==null){
|
if(finalExisting==null){
|
||||||
item.status.reactions.add(0, info!=null ? EmojiReaction.of(info, me) : EmojiReaction.of(emoji, me));
|
int pos=item.status.reactions.size();
|
||||||
adapter.notifyItemRangeInserted(0, 1);
|
item.status.reactions.add(pos, info!=null ? EmojiReaction.of(info, me) : EmojiReaction.of(emoji, me));
|
||||||
|
adapter.notifyItemRangeInserted(pos, 1);
|
||||||
|
RecyclerView.SmoothScroller scroller=new LinearSmoothScroller(list.getContext());
|
||||||
|
scroller.setTargetPosition(pos);
|
||||||
|
list.getLayoutManager().startSmoothScroll(scroller);
|
||||||
}else{
|
}else{
|
||||||
finalExisting.add(me);
|
finalExisting.add(me);
|
||||||
adapter.notifyItemChanged(item.status.reactions.indexOf(finalExisting));
|
adapter.notifyItemChanged(item.status.reactions.indexOf(finalExisting));
|
||||||
|
|||||||
Reference in New Issue
Block a user