diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java index 4a5cfb74..8c252a6b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java @@ -1,20 +1,21 @@ package ml.docilealligator.infinityforreddit.account; -import android.os.AsyncTask; - import androidx.lifecycle.LiveData; import java.util.List; +import java.util.concurrent.Executor; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; public class AccountRepository { + private final Executor mExecutor; private final AccountDao mAccountDao; private final LiveData> mAccountsExceptCurrentAccountLiveData; private final LiveData mCurrentAccountLiveData; private final LiveData> mAllAccountsLiveData; - AccountRepository(RedditDataRoomDatabase redditDataRoomDatabase) { + AccountRepository(Executor executor, RedditDataRoomDatabase redditDataRoomDatabase) { + mExecutor = executor; mAccountDao = redditDataRoomDatabase.accountDao(); mAccountsExceptCurrentAccountLiveData = mAccountDao.getAccountsExceptCurrentAccountLiveData(); mCurrentAccountLiveData = mAccountDao.getCurrentAccountLiveData(); @@ -33,22 +34,7 @@ public class AccountRepository { return mAllAccountsLiveData; } - public void insert(Account Account) { - new InsertAsyncTask(mAccountDao).execute(Account); - } - - private static class InsertAsyncTask extends AsyncTask { - - private final AccountDao mAsyncTaskDao; - - InsertAsyncTask(AccountDao dao) { - mAsyncTaskDao = dao; - } - - @Override - protected Void doInBackground(final Account... params) { - mAsyncTaskDao.insert(params[0]); - return null; - } + public void insert(Account account) { + mExecutor.execute(() -> mAccountDao.insert(account)); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java index bc43fa28..ceb3209b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import java.util.List; +import java.util.concurrent.Executor; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; @@ -14,8 +15,8 @@ public class AccountViewModel extends ViewModel { private final LiveData mCurrentAccountLiveData; private final LiveData> mAllAccountsLiveData; - public AccountViewModel(RedditDataRoomDatabase redditDataRoomDatabase) { - mAccountRepository = new AccountRepository(redditDataRoomDatabase); + public AccountViewModel(Executor executor, RedditDataRoomDatabase redditDataRoomDatabase) { + mAccountRepository = new AccountRepository(executor, redditDataRoomDatabase); mAccountsExceptCurrentAccountLiveData = mAccountRepository.getAccountsExceptCurrentAccountLiveData(); mCurrentAccountLiveData = mAccountRepository.getCurrentAccountLiveData(); mAllAccountsLiveData = mAccountRepository.getAllAccountsLiveData(); @@ -39,16 +40,18 @@ public class AccountViewModel extends ViewModel { public static class Factory extends ViewModelProvider.NewInstanceFactory { + private final Executor mExecutor; private final RedditDataRoomDatabase mRedditDataRoomDatabase; - public Factory(RedditDataRoomDatabase redditDataRoomDatabase) { + public Factory(Executor executor, RedditDataRoomDatabase redditDataRoomDatabase) { + mExecutor = executor; mRedditDataRoomDatabase = redditDataRoomDatabase; } @Override public T create(Class modelClass) { //noinspection unchecked - return (T) new AccountViewModel(mRedditDataRoomDatabase); + return (T) new AccountViewModel(mExecutor, mRedditDataRoomDatabase); } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java index 5655605c..84e3904c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java @@ -973,7 +973,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb }); accountViewModel = new ViewModelProvider(this, - new AccountViewModel.Factory(mRedditDataRoomDatabase)).get(AccountViewModel.class); + new AccountViewModel.Factory(mExecutor, mRedditDataRoomDatabase)).get(AccountViewModel.class); accountViewModel.getAccountsExceptCurrentAccountLiveData().observe(this, adapter::changeAccountsDataset); accountViewModel.getCurrentAccountLiveData().observe(this, account -> { if (account != null) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/AccountChooserBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/AccountChooserBottomSheetFragment.java index 6eb23968..82d7bd8b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/AccountChooserBottomSheetFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/AccountChooserBottomSheetFragment.java @@ -45,6 +45,8 @@ public class AccountChooserBottomSheetFragment extends LandscapeExpandedBottomSh @Inject @Named("security") SharedPreferences sharedPreferences; + @Inject + Executor executor; BaseActivity activity; RecyclerView recyclerView; AccountChooserRecyclerViewAdapter adapter; @@ -85,7 +87,7 @@ public class AccountChooserBottomSheetFragment extends LandscapeExpandedBottomSh @NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); accountViewModel = new ViewModelProvider(AccountChooserBottomSheetFragment.this, - new AccountViewModel.Factory(redditDataRoomDatabase)).get(AccountViewModel.class); + new AccountViewModel.Factory(executor, redditDataRoomDatabase)).get(AccountViewModel.class); accountViewModel.getAllAccountsLiveData().observe(getViewLifecycleOwner(), accounts -> { adapter.changeAccountsDataset(accounts); }); @@ -109,7 +111,7 @@ public class AccountChooserBottomSheetFragment extends LandscapeExpandedBottomSh } } else { accountViewModel = new ViewModelProvider(this, - new AccountViewModel.Factory(redditDataRoomDatabase)).get(AccountViewModel.class); + new AccountViewModel.Factory(executor, redditDataRoomDatabase)).get(AccountViewModel.class); accountViewModel.getAllAccountsLiveData().observe(getViewLifecycleOwner(), accounts -> { adapter.changeAccountsDataset(accounts); });