From 6793d41b552f244a08f6bfb0d0f610910b7567c9 Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Sun, 24 Aug 2025 17:33:56 +0700 Subject: [PATCH 1/3] Auto login if token is active --- .../org/smartregister/fhircore/quest/ui/login/LoginActivity.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/login/LoginActivity.kt b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/login/LoginActivity.kt index 3c645d33e32..7e8ddb9b61d 100644 --- a/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/login/LoginActivity.kt +++ b/android/quest/src/main/java/org/smartregister/fhircore/quest/ui/login/LoginActivity.kt @@ -87,6 +87,8 @@ open class LoginActivity : BaseMultiLanguageActivity() { ) { navigateToPinLogin(launchSetup = false) } + } else { + if (loginActivity.isRefreshTokenActive()) updateNavigateHome(true) } viewModelScope.launch { contentCache.invalidate() } navigateToHome.observe(loginActivity) { launchHomeScreen -> From d4bb0c20ad3a8a6b28cb24143caae0c59c892314 Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Sun, 24 Aug 2025 17:34:57 +0700 Subject: [PATCH 2/3] Prevents NPE on first time login On first time login, `account` will be null, then NPE crash happens. --- .../fhircore/engine/data/remote/shared/TokenAuthenticator.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt b/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt index c4abca4b5e1..caec690cd87 100644 --- a/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt +++ b/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt @@ -140,7 +140,10 @@ constructor( } } - fun isCurrentRefreshTokenActive() = isTokenActive(accountManager.getPassword(findAccount())) + fun isCurrentRefreshTokenActive(): Boolean { + val account = findAccount() ?: return false + return isTokenActive(accountManager.getPassword(account)) + } private fun buildOAuthPayload(grantType: String) = mutableMapOf( From 131b3ba3aaefdbda9143f1e64301bf7ebf1d5269 Mon Sep 17 00:00:00 2001 From: fikrimilano Date: Sun, 24 Aug 2025 17:37:32 +0700 Subject: [PATCH 3/3] Delete login credentials on logout Prevents a situation: from home screen to login screen, but then immediately goes back to home screen. --- .../fhircore/engine/data/remote/shared/TokenAuthenticator.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt b/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt index caec690cd87..a0af0de02a0 100644 --- a/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt +++ b/android/engine/src/main/java/org/smartregister/fhircore/engine/data/remote/shared/TokenAuthenticator.kt @@ -191,6 +191,7 @@ constructor( account.type, accountManager.peekAuthToken(account, AUTH_TOKEN_TYPE), ) + secureSharedPreference.deleteCredentials() Result.success(true) } else { Result.success(false)