diff --git a/features/securebackup/impl/build.gradle.kts b/features/securebackup/impl/build.gradle.kts index 41f3ba8942..a2a2e04a5d 100644 --- a/features/securebackup/impl/build.gradle.kts +++ b/features/securebackup/impl/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { implementation(projects.libraries.matrix.api) implementation(projects.libraries.matrixui) implementation(projects.libraries.designsystem) + implementation(projects.libraries.oidc.api) implementation(projects.libraries.uiStrings) implementation(projects.libraries.testtags) api(libs.statemachine) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt index a7c0011625..11dfb71c22 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt @@ -41,6 +41,7 @@ import io.element.android.libraries.di.SessionScope import io.element.android.libraries.matrix.api.encryption.IdentityOidcResetHandle import io.element.android.libraries.matrix.api.encryption.IdentityPasswordResetHandle import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle +import io.element.android.libraries.oidc.api.OidcEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.first @@ -53,6 +54,7 @@ class ResetIdentityFlowNode @AssistedInject constructor( @Assisted plugins: List, private val resetIdentityFlowManager: ResetIdentityFlowManager, private val coroutineScope: CoroutineScope, + private val oidcEntryPoint: OidcEntryPoint, ) : BaseFlowNode( backstack = BackStack(initialElement = NavTarget.Root, savedStateMap = buildContext.savedStateMap), buildContext = buildContext, @@ -69,8 +71,8 @@ class ResetIdentityFlowNode @AssistedInject constructor( @Parcelize data object ResetPassword : NavTarget -// @Parcelize -// data class ResetOidc(val url: String) : NavTarget + @Parcelize + data class ResetOidc(val url: String) : NavTarget } private lateinit var activity: Activity @@ -100,6 +102,9 @@ class ResetIdentityFlowNode @AssistedInject constructor( listOf(ResetKeyPasswordNode.Inputs(resetIdentityFlowManager.currentSessionId(), handle)) ) } + is NavTarget.ResetOidc -> { + oidcEntryPoint.createFallbackWebViewNode(this, buildContext, navTarget.url) + } } } @@ -111,7 +116,11 @@ class ResetIdentityFlowNode @AssistedInject constructor( when (handle) { is IdentityOidcResetHandle -> { - activity.openUrlInChromeCustomTab(null, false, handle.url) + if (oidcEntryPoint.canUseCustomTab()) { + activity.openUrlInChromeCustomTab(null, false, handle.url) + } else { + backstack.push(NavTarget.ResetOidc(handle.url)) + } handle.resetOidc() } is IdentityPasswordResetHandle -> backstack.push(NavTarget.ResetPassword)