diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java index 0750be8e4..52bdbf2b3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java @@ -319,7 +319,18 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment { + UiUtils.handleFollowRequest((Activity) v.getContext(), item.account, accountID, null, v == acceptButton, relationship, (Boolean visible) -> { + if(v==acceptButton){ + acceptButton.setTextVisible(!visible); + acceptProgress.setVisibility(visible ? View.VISIBLE : View.GONE); + acceptButton.setClickable(!visible); + }else{ + rejectButton.setTextVisible(!visible); + rejectProgress.setVisibility(visible ? View.VISIBLE : View.GONE); + rejectButton.setClickable(!visible); + } + itemView.setHasTransientState(false); + }, rel -> { if(getContext()==null) return; itemView.setHasTransientState(false); relationships.put(item.account.id, rel); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AccountCardStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AccountCardStatusDisplayItem.java index 0321d615b..5fce579a2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AccountCardStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AccountCardStatusDisplayItem.java @@ -172,7 +172,18 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{ private void onFollowRequestButtonClick(View v) { itemView.setHasTransientState(true); - UiUtils.handleFollowRequest((Activity) v.getContext(), item.account, item.parentFragment.getAccountID(), null, v == acceptButton, relationship, rel -> { + UiUtils.handleFollowRequest((Activity) v.getContext(), item.account, item.parentFragment.getAccountID(), null, v == acceptButton, relationship, (Boolean visible) -> { + if(v==acceptButton){ + acceptButton.setTextVisible(!visible); + acceptProgress.setVisibility(visible ? View.VISIBLE : View.GONE); + acceptButton.setClickable(!visible); + }else{ + rejectButton.setTextVisible(!visible); + rejectProgress.setVisibility(visible ? View.VISIBLE : View.GONE); + rejectButton.setClickable(!visible); + } + itemView.setHasTransientState(false); + }, rel -> { if(v.getContext()==null || rel==null) return; itemView.setHasTransientState(false); item.parentFragment.putRelationship(item.account.id, rel); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index 59e604952..82b13b21b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -934,17 +934,20 @@ public class UiUtils { } - public static void handleFollowRequest(Activity activity, Account account, String accountID, @Nullable String notificationID, boolean accepted, Relationship relationship, Consumer resultCallback) { + public static void handleFollowRequest(Activity activity, Account account, String accountID, @Nullable String notificationID, boolean accepted, Relationship relationship, Consumer progressCallback, Consumer resultCallback) { + progressCallback.accept(true); if (accepted) { new AuthorizeFollowRequest(account.id).setCallback(new Callback<>() { @Override public void onSuccess(Relationship rel) { E.post(new FollowRequestHandledEvent(accountID, true, account, rel)); + progressCallback.accept(false); resultCallback.accept(rel); } @Override public void onError(ErrorResponse error) { + progressCallback.accept(false); resultCallback.accept(relationship); error.showToast(activity); } @@ -956,11 +959,13 @@ public class UiUtils { E.post(new FollowRequestHandledEvent(accountID, false, account, rel)); if (notificationID != null) E.post(new NotificationDeletedEvent(notificationID)); + progressCallback.accept(false); resultCallback.accept(rel); } @Override public void onError(ErrorResponse error) { + progressCallback.accept(false); resultCallback.accept(relationship); error.showToast(activity); }