This commit is contained in:
Benoit Marty 2023-04-20 21:38:45 +02:00 committed by Benoit Marty
parent e8c24b65d1
commit a4e2a688c3
8 changed files with 10 additions and 14 deletions

View file

@ -29,9 +29,6 @@ import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.matrix.api.auth.OidcDetails import io.element.android.libraries.matrix.api.auth.OidcDetails
/**
* TODO Transmit back press to the webview
*/
@ContributesNode(AppScope::class) @ContributesNode(AppScope::class)
class OidcNode @AssistedInject constructor( class OidcNode @AssistedInject constructor(
@Assisted buildContext: BuildContext, @Assisted buildContext: BuildContext,

View file

@ -92,7 +92,6 @@ fun OidcView(
) )
} }
is Async.Loading -> { is Async.Loading -> {
// Indeterminate indicator, to avoid the freeze effect if the connection takes time to initialize.
CircularProgressIndicator( CircularProgressIndicator(
modifier = Modifier.align(Alignment.Center) modifier = Modifier.align(Alignment.Center)
) )

View file

@ -76,7 +76,7 @@ class LoginRootPresenter @Inject constructor(
LoginRootEvents.Submit -> { LoginRootEvents.Submit -> {
val homeServerDetails = getHomeServerDetailsAction.value.dataOrNull() ?: return val homeServerDetails = getHomeServerDetailsAction.value.dataOrNull() ?: return
when { when {
homeServerDetails.supportsOidc -> localCoroutineScope.submitOidc(loggedInState) homeServerDetails.supportsOidcLogin -> localCoroutineScope.submitOidc(loggedInState)
homeServerDetails.supportsPasswordLogin -> localCoroutineScope.submit(formState.value, loggedInState) homeServerDetails.supportsPasswordLogin -> localCoroutineScope.submit(formState.value, loggedInState)
} }
} }

View file

@ -32,7 +32,7 @@ data class LoginRootState(
val eventSink: (LoginRootEvents) -> Unit val eventSink: (LoginRootEvents) -> Unit
) { ) {
val supportPasswordLogin = (homeserverDetails as? Async.Success)?.state?.supportsPasswordLogin.orFalse() val supportPasswordLogin = (homeserverDetails as? Async.Success)?.state?.supportsPasswordLogin.orFalse()
val supportOidcLogin = (homeserverDetails as? Async.Success)?.state?.supportsOidc.orFalse() val supportOidcLogin = (homeserverDetails as? Async.Success)?.state?.supportsOidcLogin.orFalse()
val submitEnabled: Boolean val submitEnabled: Boolean
get() = loggedInState !is LoggedInState.ErrorLoggingIn && get() = loggedInState !is LoggedInState.ErrorLoggingIn &&
((formState.login.isNotEmpty() && formState.password.isNotEmpty()) || supportOidcLogin) ((formState.login.isNotEmpty() && formState.password.isNotEmpty()) || supportOidcLogin)

View file

@ -30,7 +30,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails( MatrixHomeServerDetails(
"some-custom-server.com", "some-custom-server.com",
supportsPasswordLogin = true, supportsPasswordLogin = true,
supportsOidc = false supportsOidcLogin = false
) )
) )
), ),
@ -45,7 +45,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails( MatrixHomeServerDetails(
"server-with-oidc.org", "server-with-oidc.org",
supportsPasswordLogin = false, supportsPasswordLogin = false,
supportsOidc = true supportsOidcLogin = true
) )
) )
), ),
@ -56,7 +56,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails( MatrixHomeServerDetails(
"wrong.org", "wrong.org",
supportsPasswordLogin = false, supportsPasswordLogin = false,
supportsOidc = false supportsOidcLogin = false
) )
) )
), ),
@ -69,7 +69,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
fun aLoginRootState() = LoginRootState( fun aLoginRootState() = LoginRootState(
homeserverUrl = "matrix.org", homeserverUrl = "matrix.org",
homeserverDetails = Async.Success(MatrixHomeServerDetails("matrix.org", supportsPasswordLogin = true, supportsOidc = false)), homeserverDetails = Async.Success(MatrixHomeServerDetails("matrix.org", supportsPasswordLogin = true, supportsOidcLogin = false)),
loggedInState = LoggedInState.NotLoggedIn, loggedInState = LoggedInState.NotLoggedIn,
formState = LoginFormState.Default, formState = LoginFormState.Default,
eventSink = {} eventSink = {}

View file

@ -23,5 +23,5 @@ import kotlinx.parcelize.Parcelize
data class MatrixHomeServerDetails( data class MatrixHomeServerDetails(
val url: String, val url: String,
val supportsPasswordLogin: Boolean, val supportsPasswordLogin: Boolean,
val supportsOidc: Boolean, val supportsOidcLogin: Boolean,
): Parcelable ): Parcelable

View file

@ -23,6 +23,6 @@ fun HomeserverLoginDetails.map(): MatrixHomeServerDetails = use {
MatrixHomeServerDetails( MatrixHomeServerDetails(
url = url(), url = url(),
supportsPasswordLogin = supportsPasswordLogin(), supportsPasswordLogin = supportsPasswordLogin(),
supportsOidc = supportsOidcLogin(), supportsOidcLogin = supportsOidcLogin(),
) )
} }

View file

@ -47,8 +47,8 @@ const val ANOTHER_MESSAGE = "Hello universe!"
const val A_HOMESERVER_URL = "matrix.org" const val A_HOMESERVER_URL = "matrix.org"
const val A_HOMESERVER_URL_2 = "matrix-client.org" const val A_HOMESERVER_URL_2 = "matrix-client.org"
val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidc = false) val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidcLogin = false)
val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidc = true) val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidcLogin = true)
const val AN_AVATAR_URL = "mxc://data" const val AN_AVATAR_URL = "mxc://data"