From 4fe4b1e69213fb08cab70b65074b84b8f5de12ea Mon Sep 17 00:00:00 2001 From: Balazs Toldi Date: Mon, 24 Jul 2023 09:05:11 +0200 Subject: [PATCH] Profile page to display the correct info Fixes issue #6 Signed-off-by: Balazs Toldi --- .../infinityforlemmy/activities/LoginActivity.java | 9 +++++---- .../infinityforlemmy/activities/MainActivity.java | 13 +++++++++---- .../infinityforlemmy/asynctasks/SwitchAccount.java | 5 +++-- .../utils/SharedPreferencesUtils.java | 1 + 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java b/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java index 1f415199..d63a5db7 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/activities/LoginActivity.java @@ -30,16 +30,16 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import eu.toldi.infinityforlemmy.RetrofitHolder; -import eu.toldi.infinityforlemmy.dto.AccountLoginDTO; -import eu.toldi.infinityforlemmy.apis.LemmyAPI; import eu.toldi.infinityforlemmy.FetchMyInfo; import eu.toldi.infinityforlemmy.Infinity; import eu.toldi.infinityforlemmy.R; import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; +import eu.toldi.infinityforlemmy.RetrofitHolder; +import eu.toldi.infinityforlemmy.apis.LemmyAPI; import eu.toldi.infinityforlemmy.asynctasks.ParseAndInsertNewAccount; import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper; import eu.toldi.infinityforlemmy.customviews.slidr.Slidr; +import eu.toldi.infinityforlemmy.dto.AccountLoginDTO; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; import eu.toldi.infinityforlemmy.utils.Utils; import retrofit2.Call; @@ -157,7 +157,8 @@ public class LoginActivity extends BaseActivity { @Override public void onFetchMyInfoSuccess(String name,String display_name, String profileImageUrl, String bannerImageUrl) { mCurrentAccountSharedPreferences.edit().putString(SharedPreferencesUtils.ACCESS_TOKEN, accessToken) - .putString(SharedPreferencesUtils.ACCOUNT_NAME, name) + .putString(SharedPreferencesUtils.ACCOUNT_NAME, display_name) + .putString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, name) .putString(SharedPreferencesUtils.ACCOUNT_INSTANCE,instance) .putString(SharedPreferencesUtils.ACCOUNT_IMAGE_URL, profileImageUrl).apply(); ParseAndInsertNewAccount.parseAndInsertNewAccount(mExecutor, new Handler(), name,display_name, accessToken, profileImageUrl, bannerImageUrl, authCode,instance, mRedditDataRoomDatabase.accountDao(), diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java b/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java index b15d6e01..24aed023 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/activities/MainActivity.java @@ -217,6 +217,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb private Call subredditAutocompleteCall; private String mAccessToken; private String mAccountName; + + private String mAccountQualifiedName; private boolean mFetchUserInfoSuccess = false; private boolean mFetchSubscriptionsSuccess = false; private boolean mDrawerOnAccountSwitch = false; @@ -323,6 +325,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null); mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, null); + mAccountQualifiedName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, null); String instance = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_INSTANCE, null); if(instance != null) { mRetrofit.setBaseURL(instance); @@ -383,8 +386,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb WorkManager workManager = WorkManager.getInstance(this); if (mNewAccountName != null) { - if (mAccountName == null || !mAccountName.equals(mNewAccountName)) { - SwitchAccount.switchAccount(mRedditDataRoomDatabase,mRetrofit, mCurrentAccountSharedPreferences, + if (mAccountQualifiedName == null || !mAccountName.equals(mNewAccountName)) { + SwitchAccount.switchAccount(mRedditDataRoomDatabase, mRetrofit, mCurrentAccountSharedPreferences, mExecutor, new Handler(), mNewAccountName, newAccount -> { EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName())); Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show(); @@ -392,7 +395,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb mNewAccountName = null; if (newAccount != null) { mAccessToken = newAccount.getAccessToken(); - mAccountName = newAccount.getAccountName(); + mAccountName = newAccount.getDisplay_name(); + mAccountQualifiedName = newAccount.getAccountName(); } setNotification(workManager, notificationInterval, timeUnit, enableNotification); @@ -452,6 +456,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb case SharedPreferencesUtils.MAIN_ACTIVITY_BOTTOM_APP_BAR_OPTION_PROFILE: { Intent intent = new Intent(this, ViewUserDetailActivity.class); intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName); + intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, mAccountQualifiedName); intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, mAccountName); startActivity(intent); break; @@ -786,7 +791,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb if (stringId == R.string.profile) { intent = new Intent(MainActivity.this, ViewUserDetailActivity.class); intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName); - intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, mAccountName); + intent.putExtra(ViewUserDetailActivity.EXTRA_QUALIFIED_USER_NAME_KEY, mAccountQualifiedName); } else if (stringId == R.string.subscriptions) { intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class); } else if (stringId == R.string.multi_reddit) { diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/asynctasks/SwitchAccount.java b/app/src/main/java/eu/toldi/infinityforlemmy/asynctasks/SwitchAccount.java index 1657a2fa..24ade2b6 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/asynctasks/SwitchAccount.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/asynctasks/SwitchAccount.java @@ -5,9 +5,9 @@ import android.os.Handler; import java.util.concurrent.Executor; +import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; import eu.toldi.infinityforlemmy.RetrofitHolder; import eu.toldi.infinityforlemmy.account.Account; -import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; public class SwitchAccount { @@ -21,7 +21,8 @@ public class SwitchAccount { Account account = redditDataRoomDatabase.accountDao().getCurrentAccount(); currentAccountSharedPreferences.edit() .putString(SharedPreferencesUtils.ACCESS_TOKEN, account.getAccessToken()) - .putString(SharedPreferencesUtils.ACCOUNT_NAME, account.getAccountName()) + .putString(SharedPreferencesUtils.ACCOUNT_NAME, account.getDisplay_name()) + .putString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, account.getAccountName()) .putString(SharedPreferencesUtils.ACCOUNT_INSTANCE,account.getInstance_url()) .putString(SharedPreferencesUtils.ACCOUNT_IMAGE_URL, account.getProfileImageUrl()).apply(); retrofitHolder.setBaseURL(account.getInstance_url()); diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/utils/SharedPreferencesUtils.java b/app/src/main/java/eu/toldi/infinityforlemmy/utils/SharedPreferencesUtils.java index b6f50d7e..4e8bcbc0 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/utils/SharedPreferencesUtils.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/utils/SharedPreferencesUtils.java @@ -395,4 +395,5 @@ public class SharedPreferencesUtils { public static final String CONFIRM_TO_EXIT_LEGACY = "confirm_to_exit"; public static final String OPEN_LINK_IN_APP_LEGACY = "open_link_in_app"; public static final String ACCOUNT_INSTANCE = "account_instance"; + public static final String ACCOUNT_QUALIFIED_NAME = "account_qualified_name"; }