Use extracted OIDC flow to display the reset identity screen
This commit is contained in:
parent
d5c2e5e436
commit
2283e0e361
2 changed files with 13 additions and 3 deletions
|
|
@ -45,6 +45,7 @@ dependencies {
|
||||||
implementation(projects.libraries.matrix.api)
|
implementation(projects.libraries.matrix.api)
|
||||||
implementation(projects.libraries.matrixui)
|
implementation(projects.libraries.matrixui)
|
||||||
implementation(projects.libraries.designsystem)
|
implementation(projects.libraries.designsystem)
|
||||||
|
implementation(projects.libraries.oidc.api)
|
||||||
implementation(projects.libraries.uiStrings)
|
implementation(projects.libraries.uiStrings)
|
||||||
implementation(projects.libraries.testtags)
|
implementation(projects.libraries.testtags)
|
||||||
api(libs.statemachine)
|
api(libs.statemachine)
|
||||||
|
|
|
||||||
|
|
@ -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.IdentityOidcResetHandle
|
||||||
import io.element.android.libraries.matrix.api.encryption.IdentityPasswordResetHandle
|
import io.element.android.libraries.matrix.api.encryption.IdentityPasswordResetHandle
|
||||||
import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle
|
import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle
|
||||||
|
import io.element.android.libraries.oidc.api.OidcEntryPoint
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.filterIsInstance
|
import kotlinx.coroutines.flow.filterIsInstance
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
|
|
@ -53,6 +54,7 @@ class ResetIdentityFlowNode @AssistedInject constructor(
|
||||||
@Assisted plugins: List<Plugin>,
|
@Assisted plugins: List<Plugin>,
|
||||||
private val resetIdentityFlowManager: ResetIdentityFlowManager,
|
private val resetIdentityFlowManager: ResetIdentityFlowManager,
|
||||||
private val coroutineScope: CoroutineScope,
|
private val coroutineScope: CoroutineScope,
|
||||||
|
private val oidcEntryPoint: OidcEntryPoint,
|
||||||
) : BaseFlowNode<ResetIdentityFlowNode.NavTarget>(
|
) : BaseFlowNode<ResetIdentityFlowNode.NavTarget>(
|
||||||
backstack = BackStack(initialElement = NavTarget.Root, savedStateMap = buildContext.savedStateMap),
|
backstack = BackStack(initialElement = NavTarget.Root, savedStateMap = buildContext.savedStateMap),
|
||||||
buildContext = buildContext,
|
buildContext = buildContext,
|
||||||
|
|
@ -69,8 +71,8 @@ class ResetIdentityFlowNode @AssistedInject constructor(
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data object ResetPassword : NavTarget
|
data object ResetPassword : NavTarget
|
||||||
|
|
||||||
// @Parcelize
|
@Parcelize
|
||||||
// data class ResetOidc(val url: String) : NavTarget
|
data class ResetOidc(val url: String) : NavTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var activity: Activity
|
private lateinit var activity: Activity
|
||||||
|
|
@ -100,6 +102,9 @@ class ResetIdentityFlowNode @AssistedInject constructor(
|
||||||
listOf(ResetKeyPasswordNode.Inputs(resetIdentityFlowManager.currentSessionId(), handle))
|
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) {
|
when (handle) {
|
||||||
is IdentityOidcResetHandle -> {
|
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()
|
handle.resetOidc()
|
||||||
}
|
}
|
||||||
is IdentityPasswordResetHandle -> backstack.push(NavTarget.ResetPassword)
|
is IdentityPasswordResetHandle -> backstack.push(NavTarget.ResetPassword)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue