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.matrix.api.auth.OidcDetails
/**
* TODO Transmit back press to the webview
*/
@ContributesNode(AppScope::class)
class OidcNode @AssistedInject constructor(
@Assisted buildContext: BuildContext,

View File

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

View File

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

View File

@@ -32,7 +32,7 @@ data class LoginRootState(
val eventSink: (LoginRootEvents) -> Unit
) {
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
get() = loggedInState !is LoggedInState.ErrorLoggingIn &&
((formState.login.isNotEmpty() && formState.password.isNotEmpty()) || supportOidcLogin)

View File

@@ -30,7 +30,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails(
"some-custom-server.com",
supportsPasswordLogin = true,
supportsOidc = false
supportsOidcLogin = false
)
)
),
@@ -45,7 +45,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails(
"server-with-oidc.org",
supportsPasswordLogin = false,
supportsOidc = true
supportsOidcLogin = true
)
)
),
@@ -56,7 +56,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
MatrixHomeServerDetails(
"wrong.org",
supportsPasswordLogin = false,
supportsOidc = false
supportsOidcLogin = false
)
)
),
@@ -69,7 +69,7 @@ open class LoginRootStateProvider : PreviewParameterProvider<LoginRootState> {
fun aLoginRootState() = LoginRootState(
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,
formState = LoginFormState.Default,
eventSink = {}

View File

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

View File

@@ -23,6 +23,6 @@ fun HomeserverLoginDetails.map(): MatrixHomeServerDetails = use {
MatrixHomeServerDetails(
url = url(),
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_2 = "matrix-client.org"
val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidc = false)
val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidc = true)
val A_HOMESERVER = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = true, supportsOidcLogin = false)
val A_HOMESERVER_OIDC = MatrixHomeServerDetails(A_HOMESERVER_URL, supportsPasswordLogin = false, supportsOidcLogin = true)
const val AN_AVATAR_URL = "mxc://data"