Use extracted OIDC flow to display the reset identity screen

This commit is contained in:
Jorge Martín
2024-08-08 16:37:11 +02:00
parent d5c2e5e436
commit 2283e0e361
2 changed files with 13 additions and 3 deletions

View File

@@ -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)

View File

@@ -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<Plugin>,
private val resetIdentityFlowManager: ResetIdentityFlowManager,
private val coroutineScope: CoroutineScope,
private val oidcEntryPoint: OidcEntryPoint,
) : BaseFlowNode<ResetIdentityFlowNode.NavTarget>(
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)