From 012dca977aa226cc273457e3ba0d9c30821510b0 Mon Sep 17 00:00:00 2001
From: Alex Ning <chineseperson5@gmail.com>
Date: Sat, 23 Jan 2021 23:07:54 +0800
Subject: Finally fixed java.lang.RuntimeException: Canvas: trying to draw too
 large bitmap. Rewrite some AsyncTasks using Executor.

---
 .../activities/AccountPostsActivity.java           |   7 --
 .../activities/CommentActivity.java                |   4 -
 .../activities/CreateMultiRedditActivity.java      |   3 -
 .../activities/CustomThemeListingActivity.java     |  20 ++--
 .../activities/CustomizeThemeActivity.java         |  29 ++---
 .../activities/EditCommentActivity.java            |   7 +-
 .../activities/EditMultiRedditActivity.java        |   4 -
 .../activities/EditPostActivity.java               |   6 +-
 .../activities/GiveAwardActivity.java              |   5 +-
 .../activities/ViewPostDetailActivity.java         |   1 -
 .../CommentAndPostRecyclerViewAdapter.java         |  12 +--
 .../adapters/PostRecyclerViewAdapter.java          |   7 +-
 .../asynctasks/GetCustomTheme.java                 |  45 ++++++++
 .../asynctasks/GetCustomThemeAsyncTask.java        |  60 -----------
 .../asynctasks/InsertCustomTheme.java              |  56 ++++++++++
 .../asynctasks/InsertCustomThemeAsyncTask.java     |  80 --------------
 .../infinityforreddit/award/GiveAward.java         | 118 ++++++++-------------
 .../CommentMoreBottomSheetFragment.java            |   1 -
 18 files changed, 200 insertions(+), 265 deletions(-)
 create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomTheme.java
 delete mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomThemeAsyncTask.java
 create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomTheme.java
 delete mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomThemeAsyncTask.java

(limited to 'app/src')

diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java
index ac328bba..7f4642ef 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java
@@ -22,8 +22,6 @@ import com.r0adkll.slidr.Slidr;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.concurrent.Executor;
-
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -33,7 +31,6 @@ import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
 import ml.docilealligator.infinityforreddit.FragmentCommunicator;
 import ml.docilealligator.infinityforreddit.Infinity;
 import ml.docilealligator.infinityforreddit.R;
-import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
 import ml.docilealligator.infinityforreddit.SortType;
 import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
 import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostLayoutBottomSheetFragment;
@@ -61,8 +58,6 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
     @BindView(R.id.toolbar_account_posts_activity)
     Toolbar toolbar;
     @Inject
-    RedditDataRoomDatabase mRedditDataRoomDatabase;
-    @Inject
     @Named("default")
     SharedPreferences mSharedPreferences;
     @Inject
@@ -73,8 +68,6 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
     SharedPreferences mCurrentAccountSharedPreferences;
     @Inject
     CustomThemeWrapper mCustomThemeWrapper;
-    @Inject
-    Executor mExecutor;
     private boolean isInLazyMode = false;
     private String mAccessToken;
     private String mAccountName;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
index f8f4c4e0..44c393ff 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
@@ -32,8 +32,6 @@ import org.commonmark.ext.gfm.tables.TableBlock;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.concurrent.Executor;
-
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -101,8 +99,6 @@ public class CommentActivity extends BaseActivity {
     SharedPreferences mCurrentAccountSharedPreferences;
     @Inject
     CustomThemeWrapper mCustomThemeWrapper;
-    @Inject
-    Executor mExecutor;
     private String mAccessToken;
     private String parentFullname;
     private int parentDepth;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java
index 8898c55b..c9928e5c 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java
@@ -23,7 +23,6 @@ import com.google.android.material.snackbar.Snackbar;
 import com.r0adkll.slidr.Slidr;
 
 import java.util.ArrayList;
-import java.util.concurrent.Executor;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -78,8 +77,6 @@ public class CreateMultiRedditActivity extends BaseActivity {
     SharedPreferences mCurrentAccountSharedPreferences;
     @Inject
     CustomThemeWrapper mCustomThemeWrapper;
-    @Inject
-    Executor mExecutor;
     private String mAccessToken;
     private String mAccountName;
     private ArrayList<String> mSubreddits;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java
index a42c3fa4..3a8ffae1 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java
@@ -5,6 +5,7 @@ import android.content.ClipboardManager;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
@@ -29,6 +30,8 @@ import com.google.gson.JsonSyntaxException;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
+import java.util.concurrent.Executor;
+
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -37,8 +40,8 @@ import butterknife.ButterKnife;
 import ml.docilealligator.infinityforreddit.adapters.CustomThemeListingRecyclerViewAdapter;
 import ml.docilealligator.infinityforreddit.asynctasks.ChangeThemeNameAsyncTask;
 import ml.docilealligator.infinityforreddit.asynctasks.DeleteThemeAsyncTask;
-import ml.docilealligator.infinityforreddit.asynctasks.GetCustomThemeAsyncTask;
-import ml.docilealligator.infinityforreddit.asynctasks.InsertCustomThemeAsyncTask;
+import ml.docilealligator.infinityforreddit.asynctasks.GetCustomTheme;
+import ml.docilealligator.infinityforreddit.asynctasks.InsertCustomTheme;
 import ml.docilealligator.infinityforreddit.bottomsheetfragments.CreateThemeBottomSheetFragment;
 import ml.docilealligator.infinityforreddit.bottomsheetfragments.CustomThemeOptionsBottomSheetFragment;
 import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
@@ -82,6 +85,8 @@ public class CustomThemeListingActivity extends BaseActivity implements
     @Inject
     @Named("amoled_theme")
     SharedPreferences amoledThemeSharedPreferences;
+    @Inject
+    Executor executor;
     public CustomThemeViewModel customThemeViewModel;
 
     @Override
@@ -183,7 +188,8 @@ public class CustomThemeListingActivity extends BaseActivity implements
 
     @Override
     public void shareTheme(String themeName) {
-        new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeName, customTheme -> {
+        GetCustomTheme.getCustomTheme(executor, new Handler(), redditDataRoomDatabase, themeName,
+                customTheme -> {
             if (customTheme != null) {
                 String jsonModel = customTheme.getJSONModel();
                 ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
@@ -197,7 +203,7 @@ public class CustomThemeListingActivity extends BaseActivity implements
             } else {
                 Snackbar.make(coordinatorLayout, R.string.cannot_find_theme, Snackbar.LENGTH_SHORT).show();
             }
-        }).execute();
+        });
     }
 
     @Override
@@ -277,9 +283,9 @@ public class CustomThemeListingActivity extends BaseActivity implements
     }
 
     private void checkDuplicateAndImportTheme(CustomTheme customTheme, boolean checkDuplicate) {
-        new InsertCustomThemeAsyncTask(redditDataRoomDatabase, lightThemeSharedPreferences,
+        InsertCustomTheme.insertCustomTheme(executor, new Handler(), redditDataRoomDatabase, lightThemeSharedPreferences,
                 darkThemeSharedPreferences, amoledThemeSharedPreferences, customTheme, checkDuplicate,
-                new InsertCustomThemeAsyncTask.InsertCustomThemeAsyncTaskListener() {
+                new InsertCustomTheme.InsertCustomThemeListener() {
                     @Override
                     public void success() {
                         Toast.makeText(CustomThemeListingActivity.this, R.string.import_theme_success, Toast.LENGTH_SHORT).show();
@@ -327,6 +333,6 @@ public class CustomThemeListingActivity extends BaseActivity implements
                                 })
                                 .show();
                     }
-                }).execute();
+                });
     }
 }
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java
index 6041d52f..fc238c34 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java
@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.Toast;
@@ -20,6 +21,7 @@ import com.google.android.material.snackbar.Snackbar;
 import org.greenrobot.eventbus.EventBus;
 
 import java.util.ArrayList;
+import java.util.concurrent.Executor;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -27,8 +29,8 @@ import javax.inject.Named;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import ml.docilealligator.infinityforreddit.adapters.CustomizeThemeRecyclerViewAdapter;
-import ml.docilealligator.infinityforreddit.asynctasks.GetCustomThemeAsyncTask;
-import ml.docilealligator.infinityforreddit.asynctasks.InsertCustomThemeAsyncTask;
+import ml.docilealligator.infinityforreddit.asynctasks.GetCustomTheme;
+import ml.docilealligator.infinityforreddit.asynctasks.InsertCustomTheme;
 import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
 import ml.docilealligator.infinityforreddit.customtheme.CustomThemeSettingsItem;
 import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
@@ -74,6 +76,8 @@ public class CustomizeThemeActivity extends BaseActivity {
     RedditDataRoomDatabase redditDataRoomDatabase;
     @Inject
     CustomThemeWrapper customThemeWrapper;
+    @Inject
+    Executor mExecutor;
 
     private String themeName;
     private boolean isPredefinedTheme;
@@ -112,8 +116,7 @@ public class CustomizeThemeActivity extends BaseActivity {
         if (customThemeSettingsItems == null) {
             if (getIntent().hasExtra(EXTRA_THEME_TYPE)) {
                 int themeType = getIntent().getIntExtra(EXTRA_THEME_TYPE, EXTRA_LIGHT_THEME);
-
-                new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeType, customTheme -> {
+                GetCustomTheme.getCustomTheme(mExecutor, new Handler(), redditDataRoomDatabase, themeType, customTheme -> {
                     if (customTheme == null) {
                         isPredefinedTheme = true;
                         switch (themeType) {
@@ -147,7 +150,7 @@ public class CustomizeThemeActivity extends BaseActivity {
                     adapter = new CustomizeThemeRecyclerViewAdapter(this, themeName, isPredefinedTheme);
                     recyclerView.setAdapter(adapter);
                     adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
-                }).execute();
+                });
             } else {
                 isPredefinedTheme = getIntent().getBooleanExtra(EXTRA_IS_PREDEFIINED_THEME, false);
                 themeName = getIntent().getStringExtra(EXTRA_THEME_NAME);
@@ -163,13 +166,13 @@ public class CustomizeThemeActivity extends BaseActivity {
                     recyclerView.setAdapter(adapter);
                     adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
                 } else {
-                    new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeName,
-                            customTheme -> {
+                    GetCustomTheme.getCustomTheme(mExecutor, new Handler(), redditDataRoomDatabase,
+                            themeName, customTheme -> {
                                 customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(
                                         CustomizeThemeActivity.this, customTheme, androidVersion);
 
                                 adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
-                            }).execute();
+                            });
                 }
             }
         } else {
@@ -206,13 +209,13 @@ public class CustomizeThemeActivity extends BaseActivity {
                     return true;
                 }
                 CustomTheme customTheme = CustomTheme.convertSettingsItemsToCustomTheme(customThemeSettingsItems, themeName);
-                new InsertCustomThemeAsyncTask(redditDataRoomDatabase, lightThemeSharedPreferences,
+                InsertCustomTheme.insertCustomTheme(mExecutor, new Handler(), redditDataRoomDatabase, lightThemeSharedPreferences,
                         darkThemeSharedPreferences, amoledThemeSharedPreferences, customTheme,
                         false, () -> {
-                    Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
-                    EventBus.getDefault().post(new RecreateActivityEvent());
-                    finish();
-                }).execute();
+                            Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
+                            EventBus.getDefault().post(new RecreateActivityEvent());
+                            finish();
+                        });
             }
 
             return true;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
index dd57f763..368d58cc 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
@@ -39,6 +39,7 @@ import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
 import ml.docilealligator.infinityforreddit.Infinity;
 import ml.docilealligator.infinityforreddit.R;
 import ml.docilealligator.infinityforreddit.utils.APIUtils;
+import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
 import ml.docilealligator.infinityforreddit.utils.Utils;
 import retrofit2.Call;
 import retrofit2.Callback;
@@ -49,7 +50,6 @@ public class EditCommentActivity extends BaseActivity {
 
     public static final String EXTRA_CONTENT = "EC";
     public static final String EXTRA_FULLNAME = "EF";
-    public static final String EXTRA_ACCESS_TOKEN = "EAT";
     public static final String EXTRA_POSITION = "EP";
 
     static final String EXTRA_EDITED_COMMENT_CONTENT = "EECC";
@@ -72,6 +72,9 @@ public class EditCommentActivity extends BaseActivity {
     @Named("default")
     SharedPreferences mSharedPreferences;
     @Inject
+    @Named("current_account")
+    SharedPreferences mCurrentAccountSharedPreferences;
+    @Inject
     CustomThemeWrapper mCustomThemeWrapper;
     private String mFullName;
     private String mAccessToken;
@@ -102,7 +105,7 @@ public class EditCommentActivity extends BaseActivity {
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
         mFullName = getIntent().getStringExtra(EXTRA_FULLNAME);
-        mAccessToken = getIntent().getStringExtra(EXTRA_ACCESS_TOKEN);
+        mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
         mCommentContent = getIntent().getStringExtra(EXTRA_CONTENT);
         contentEditText.setText(mCommentContent);
 
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java
index 2ffcbd20..87ae213b 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java
@@ -24,8 +24,6 @@ import com.google.android.material.appbar.AppBarLayout;
 import com.google.android.material.snackbar.Snackbar;
 import com.r0adkll.slidr.Slidr;
 
-import java.util.concurrent.Executor;
-
 import javax.inject.Inject;
 import javax.inject.Named;
 
@@ -86,8 +84,6 @@ public class EditMultiRedditActivity extends BaseActivity {
     SharedPreferences mCurrentAccountSharedPreferences;
     @Inject
     CustomThemeWrapper mCustomThemeWrapper;
-    @Inject
-    Executor mExecutor;
     private String mAccessToken;
     private String mAccountName;
     private MultiReddit multiReddit;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java
index 4be61c75..0f40fcc7 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java
@@ -53,7 +53,6 @@ public class EditPostActivity extends BaseActivity {
     static final String EXTRA_TITLE = "ET";
     static final String EXTRA_CONTENT = "EC";
     static final String EXTRA_FULLNAME = "EF";
-    static final String EXTRA_ACCESS_TOKEN = "EAT";
 
     @BindView(R.id.coordinator_layout_edit_post_activity)
     CoordinatorLayout coordinatorLayout;
@@ -76,6 +75,9 @@ public class EditPostActivity extends BaseActivity {
     @Named("default")
     SharedPreferences mSharedPreferences;
     @Inject
+    @Named("current_account")
+    SharedPreferences mCurrentAccountSharedPreferences;
+    @Inject
     CustomThemeWrapper mCustomThemeWrapper;
     private String mFullName;
     private String mAccessToken;
@@ -110,7 +112,7 @@ public class EditPostActivity extends BaseActivity {
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
         mFullName = getIntent().getStringExtra(EXTRA_FULLNAME);
-        mAccessToken = getIntent().getStringExtra(EXTRA_ACCESS_TOKEN);
+        mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
         titleTextView.setText(getIntent().getStringExtra(EXTRA_TITLE));
         mPostContent = getIntent().getStringExtra(EXTRA_CONTENT);
         contentEditText.setText(mPostContent);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/GiveAwardActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/GiveAwardActivity.java
index a5b27c2d..a3cc4cdb 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/GiveAwardActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/GiveAwardActivity.java
@@ -7,6 +7,7 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
@@ -122,8 +123,8 @@ public class GiveAwardActivity extends BaseActivity {
                     .setPositiveButton(R.string.yes, (dialogInterface, i) -> {
                         boolean isAnonymous = switchMaterial.isChecked();
 
-                        GiveAward.giveAwardV2(mOauthRetrofit, mAccessToken, thingFullname, award.getId(),
-                                isAnonymous, new GiveAward.GiveAwardListener() {
+                        GiveAward.giveAwardV2(mExecutor, new Handler(), mOauthRetrofit, mAccessToken,
+                                thingFullname, award.getId(), isAnonymous, new GiveAward.GiveAwardListener() {
                                     @Override
                                     public void success(String awardsHTML, int awardCount) {
                                         Intent data = new Intent();
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
index 670a2a1e..30100d86 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
@@ -1612,7 +1612,6 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
                 return true;
             case R.id.action_edit_view_post_detail_activity:
                 Intent editPostIntent = new Intent(this, EditPostActivity.class);
-                editPostIntent.putExtra(EditPostActivity.EXTRA_ACCESS_TOKEN, mAccessToken);
                 editPostIntent.putExtra(EditPostActivity.EXTRA_FULLNAME, mPost.getFullName());
                 editPostIntent.putExtra(EditPostActivity.EXTRA_TITLE, mPost.getTitle());
                 editPostIntent.putExtra(EditPostActivity.EXTRA_CONTENT, mPost.getSelfText());
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
index 19080f65..0722da59 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentAndPostRecyclerViewAdapter.java
@@ -883,7 +883,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                 if (preview != null) {
                     ((PostDetailVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewWidth() / preview.getPreviewHeight());
                     if (mImageViewWidth > preview.getPreviewWidth()) {
-                        mGlide.load(preview.getPreviewUrl()).override(Target.SIZE_ORIGINAL).into(((PostDetailVideoAutoplayViewHolder) holder).previewImageView);
+                        mGlide.load(preview.getPreviewUrl()).override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostDetailVideoAutoplayViewHolder) holder).previewImageView);
                     } else {
                         mGlide.load(preview.getPreviewUrl()).into(((PostDetailVideoAutoplayViewHolder) holder).previewImageView);
                     }
@@ -1500,7 +1500,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                     preview.setPreviewWidth(preview.getPreviewWidth() / divisor);
                     preview.setPreviewHeight(preview.getPreviewHeight() / divisor);
                     divisor *= 2;
-                } while (preview.getPreviewWidth() * preview.getPreviewHeight() / divisor / divisor > 10_000_000);
+                } while (preview.getPreviewWidth() * preview.getPreviewHeight() > 10_000_000);
             }
 
             return preview;
@@ -1537,7 +1537,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                 imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
             } else {
                 if (mImageViewWidth > preview.getPreviewWidth()) {
-                    imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
+                    imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
                 } else {
                     imageRequestBuilder.into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
                 }
@@ -1569,7 +1569,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                         .into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
             } else {
                 if (mImageViewWidth > preview.getPreviewWidth()) {
-                    imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
+                    imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
                 } else {
                     imageRequestBuilder.into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
                 }
@@ -1601,7 +1601,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                         .into(((PostDetailLinkViewHolder) holder).mImageView);
             } else {
                 if (mImageViewWidth > preview.getPreviewWidth()) {
-                    imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostDetailLinkViewHolder) holder).mImageView);
+                    imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostDetailLinkViewHolder) holder).mImageView);
                 } else {
                     imageRequestBuilder.into(((PostDetailLinkViewHolder) holder).mImageView);
                 }
@@ -1632,7 +1632,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
                 imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(((PostDetailGalleryViewHolder) holder).mImageView);
             } else {
                 if (mImageViewWidth > preview.getPreviewWidth()) {
-                    imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostDetailGalleryViewHolder) holder).mImageView);
+                    imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostDetailGalleryViewHolder) holder).mImageView);
                 } else {
                     imageRequestBuilder.into(((PostDetailGalleryViewHolder) holder).mImageView);
                 }
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
index a830dd53..cce3db99 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
@@ -10,6 +10,7 @@ import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -1067,14 +1068,16 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
             }
 
             if (preview.getPreviewWidth() * preview.getPreviewHeight() > 10_000_000) {
+                Log.i("afasfasdf", "ssss " + preview.getPreviewUrl());
                 int divisor = 2;
                 do {
                     preview.setPreviewWidth(preview.getPreviewWidth() / divisor);
                     preview.setPreviewHeight(preview.getPreviewHeight() / divisor);
                     divisor *= 2;
-                } while (preview.getPreviewWidth() * preview.getPreviewHeight() / divisor / divisor > 10_000_000);
+                } while (preview.getPreviewWidth() * preview.getPreviewHeight() > 10_000_000);
             }
 
+            Log.i("afasfasdf", "s " + preview.getPreviewWidth() * preview.getPreviewHeight() + " " + preview.getPreviewHeight() + " " + preview.getPreviewWidth() + " " + preview.getPreviewUrl());
             return preview;
         }
 
@@ -1116,7 +1119,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
                             .into(((PostWithPreviewTypeViewHolder) holder).imageView);
                 } else {
                     if (mImageViewWidth > preview.getPreviewWidth()) {
-                        imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostWithPreviewTypeViewHolder) holder).imageView);
+                        imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostWithPreviewTypeViewHolder) holder).imageView);
                     } else {
                         imageRequestBuilder.into(((PostWithPreviewTypeViewHolder) holder).imageView);
                     }
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomTheme.java b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomTheme.java
new file mode 100644
index 00000000..9628d307
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomTheme.java
@@ -0,0 +1,45 @@
+package ml.docilealligator.infinityforreddit.asynctasks;
+
+import android.os.Handler;
+
+import java.util.concurrent.Executor;
+
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
+import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
+
+public class GetCustomTheme {
+    public static void getCustomTheme(Executor executor, Handler handler,
+                                      RedditDataRoomDatabase redditDataRoomDatabase,
+                                      String customThemeName,
+                                      GetCustomThemeListener getCustomThemeListener) {
+        executor.execute(() -> {
+            CustomTheme customTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customThemeName);
+            handler.post(() -> getCustomThemeListener.success(customTheme));
+        });
+    }
+
+    public static void getCustomTheme(Executor executor, Handler handler,
+                                      RedditDataRoomDatabase redditDataRoomDatabase,
+                                      int themeType,
+                                      GetCustomThemeListener getCustomThemeListener) {
+        executor.execute(() -> {
+            CustomTheme customTheme;
+            switch (themeType) {
+                case CustomThemeSharedPreferencesUtils.DARK:
+                    customTheme = redditDataRoomDatabase.customThemeDao().getDarkCustomTheme();
+                    break;
+                case CustomThemeSharedPreferencesUtils.AMOLED:
+                    customTheme = redditDataRoomDatabase.customThemeDao().getAmoledCustomTheme();
+                    break;
+                default:
+                    customTheme = redditDataRoomDatabase.customThemeDao().getLightCustomTheme();
+            }
+            handler.post(() -> getCustomThemeListener.success(customTheme));
+        });
+    }
+
+    public interface GetCustomThemeListener {
+        void success(CustomTheme customTheme);
+    }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomThemeAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomThemeAsyncTask.java
deleted file mode 100644
index 62e18f87..00000000
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/GetCustomThemeAsyncTask.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package ml.docilealligator.infinityforreddit.asynctasks;
-
-import android.os.AsyncTask;
-
-import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
-import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
-import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
-
-public class GetCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
-    private RedditDataRoomDatabase redditDataRoomDatabase;
-    private String customThemeName;
-    private int themeType;
-    private GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener;
-    private CustomTheme customTheme;
-
-    public interface GetCustomThemeAsyncTaskListener {
-        void success(CustomTheme customTheme);
-    }
-
-    public GetCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
-                                   String customThemeName,
-                                   GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener) {
-        this.redditDataRoomDatabase = redditDataRoomDatabase;
-        this.customThemeName = customThemeName;
-        this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
-    }
-
-    public GetCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
-                                   int themeType,
-                                   GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener) {
-        this.redditDataRoomDatabase = redditDataRoomDatabase;
-        this.themeType = themeType;
-        this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
-    }
-
-    @Override
-    protected Void doInBackground(Void... voids) {
-        if (customThemeName != null) {
-            customTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customThemeName);
-        } else {
-            switch (themeType) {
-                case CustomThemeSharedPreferencesUtils.DARK:
-                    customTheme = redditDataRoomDatabase.customThemeDao().getDarkCustomTheme();
-                    break;
-                case CustomThemeSharedPreferencesUtils.AMOLED:
-                    customTheme = redditDataRoomDatabase.customThemeDao().getAmoledCustomTheme();
-                    break;
-                default:
-                    customTheme = redditDataRoomDatabase.customThemeDao().getLightCustomTheme();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    protected void onPostExecute(Void aVoid) {
-        super.onPostExecute(aVoid);
-        getCustomThemeAsyncTaskListener.success(customTheme);
-    }
-}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomTheme.java b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomTheme.java
new file mode 100644
index 00000000..7527e0d1
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomTheme.java
@@ -0,0 +1,56 @@
+package ml.docilealligator.infinityforreddit.asynctasks;
+
+import android.content.SharedPreferences;
+import android.os.Handler;
+
+import java.util.concurrent.Executor;
+
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
+import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
+
+public class InsertCustomTheme {
+
+    public static void insertCustomTheme(Executor executor, Handler handler,
+                                         RedditDataRoomDatabase redditDataRoomDatabase,
+                                         SharedPreferences lightThemeSharedPreferences,
+                                         SharedPreferences darkThemeSharedPreferences,
+                                         SharedPreferences amoledThemeSharedPreferences,
+                                         CustomTheme customTheme, boolean checkDuplicate,
+                                         InsertCustomThemeListener insertCustomThemeListener) {
+        executor.execute(() -> {
+            if (checkDuplicate) {
+                if (redditDataRoomDatabase.customThemeDao().getCustomTheme(customTheme.name) != null) {
+                    handler.post(insertCustomThemeListener::duplicate);
+                }
+            }
+            CustomTheme previousTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customTheme.name);
+            if (customTheme.isLightTheme) {
+                redditDataRoomDatabase.customThemeDao().unsetLightTheme();
+                CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, lightThemeSharedPreferences);
+            } else if (previousTheme != null && previousTheme.isLightTheme) {
+                lightThemeSharedPreferences.edit().clear().apply();
+            }
+            if (customTheme.isDarkTheme) {
+                redditDataRoomDatabase.customThemeDao().unsetDarkTheme();
+                CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, darkThemeSharedPreferences);
+            } else if (previousTheme != null && previousTheme.isDarkTheme) {
+                darkThemeSharedPreferences.edit().clear().apply();
+            }
+            if (customTheme.isAmoledTheme) {
+                redditDataRoomDatabase.customThemeDao().unsetAmoledTheme();
+                CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, amoledThemeSharedPreferences);
+            } else if (previousTheme != null && previousTheme.isAmoledTheme) {
+                amoledThemeSharedPreferences.edit().clear().apply();
+            }
+            redditDataRoomDatabase.customThemeDao().insert(customTheme);
+
+            handler.post(insertCustomThemeListener::success);
+        });
+    }
+
+    public interface InsertCustomThemeListener {
+        void success();
+        default void duplicate() {}
+    }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomThemeAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomThemeAsyncTask.java
deleted file mode 100644
index 4e46eb47..00000000
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/InsertCustomThemeAsyncTask.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package ml.docilealligator.infinityforreddit.asynctasks;
-
-import android.content.SharedPreferences;
-import android.os.AsyncTask;
-
-import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
-import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
-import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
-
-public class InsertCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
-    private RedditDataRoomDatabase redditDataRoomDatabase;
-    private SharedPreferences lightThemeSharedPreferences;
-    private SharedPreferences darkThemeSharedPreferences;
-    private SharedPreferences amoledThemeSharedPreferences;
-    private CustomTheme customTheme;
-    private boolean checkDuplicate;
-    private InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener;
-    private boolean isDuplicate = false;
-
-    public interface InsertCustomThemeAsyncTaskListener {
-        void success();
-        default void duplicate() {}
-    }
-
-    public InsertCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
-                                      SharedPreferences lightThemeSharedPreferences,
-                                      SharedPreferences darkThemeSharedPreferences,
-                                      SharedPreferences amoledThemeSharedPreferences,
-                                      CustomTheme customTheme, boolean checkDuplicate,
-                                      InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener) {
-        this.redditDataRoomDatabase = redditDataRoomDatabase;
-        this.lightThemeSharedPreferences = lightThemeSharedPreferences;
-        this.darkThemeSharedPreferences = darkThemeSharedPreferences;
-        this.amoledThemeSharedPreferences = amoledThemeSharedPreferences;
-        this.customTheme = customTheme;
-        this.checkDuplicate = checkDuplicate;
-        this.insertCustomThemeAsyncTaskListener = insertCustomThemeAsyncTaskListener;
-    }
-
-    @Override
-    protected Void doInBackground(Void... voids) {
-        if (checkDuplicate) {
-            if (redditDataRoomDatabase.customThemeDao().getCustomTheme(customTheme.name) != null) {
-                isDuplicate = true;
-                return null;
-            }
-        }
-        CustomTheme previousTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customTheme.name);
-        if (customTheme.isLightTheme) {
-            redditDataRoomDatabase.customThemeDao().unsetLightTheme();
-            CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, lightThemeSharedPreferences);
-        } else if (previousTheme != null && previousTheme.isLightTheme) {
-            lightThemeSharedPreferences.edit().clear().apply();
-        }
-        if (customTheme.isDarkTheme) {
-            redditDataRoomDatabase.customThemeDao().unsetDarkTheme();
-            CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, darkThemeSharedPreferences);
-        } else if (previousTheme != null && previousTheme.isDarkTheme) {
-            darkThemeSharedPreferences.edit().clear().apply();
-        }
-        if (customTheme.isAmoledTheme) {
-            redditDataRoomDatabase.customThemeDao().unsetAmoledTheme();
-            CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, amoledThemeSharedPreferences);
-        } else if (previousTheme != null && previousTheme.isAmoledTheme) {
-            amoledThemeSharedPreferences.edit().clear().apply();
-        }
-        redditDataRoomDatabase.customThemeDao().insert(customTheme);
-        return null;
-    }
-
-    @Override
-    protected void onPostExecute(Void aVoid) {
-        super.onPostExecute(aVoid);
-        if (isDuplicate) {
-            insertCustomThemeAsyncTaskListener.duplicate();
-        } else {
-            insertCustomThemeAsyncTaskListener.success();
-        }
-    }
-}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/award/GiveAward.java b/app/src/main/java/ml/docilealligator/infinityforreddit/award/GiveAward.java
index a6d7724a..1b46bb08 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/award/GiveAward.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/award/GiveAward.java
@@ -1,6 +1,6 @@
 package ml.docilealligator.infinityforreddit.award;
 
-import android.os.AsyncTask;
+import android.os.Handler;
 import android.text.Html;
 
 import androidx.annotation.NonNull;
@@ -11,6 +11,7 @@ import org.json.JSONObject;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Executor;
 
 import ml.docilealligator.infinityforreddit.apis.RedditAPI;
 import ml.docilealligator.infinityforreddit.utils.APIUtils;
@@ -26,8 +27,9 @@ public class GiveAward {
         void failed(int code, String message);
     }
 
-    public static void giveAwardV2(Retrofit oauthRetrofit, String accessToken, String thingFullName, String awardId,
-                                 boolean isAnonymous, GiveAwardListener giveAwardListener) {
+    public static void giveAwardV2(Executor executor, Handler handler, Retrofit oauthRetrofit, String accessToken,
+                                   String thingFullName, String awardId, boolean isAnonymous,
+                                   GiveAwardListener giveAwardListener) {
         Map<String, String> params = new HashMap<>();
         params.put(APIUtils.GILD_TYPE, awardId);
         params.put(APIUtils.IS_ANONYMOUS, Boolean.toString(isAnonymous));
@@ -36,7 +38,7 @@ public class GiveAward {
             @Override
             public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
                 if (response.isSuccessful()) {
-                    new ParseResponseAsyncTask(response.body(), new ParseResponseAsyncTask.ParseResponseAsyncTaskListener() {
+                    executor.execute(() -> parseResponse(handler, response.body(), new ParseResponseAsyncTaskListener() {
                         @Override
                         public void success(String awardsHTML, int awardCount) {
                             giveAwardListener.success(awardsHTML, awardCount);
@@ -46,7 +48,7 @@ public class GiveAward {
                         public void failed(String errorMessage) {
                             giveAwardListener.failed(response.code(), response.body());
                         }
-                    }).execute();
+                    }));
                 } else {
                     giveAwardListener.failed(response.code(), response.body());
                 }
@@ -59,76 +61,50 @@ public class GiveAward {
         });
     }
 
-    private static class ParseResponseAsyncTask extends AsyncTask<Void, Void, Void>  {
-
-        private String response;
-        private boolean error = false;
-        private String awardsHTML;
-        private int awardCount;
-        private String errorMessage = null;
-        private ParseResponseAsyncTaskListener parseResponseAsyncTaskListener;
-
-        public ParseResponseAsyncTask(String response, ParseResponseAsyncTaskListener parseResponseAsyncTaskListener) {
-            this.response = response;
-            this.parseResponseAsyncTaskListener = parseResponseAsyncTaskListener;
-        }
-
-        interface ParseResponseAsyncTaskListener {
-            void success(String awardsHTML, int awardCount);
-            void failed(String errorMessage);
-        }
-
-        @Override
-        protected Void doInBackground(Void... voids) {
-            try {
-                //Check for error
-                JSONObject responseObject = new JSONObject(response).getJSONObject(JSONUtils.JSON_KEY);
-
-                if (responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() != 0) {
-                    JSONArray errorArray = responseObject.getJSONArray(JSONUtils.ERRORS_KEY)
-                            .getJSONArray(responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() - 1);
-                    if (errorArray.length() != 0) {
-                        String errorString;
-                        if (errorArray.length() >= 2) {
-                            errorString = errorArray.getString(1);
-                        } else {
-                            errorString = errorArray.getString(0);
-                        }
-                        errorMessage = errorString.substring(0, 1).toUpperCase() + errorString.substring(1);
-                        error = true;
-                        return null;
+    private static void parseResponse(Handler handler, String response, ParseResponseAsyncTaskListener parseResponseAsyncTaskListener) {
+        try {
+            //Check for error
+            JSONObject responseObject = new JSONObject(response).getJSONObject(JSONUtils.JSON_KEY);
+
+            if (responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() != 0) {
+                JSONArray errorArray = responseObject.getJSONArray(JSONUtils.ERRORS_KEY)
+                        .getJSONArray(responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() - 1);
+                if (errorArray.length() != 0) {
+                    String errorString;
+                    if (errorArray.length() >= 2) {
+                        errorString = errorArray.getString(1);
+                    } else {
+                        errorString = errorArray.getString(0);
                     }
+                    String errorMessage = errorString.substring(0, 1).toUpperCase() + errorString.substring(1);
+                    handler.post(() -> parseResponseAsyncTaskListener.failed(errorMessage));
                 }
-            } catch (JSONException ignore) {}
-
-            try {
-                JSONArray awardingsArray = new JSONObject(response).getJSONArray(JSONUtils.ALL_AWARDINGS_KEY);
-                StringBuilder awardingsBuilder = new StringBuilder();
-                awardCount = 0;
-                for (int i = 0; i < awardingsArray.length(); i++) {
-                    JSONObject award = awardingsArray.getJSONObject(i);
-                    int count = award.getInt(JSONUtils.COUNT_KEY);
-                    awardCount += count;
-                    String iconUrl = award.getString(JSONUtils.ICON_URL_KEY);
-                    awardingsBuilder.append("<img src=\"").append(Html.escapeHtml(iconUrl)).append("\"> ").append("x").append(count).append(" ");
-                }
-
-                awardsHTML = awardingsBuilder.toString();
-            } catch (JSONException e) {
-                e.printStackTrace();
-                error = true;
             }
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void aVoid) {
-            super.onPostExecute(aVoid);
-            if (error) {
-                parseResponseAsyncTaskListener.failed(errorMessage);
-            } else {
-                parseResponseAsyncTaskListener.success(awardsHTML, awardCount);
+        } catch (JSONException ignore) {}
+
+        try {
+            JSONArray awardingsArray = new JSONObject(response).getJSONArray(JSONUtils.ALL_AWARDINGS_KEY);
+            StringBuilder awardingsBuilder = new StringBuilder();
+            int awardCount = 0;
+            for (int i = 0; i < awardingsArray.length(); i++) {
+                JSONObject award = awardingsArray.getJSONObject(i);
+                int count = award.getInt(JSONUtils.COUNT_KEY);
+                awardCount += count;
+                String iconUrl = award.getString(JSONUtils.ICON_URL_KEY);
+                awardingsBuilder.append("<img src=\"").append(Html.escapeHtml(iconUrl)).append("\"> ").append("x").append(count).append(" ");
             }
+
+            String awardsHTML = awardingsBuilder.toString();
+            int finalAwardCount = awardCount;
+            handler.post(() -> parseResponseAsyncTaskListener.success(awardsHTML, finalAwardCount));
+        } catch (JSONException e) {
+            e.printStackTrace();
+            handler.post(() -> parseResponseAsyncTaskListener.failed(null));
         }
     }
+
+    interface ParseResponseAsyncTaskListener {
+        void success(String awardsHTML, int awardCount);
+        void failed(String errorMessage);
+    }
 }
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
index 5f9b4aa6..d1826cf2 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/CommentMoreBottomSheetFragment.java
@@ -108,7 +108,6 @@ public class CommentMoreBottomSheetFragment extends RoundedBottomSheetDialogFrag
 
                 editTextView.setOnClickListener(view -> {
                     Intent intent = new Intent(activity, EditCommentActivity.class);
-                    intent.putExtra(EditCommentActivity.EXTRA_ACCESS_TOKEN, accessToken);
                     intent.putExtra(EditCommentActivity.EXTRA_FULLNAME, comment.getFullName());
                     intent.putExtra(EditCommentActivity.EXTRA_CONTENT, comment.getCommentMarkdown());
                     intent.putExtra(EditCommentActivity.EXTRA_POSITION, bundle.getInt(EXTRA_POSITION));
-- 
cgit v1.2.3