Browse Source

Use extracted OIDC flow to display the reset identity screen

pull/3298/head
Jorge Martín 1 month ago
parent
commit
abb9959789
  1. 1
      features/securebackup/impl/build.gradle.kts
  2. 15
      features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt

1
features/securebackup/impl/build.gradle.kts

@ -45,6 +45,7 @@ dependencies { @@ -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)

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

Loading…
Cancel
Save