mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-11 18:57:11 +01:00
Switch between all logged-in reddit accounts is available.
This commit is contained in:
parent
e542ac5138
commit
85597a82d0
@ -35,6 +35,9 @@ public interface AccountDao {
|
||||
"karma = :karma WHERE username = :username")
|
||||
void updateAccountInfo(String username, String profileImageUrl, String bannerImageUrl, int karma);
|
||||
|
||||
@Query("SELECT * FROM accounts WHERE username != :username")
|
||||
LiveData<List<Account>> getAccountsExceptCurrentAccountLiveData(String username);
|
||||
@Query("SELECT * FROM accounts WHERE is_current_user = 0 ORDER BY username COLLATE NOCASE ASC")
|
||||
LiveData<List<Account>> getAccountsExceptCurrentAccountLiveData();
|
||||
|
||||
@Query("UPDATE accounts SET is_current_user = 1 WHERE username = :username")
|
||||
void markAccountCurrent(String username);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public class AccountRepository {
|
||||
AccountRepository(RedditDataRoomDatabase redditDataRoomDatabase, String username) {
|
||||
mAccountDao = redditDataRoomDatabase.accountDao();
|
||||
mAccountLiveData = mAccountDao.getAccountLiveData(username);
|
||||
mAccountsExceptCurrentAccountLiveData = mAccountDao.getAccountsExceptCurrentAccountLiveData(username);
|
||||
mAccountsExceptCurrentAccountLiveData = mAccountDao.getAccountsExceptCurrentAccountLiveData();
|
||||
}
|
||||
|
||||
LiveData<Account> getAccountLiveData() {
|
||||
|
@ -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);
|
||||
|
@ -0,0 +1,32 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
|
||||
class SwitchAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||
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();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user