From 85597a82d065374955153c0481663fac2b0c3264 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Thu, 8 Aug 2019 20:19:38 +0800 Subject: Switch between all logged-in reddit accounts is available. --- .../infinityforreddit/MainActivity.java | 14 ++++++---- .../infinityforreddit/SwitchAccountAsyncTask.java | 32 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/SwitchAccountAsyncTask.java (limited to 'app/src/main/java/ml') diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java index 2f6c313b..5f5272f7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java @@ -191,7 +191,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe new AccountRecyclerViewAdapter.ItemSelectedListener() { @Override public void accountSelected(Account account) { - + new SwitchAccountAsyncTask(mRedditDataRoomDatabase, account.getUsername(), () -> relaunchActivity()).execute(); } @Override @@ -349,13 +349,17 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe } } + private void relaunchActivity() { + Intent intent = getIntent(); + finish(); + startActivity(intent); + overridePendingTransition(0, 0); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == LOGIN_ACTIVITY_REQUEST_CODE && resultCode == Activity.RESULT_OK) { - Intent intent = getIntent(); - finish(); - startActivity(intent); - overridePendingTransition(0, 0); + relaunchActivity(); } super.onActivityResult(requestCode, resultCode, data); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SwitchAccountAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SwitchAccountAsyncTask.java new file mode 100644 index 00000000..f5b9c37b --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SwitchAccountAsyncTask.java @@ -0,0 +1,32 @@ +package ml.docilealligator.infinityforreddit; + +import android.os.AsyncTask; + +class SwitchAccountAsyncTask extends AsyncTask { + interface SwitchAccountAsyncTaskListener { + void switched(); + } + + private RedditDataRoomDatabase redditDataRoomDatabase; + private String newAccountName; + private SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener; + + SwitchAccountAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String newAccountName, + SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener) { + this.redditDataRoomDatabase = redditDataRoomDatabase; + this.newAccountName = newAccountName; + this.switchAccountAsyncTaskListener = switchAccountAsyncTaskListener; + } + + @Override + protected Void doInBackground(Void... voids) { + redditDataRoomDatabase.accountDao().markAllAccountsNonCurrent(); + redditDataRoomDatabase.accountDao().markAccountCurrent(newAccountName); + return null; + } + + @Override + protected void onPostExecute(Void aVoid) { + switchAccountAsyncTaskListener.switched(); + } +} -- cgit v1.2.3