Skip to content

Commit abb9959

Browse files
committed
Use extracted OIDC flow to display the reset identity screen
1 parent ee7a31c commit abb9959

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

features/securebackup/impl/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ dependencies {
4545
implementation(projects.libraries.matrix.api)
4646
implementation(projects.libraries.matrixui)
4747
implementation(projects.libraries.designsystem)
48+
implementation(projects.libraries.oidc.api)
4849
implementation(projects.libraries.uiStrings)
4950
implementation(projects.libraries.testtags)
5051
api(libs.statemachine)

features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/reset/ResetIdentityFlowNode.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import io.element.android.libraries.di.SessionScope
4141
import io.element.android.libraries.matrix.api.encryption.IdentityOidcResetHandle
4242
import io.element.android.libraries.matrix.api.encryption.IdentityPasswordResetHandle
4343
import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle
44+
import io.element.android.libraries.oidc.api.OidcEntryPoint
4445
import kotlinx.coroutines.CoroutineScope
4546
import kotlinx.coroutines.flow.filterIsInstance
4647
import kotlinx.coroutines.flow.first
@@ -53,6 +54,7 @@ class ResetIdentityFlowNode @AssistedInject constructor(
5354
@Assisted plugins: List<Plugin>,
5455
private val resetIdentityFlowManager: ResetIdentityFlowManager,
5556
private val coroutineScope: CoroutineScope,
57+
private val oidcEntryPoint: OidcEntryPoint,
5658
) : BaseFlowNode<ResetIdentityFlowNode.NavTarget>(
5759
backstack = BackStack(initialElement = NavTarget.Root, savedStateMap = buildContext.savedStateMap),
5860
buildContext = buildContext,
@@ -69,8 +71,8 @@ class ResetIdentityFlowNode @AssistedInject constructor(
6971
@Parcelize
7072
data object ResetPassword : NavTarget
7173

72-
// @Parcelize
73-
// data class ResetOidc(val url: String) : NavTarget
74+
@Parcelize
75+
data class ResetOidc(val url: String) : NavTarget
7476
}
7577

7678
private lateinit var activity: Activity
@@ -100,6 +102,9 @@ class ResetIdentityFlowNode @AssistedInject constructor(
100102
listOf(ResetKeyPasswordNode.Inputs(resetIdentityFlowManager.currentSessionId(), handle))
101103
)
102104
}
105+
is NavTarget.ResetOidc -> {
106+
oidcEntryPoint.createFallbackWebViewNode(this, buildContext, navTarget.url)
107+
}
103108
}
104109
}
105110

@@ -111,7 +116,11 @@ class ResetIdentityFlowNode @AssistedInject constructor(
111116

112117
when (handle) {
113118
is IdentityOidcResetHandle -> {
114-
activity.openUrlInChromeCustomTab(null, false, handle.url)
119+
if (oidcEntryPoint.canUseCustomTab()) {
120+
activity.openUrlInChromeCustomTab(null, false, handle.url)
121+
} else {
122+
backstack.push(NavTarget.ResetOidc(handle.url))
123+
}
115124
handle.resetOidc()
116125
}
117126
is IdentityPasswordResetHandle -> backstack.push(NavTarget.ResetPassword)

0 commit comments

Comments
 (0)