@@ -41,6 +41,7 @@ import io.element.android.libraries.di.SessionScope
41
41
import io.element.android.libraries.matrix.api.encryption.IdentityOidcResetHandle
42
42
import io.element.android.libraries.matrix.api.encryption.IdentityPasswordResetHandle
43
43
import io.element.android.libraries.matrix.api.encryption.IdentityResetHandle
44
+ import io.element.android.libraries.oidc.api.OidcEntryPoint
44
45
import kotlinx.coroutines.CoroutineScope
45
46
import kotlinx.coroutines.flow.filterIsInstance
46
47
import kotlinx.coroutines.flow.first
@@ -53,6 +54,7 @@ class ResetIdentityFlowNode @AssistedInject constructor(
53
54
@Assisted plugins : List <Plugin >,
54
55
private val resetIdentityFlowManager : ResetIdentityFlowManager ,
55
56
private val coroutineScope : CoroutineScope ,
57
+ private val oidcEntryPoint : OidcEntryPoint ,
56
58
) : BaseFlowNode<ResetIdentityFlowNode.NavTarget>(
57
59
backstack = BackStack (initialElement = NavTarget .Root , savedStateMap = buildContext.savedStateMap),
58
60
buildContext = buildContext,
@@ -69,8 +71,8 @@ class ResetIdentityFlowNode @AssistedInject constructor(
69
71
@Parcelize
70
72
data object ResetPassword : NavTarget
71
73
72
- // @Parcelize
73
- // data class ResetOidc(val url: String) : NavTarget
74
+ @Parcelize
75
+ data class ResetOidc (val url : String ) : NavTarget
74
76
}
75
77
76
78
private lateinit var activity: Activity
@@ -100,6 +102,9 @@ class ResetIdentityFlowNode @AssistedInject constructor(
100
102
listOf (ResetKeyPasswordNode .Inputs (resetIdentityFlowManager.currentSessionId(), handle))
101
103
)
102
104
}
105
+ is NavTarget .ResetOidc -> {
106
+ oidcEntryPoint.createFallbackWebViewNode(this , buildContext, navTarget.url)
107
+ }
103
108
}
104
109
}
105
110
@@ -111,7 +116,11 @@ class ResetIdentityFlowNode @AssistedInject constructor(
111
116
112
117
when (handle) {
113
118
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
+ }
115
124
handle.resetOidc()
116
125
}
117
126
is IdentityPasswordResetHandle -> backstack.push(NavTarget .ResetPassword )
0 commit comments