From 87af312f541ea94cc47834d78995816dd886c528 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 19 Jun 2023 20:32:01 +0530 Subject: [PATCH] Always verify sessions before login Also avoid auto-login if saved account is anonymous and invalid as this results in fetching new account every time app is restarted as long as the validation fails resulting in rate-limiting. Signed-off-by: Aayush Gupta --- app/src/main/java/com/aurora/store/data/State.kt | 1 + .../com/aurora/store/view/ui/account/AccountActivity.kt | 6 +++++- .../java/com/aurora/store/view/ui/splash/SplashActivity.kt | 7 ++++++- .../java/com/aurora/store/viewmodel/auth/AuthViewModel.kt | 2 +- app/src/main/res/layout/activity_account.xml | 4 +++- app/src/main/res/layout/activity_splash.xml | 2 ++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/State.kt b/app/src/main/java/com/aurora/store/data/State.kt index b5f86bd73..3a5cd0eaf 100644 --- a/app/src/main/java/com/aurora/store/data/State.kt +++ b/app/src/main/java/com/aurora/store/data/State.kt @@ -41,5 +41,6 @@ sealed class AuthState { object SignedOut : AuthState() object Valid : AuthState() object Fetching: AuthState() + object InValid: AuthState() data class Status(val status: String?) : AuthState() } \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/account/AccountActivity.kt b/app/src/main/java/com/aurora/store/view/ui/account/AccountActivity.kt index 6a8c3d0d5..59e3c9dd1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/account/AccountActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/account/AccountActivity.kt @@ -91,7 +91,11 @@ class AccountActivity : BaseActivity() { updateStatus(getString(R.string.requesting_new_session)) } AuthState.Valid -> { + updateContents() + } + AuthState.InValid -> { + updateStatus(getString(R.string.failed_validating_account)) } AuthState.Available -> { @@ -105,7 +109,7 @@ class AccountActivity : BaseActivity() { } AuthState.SignedIn -> { - updateContents() + VM.observe() } AuthState.SignedOut -> { diff --git a/app/src/main/java/com/aurora/store/view/ui/splash/SplashActivity.kt b/app/src/main/java/com/aurora/store/view/ui/splash/SplashActivity.kt index bc0206c9e..58e022cb8 100644 --- a/app/src/main/java/com/aurora/store/view/ui/splash/SplashActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/splash/SplashActivity.kt @@ -102,6 +102,11 @@ class SplashActivity : BaseActivity() { moveToContent() } + AuthState.InValid -> { + updateStatus(getString(R.string.failed_validating_account)) + updateActionLayout(true) + } + AuthState.Available -> { updateStatus(getString(R.string.session_verifying)) updateActionLayout(false) @@ -113,7 +118,7 @@ class SplashActivity : BaseActivity() { } AuthState.SignedIn -> { - moveToContent() + VM.observe() } AuthState.SignedOut -> { diff --git a/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt index 741c43cbe..7f71d74f7 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/auth/AuthViewModel.kt @@ -215,7 +215,7 @@ class AuthViewModel(application: Application) : BaseAndroidViewModel(application buildGoogleAuthData(email, aasToken) } AccountType.ANONYMOUS -> { - buildAnonymousAuthData() + liveData.postValue(AuthState.InValid) } } } diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index 466313712..568f63764 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -156,7 +156,9 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" - android:layout_marginTop="@dimen/margin_small" + android:layout_marginHorizontal="@dimen/margin_large" + android:layout_marginVertical="@dimen/margin_small" + android:maxLines="2" android:textAlignment="center" tools:text="Status" /> diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index e4f2f389a..12226ab7d 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -64,6 +64,8 @@ android:layout_height="wrap_content" android:layout_below="@id/txt_title" android:layout_centerHorizontal="true" + android:layout_marginHorizontal="@dimen/margin_large" + android:maxLines="2" android:textAlignment="center" tools:text="Sign in first" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 959f80997..8c108b530 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -364,4 +364,5 @@ Checking for updates Automated updates check Automatically check & notify for new app updates periodically + Failed to validate account, might be rate-limited.\nPlease login again!