Commit 9298f22b authored by Thomas's avatar Thomas
Browse files

Fix issue #482 - Warn when the app fails to add account into a list

parent 26bc658b
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -857,14 +857,22 @@ public class ProfileActivity extends BaseActivity {
                                                        relationship = newRelationShip;
                                                        updateAccount();
                                                        if (isChecked) {
                                                            timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
                                                            timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
                                                                if (!success) {
                                                                    Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
                                                                }
                                                            });
                                                        } else {
                                                            timelinesVM.deleteAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
                                                        }
                                                    });
                                        } else {
                                            if (isChecked) {
                                                timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
                                                timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
                                                    if (!success) {
                                                        Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
                                                    }
                                                });
                                            } else {
                                                timelinesVM.deleteAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
                                            }
+1 −1
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ public interface MastodonTimelinesService {
    //Add account in a list
    @FormUrlEncoded
    @POST("lists/{id}/accounts")
    Call<Void> addAccountsList(
    Call<Boolean> addAccountsList(
            @Header("Authorization") String token,
            @Path("id") String id,
            @Field("account_ids[]") List<String> account_ids
+12 −3
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ public class TimelinesVM extends AndroidViewModel {


    private MutableLiveData<List<Account>> accountListMutableLiveData;
    private MutableLiveData<Boolean> booleanMutableLiveData;
    private MutableLiveData<List<StatusDraft>> statusDraftListMutableLiveData;
    private MutableLiveData<Status> statusMutableLiveData;
    private MutableLiveData<Statuses> statusesMutableLiveData;
@@ -838,18 +839,26 @@ public class TimelinesVM extends AndroidViewModel {
     * @param listId     ID of the list
     * @param accountIds Array of account IDs to add to the list.
     */
    public void addAccountsList(@NonNull String instance, String token, @NonNull String listId, @NonNull List<String> accountIds) {
    public LiveData<Boolean> addAccountsList(@NonNull String instance, String token, @NonNull String listId, @NonNull List<String> accountIds) {
        MastodonTimelinesService mastodonTimelinesService = init(instance);
        booleanMutableLiveData = new MutableLiveData<>();
        new Thread(() -> {
            Call<Void> addAccountsListCall = mastodonTimelinesService.addAccountsList(token, listId, accountIds);
            Call<Boolean> addAccountsListCall = mastodonTimelinesService.addAccountsList(token, listId, accountIds);
            Boolean reply = null;
            if (addAccountsListCall != null) {
                try {
                    addAccountsListCall.execute();
                    Response<Boolean> response = addAccountsListCall.execute();
                    reply = response.isSuccessful();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            Handler mainHandler = new Handler(Looper.getMainLooper());
            Boolean finalReply = reply;
            Runnable myRunnable = () -> booleanMutableLiveData.setValue(finalReply);
            mainHandler.post(myRunnable);
        }).start();
        return booleanMutableLiveData;
    }

    /**
+1 −0
Original line number Diff line number Diff line
@@ -1898,4 +1898,5 @@
    <string name="add_keyword">Add keyword</string>
    <string name="show_anyway">Show anyway</string>
    <string name="filtered_by">Filtered: %1$s</string>
    <string name="toast_error_add_to_list">The app failed to add the account into the list!</string>
</resources>
 No newline at end of file