From 4aee78984b068cda65aecc2dea8ea202a08fe9ff Mon Sep 17 00:00:00 2001 From: Filip Misztal Date: Mon, 29 Jan 2024 14:37:20 +0100 Subject: [PATCH] Return boolean value based on login prompt beeing shown or not (#106) Co-authored-by: filip-misztal --- .../java/com/schibsted/account/webflows/client/Client.kt | 7 ++++--- .../account/webflows/loginPrompt/LoginPromptManager.kt | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/webflows/src/main/java/com/schibsted/account/webflows/client/Client.kt b/webflows/src/main/java/com/schibsted/account/webflows/client/Client.kt index a7ffae5a..f855f9f0 100644 --- a/webflows/src/main/java/com/schibsted/account/webflows/client/Client.kt +++ b/webflows/src/main/java/com/schibsted/account/webflows/client/Client.kt @@ -320,23 +320,24 @@ class Client { * * @param supportFragmentManager Activity's Fragment manager. * @param isCancelable set if loginPrompt should be cancelable by user. + * @return true if login prompt is shown, false otherwise. */ @JvmOverloads suspend fun requestLoginPrompt( context: Context, supportFragmentManager: FragmentManager, isCancelable: Boolean = true - ) { + ) : Boolean { val internalSessionFound = hasSessionStorage(configuration.clientId) - if (!internalSessionFound && userHasSessionOnDevice(context.applicationContext)) { + return if (!internalSessionFound && userHasSessionOnDevice(context.applicationContext)) { LoginPromptManager( LoginPromptConfig( this.getAuthenticationIntent(context), isCancelable ) ).showLoginPromptIfAbsent(supportFragmentManager) - } + } else false } private suspend fun hasSessionStorage(clientId: String) = diff --git a/webflows/src/main/java/com/schibsted/account/webflows/loginPrompt/LoginPromptManager.kt b/webflows/src/main/java/com/schibsted/account/webflows/loginPrompt/LoginPromptManager.kt index efaae218..dcd4883d 100644 --- a/webflows/src/main/java/com/schibsted/account/webflows/loginPrompt/LoginPromptManager.kt +++ b/webflows/src/main/java/com/schibsted/account/webflows/loginPrompt/LoginPromptManager.kt @@ -20,14 +20,16 @@ internal class LoginPromptManager(private val loginPromptConfig: LoginPromptConf * Show login prompt. * * @param supportFragmentManager Calling entity's fragment manager. + * @return true if login prompt is shown, false otherwise. */ - fun showLoginPromptIfAbsent(supportFragmentManager: FragmentManager) { + fun showLoginPromptIfAbsent(supportFragmentManager: FragmentManager) : Boolean{ val loginPromptFragment = supportFragmentManager.findFragmentByTag(fragmentTag) as? LoginPromptFragment - if (loginPromptFragment == null) { + return if (loginPromptFragment == null) { initializeLoginPrompt(loginPromptConfig).show(supportFragmentManager, fragmentTag) - } + true + } else false } private fun initializeLoginPrompt(config: LoginPromptConfig): LoginPromptFragment =