mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 01:19:33 +00:00
Use extracted OIDC flow to display the reset identity screen
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
+12
-3
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user