feat: add follow button on remote follower lists

NOTE: This doesn't actually load remote relationships, so its always going to be in the "follow" state.
This commit is contained in:
LucasGGamerM 2023-04-18 15:09:14 -03:00
parent 7c59b700da
commit b7b646f03a
2 changed files with 37 additions and 2 deletions

View File

@ -79,7 +79,10 @@ public abstract class BaseAccountListFragment extends RecyclerFragment<BaseAccou
if(refreshing){
relationships.clear();
}
loadRelationships(d);
if(!d.isEmpty() && !d.get(0).account.reloadWhenClicked){
loadRelationships(d);
}
super.onDataLoaded(d, more);
}
@ -242,7 +245,12 @@ public abstract class BaseAccountListFragment extends RecyclerFragment<BaseAccou
public void bindRelationship(){
Relationship rel=relationships.get(item.account.id);
if(rel==null || AccountSessionManager.getInstance().isSelf(accountID, item.account)){
button.setVisibility(View.GONE);
if(item.account.reloadWhenClicked){
button.setVisibility(View.VISIBLE);
button.setText(R.string.button_follow);
} else {
button.setVisibility(View.GONE);
}
}else{
button.setVisibility(View.VISIBLE);
UiUtils.setRelationshipToActionButton(rel, button);

View File

@ -759,6 +759,33 @@ public class UiUtils {
}
public static void performAccountAction(Activity activity, Account account, String accountID, Relationship relationship, Button button, Consumer<Boolean> progressCallback, Consumer<Relationship> resultCallback) {
if(relationship == null){
UiUtils.lookupAccount(button.getContext(), account, accountID, null, account1 -> {
if(account1 == null){
return;
}
progressCallback.accept(true);
new SetAccountFollowed(account1.id, true, true, false)
.setCallback(new Callback<>(){
@Override
public void onSuccess(Relationship result){
resultCallback.accept(result);
progressCallback.accept(false);
if(!result.following && !result.requested){
E.post(new RemoveAccountPostsEvent(accountID, account.id, true));
}
}
@Override
public void onError(ErrorResponse error){
error.showToast(activity);
progressCallback.accept(false);
}
})
.exec(accountID);
});
return;
}
if (relationship.blocking) {
confirmToggleBlockUser(activity, accountID, account, true, resultCallback);
}else if(relationship.muting){