From 04835efe967f737f18ae6858a4155e7dd2e16113 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 18 Sep 2025 15:27:20 +0200 Subject: [PATCH] Do not use MatrixAuthenticationService in RootFlowNode, only use SessionStore --- .../kotlin/io/element/android/appnav/RootFlowNode.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index c67496ef87..3f1d40335d 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -46,13 +46,13 @@ import io.element.android.libraries.architecture.waitForChildAttached import io.element.android.libraries.core.uri.ensureProtocol import io.element.android.libraries.deeplink.api.DeeplinkData import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator -import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.oidc.api.OidcAction import io.element.android.libraries.oidc.api.OidcActionFlow import io.element.android.libraries.sessionstorage.api.LoggedInState +import io.element.android.libraries.sessionstorage.api.SessionStore import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -64,7 +64,7 @@ import timber.log.Timber class RootFlowNode( @Assisted val buildContext: BuildContext, @Assisted plugins: List, - private val authenticationService: MatrixAuthenticationService, + private val sessionStore: SessionStore, private val accountProviderAccessControl: AccountProviderAccessControl, private val navStateFlowFactory: RootNavStateFlowFactory, private val matrixSessionCache: MatrixSessionCache, @@ -152,7 +152,7 @@ class RootFlowNode( onSuccess: (SessionId) -> Unit, onFailure: () -> Unit ) { - val latestSessionId = authenticationService.getLatestSessionId() + val latestSessionId = sessionStore.getLatestSessionId() if (latestSessionId == null) { onFailure() return @@ -268,7 +268,7 @@ class RootFlowNode( private suspend fun onLoginLink(params: LoginParams) { // Is there a session already? - val latestSessionId = authenticationService.getLatestSessionId() + val latestSessionId = sessionStore.getLatestSessionId() if (latestSessionId == null) { // No session, open login if (accountProviderAccessControl.isAllowedToConnectToAccountProvider(params.accountProvider.ensureProtocol())) { @@ -285,7 +285,7 @@ class RootFlowNode( private suspend fun onIncomingShare(intent: Intent) { // Is there a session already? - val latestSessionId = authenticationService.getLatestSessionId() + val latestSessionId = sessionStore.getLatestSessionId() if (latestSessionId == null) { // No session, open login switchToNotLoggedInFlow(null) @@ -342,3 +342,5 @@ class RootFlowNode( .attachSession() } } + +private suspend fun SessionStore.getLatestSessionId() = getLatestSession()?.userId?.let(::SessionId)