Skip to content

Commit 9333339

Browse files
committed
Multi accounts - check the feature flag before allowing login using login link.
1 parent fd553d2 commit 9333339

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

appnav/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dependencies {
2929
implementation(projects.libraries.androidutils)
3030
implementation(projects.libraries.architecture)
3131
implementation(projects.libraries.deeplink.api)
32+
implementation(projects.libraries.featureflag.api)
3233
implementation(projects.libraries.matrix.api)
3334
implementation(projects.libraries.oidc.api)
3435
implementation(projects.libraries.preferences.api)

appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ import io.element.android.libraries.architecture.waitForChildAttached
4848
import io.element.android.libraries.core.uri.ensureProtocol
4949
import io.element.android.libraries.deeplink.api.DeeplinkData
5050
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
51+
import io.element.android.libraries.featureflag.api.FeatureFlagService
52+
import io.element.android.libraries.featureflag.api.FeatureFlags
5153
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
5254
import io.element.android.libraries.matrix.api.core.SessionId
5355
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
@@ -81,6 +83,7 @@ class RootFlowNode(
8183
private val oidcActionFlow: OidcActionFlow,
8284
private val bugReporter: BugReporter,
8385
private val sessionStore: SessionStore,
86+
private val featureFlagService: FeatureFlagService,
8487
) : BaseFlowNode<RootFlowNode.NavTarget>(
8588
backstack = BackStack(
8689
initialElement = NavTarget.SplashScreen,
@@ -335,15 +338,19 @@ class RootFlowNode(
335338
// Is there a session already?
336339
val sessions = sessionStore.getAllSessions()
337340
if (sessions.isNotEmpty()) {
338-
val loginHintMatrixId = params.loginHint?.removePrefix("mxid:")
339-
val existingAccount = sessions.find { it.userId == loginHintMatrixId }
340-
if (existingAccount != null) {
341-
// We have an existing account matching the login hint, ensure this is the current session
342-
sessionStore.setLatestSession(existingAccount.userId)
341+
if (featureFlagService.isFeatureEnabled(FeatureFlags.MultiAccount)) {
342+
val loginHintMatrixId = params.loginHint?.removePrefix("mxid:")
343+
val existingAccount = sessions.find { it.userId == loginHintMatrixId }
344+
if (existingAccount != null) {
345+
// We have an existing account matching the login hint, ensure this is the current session
346+
sessionStore.setLatestSession(existingAccount.userId)
347+
} else {
348+
val latestSessionId = sessions.maxBy { it.lastUsageIndex }.userId
349+
attachSession(SessionId(latestSessionId))
350+
backstack.push(NavTarget.NotLoggedInFlow(params))
351+
}
343352
} else {
344-
val latestSessionId = sessions.maxBy { it.lastUsageIndex }.userId
345-
attachSession(SessionId(latestSessionId))
346-
backstack.push(NavTarget.NotLoggedInFlow(params))
353+
Timber.w("Login link ignored, multi account is disabled")
347354
}
348355
} else {
349356
switchToNotLoggedInFlow(params)

0 commit comments

Comments
 (0)