Disable Continue button when the login field is cleared. (#4699)
* Disable Continue button when the login field is cleared. Fixes #4691 * Add tests on LoginPasswordView
This commit is contained in:
parent
525d72d85b
commit
fe91895c9a
4 changed files with 213 additions and 8 deletions
|
|
@ -28,7 +28,7 @@ data class LoginPasswordState(
|
|||
@Parcelize
|
||||
data class LoginFormState(
|
||||
val login: String,
|
||||
val password: String
|
||||
val password: String,
|
||||
) : Parcelable {
|
||||
companion object {
|
||||
val Default = LoginFormState("", "")
|
||||
|
|
|
|||
|
|
@ -8,23 +8,38 @@
|
|||
package io.element.android.features.login.impl.screens.loginpassword
|
||||
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||
import io.element.android.features.login.impl.accountprovider.AccountProvider
|
||||
import io.element.android.features.login.impl.accountprovider.anAccountProvider
|
||||
import io.element.android.libraries.architecture.AsyncData
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
|
||||
open class LoginPasswordStateProvider : PreviewParameterProvider<LoginPasswordState> {
|
||||
override val values: Sequence<LoginPasswordState>
|
||||
get() = sequenceOf(
|
||||
aLoginPasswordState(),
|
||||
// Loading
|
||||
aLoginPasswordState().copy(loginAction = AsyncData.Loading()),
|
||||
aLoginPasswordState(loginAction = AsyncData.Loading()),
|
||||
// Error
|
||||
aLoginPasswordState().copy(loginAction = AsyncData.Failure(Exception("An error occurred"))),
|
||||
aLoginPasswordState(loginAction = AsyncData.Failure(Exception("An error occurred"))),
|
||||
)
|
||||
}
|
||||
|
||||
fun aLoginPasswordState() = LoginPasswordState(
|
||||
accountProvider = anAccountProvider(),
|
||||
formState = LoginFormState.Default,
|
||||
loginAction = AsyncData.Uninitialized,
|
||||
eventSink = {}
|
||||
fun aLoginPasswordState(
|
||||
accountProvider: AccountProvider = anAccountProvider(),
|
||||
formState: LoginFormState = LoginFormState.Default,
|
||||
loginAction: AsyncData<SessionId> = AsyncData.Uninitialized,
|
||||
eventSink: (LoginPasswordEvents) -> Unit = {},
|
||||
) = LoginPasswordState(
|
||||
accountProvider = accountProvider,
|
||||
formState = formState,
|
||||
loginAction = loginAction,
|
||||
eventSink = eventSink,
|
||||
)
|
||||
|
||||
fun aLoginFormState(
|
||||
login: String = "",
|
||||
password: String = "",
|
||||
) = LoginFormState(
|
||||
login = login,
|
||||
password = password,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ private fun LoginForm(
|
|||
{
|
||||
Box(Modifier.clickable {
|
||||
loginFieldState = ""
|
||||
eventSink(LoginPasswordEvents.SetLogin(""))
|
||||
}) {
|
||||
Icon(
|
||||
imageVector = CompoundIcons.Close(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue