diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/user/FetchUserFlairs.java b/app/src/main/java/ml/docilealligator/infinityforreddit/user/FetchUserFlairs.java index 69bc74e2..25776379 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/user/FetchUserFlairs.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/user/FetchUserFlairs.java @@ -4,6 +4,7 @@ import android.os.Handler; import android.text.Html; import androidx.annotation.Nullable; +import androidx.annotation.WorkerThread; import org.json.JSONArray; import org.json.JSONException; @@ -45,6 +46,7 @@ public class FetchUserFlairs { }); } + @WorkerThread private static ArrayList parseUserFlairs(String response) { try { JSONArray jsonArray = new JSONArray(response); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/user/UserFollowing.java b/app/src/main/java/ml/docilealligator/infinityforreddit/user/UserFollowing.java index dd1446b6..e1c49a3e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/user/UserFollowing.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/user/UserFollowing.java @@ -1,6 +1,5 @@ package ml.docilealligator.infinityforreddit.user; -import android.os.AsyncTask; import android.os.Handler; import androidx.annotation.NonNull; @@ -89,7 +88,11 @@ public class UserFollowing { FetchUserData.fetchUserData(executor, handler, retrofit, username, new FetchUserData.FetchUserDataListener() { @Override public void onFetchUserDataSuccess(UserData userData, int inboxCount) { - new UpdateSubscriptionAsyncTask(subscribedUserDao, userData, accountName, true).execute(); + executor.execute(() -> { + SubscribedUserData subscribedUserData = new SubscribedUserData(userData.getName(), userData.getIconUrl(), + accountName, false); + subscribedUserDao.insert(subscribedUserData); + }); } @Override @@ -97,10 +100,13 @@ public class UserFollowing { } }); + userFollowingListener.onUserFollowingSuccess(); } else { - new UpdateSubscriptionAsyncTask(subscribedUserDao, username, accountName, false).execute(); + executor.execute(() -> { + subscribedUserDao.deleteSubscribedUser(username, accountName); + handler.post(userFollowingListener::onUserFollowingSuccess); + }); } - userFollowingListener.onUserFollowingSuccess(); } else { userFollowingListener.onUserFollowingFail(); } @@ -118,40 +124,4 @@ public class UserFollowing { void onUserFollowingFail(); } - - private static class UpdateSubscriptionAsyncTask extends AsyncTask { - - private final SubscribedUserDao subscribedUserDao; - private String username; - private final String accountName; - private SubscribedUserData subscribedUserData; - private final boolean isSubscribing; - - UpdateSubscriptionAsyncTask(SubscribedUserDao subscribedUserDao, String username, - @NonNull String accountName, boolean isSubscribing) { - this.subscribedUserDao = subscribedUserDao; - this.username = username; - this.accountName = accountName; - this.isSubscribing = isSubscribing; - } - - UpdateSubscriptionAsyncTask(SubscribedUserDao subscribedUserDao, UserData userData, - @NonNull String accountName, boolean isSubscribing) { - this.subscribedUserDao = subscribedUserDao; - this.subscribedUserData = new SubscribedUserData(userData.getName(), userData.getIconUrl(), - accountName, false); - this.accountName = accountName; - this.isSubscribing = isSubscribing; - } - - @Override - protected Void doInBackground(Void... voids) { - if (isSubscribing) { - subscribedUserDao.insert(subscribedUserData); - } else { - subscribedUserDao.deleteSubscribedUser(username, accountName); - } - return null; - } - } }