From 835690a1c28b03c261a66795f80f05a295182a93 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 25 Aug 2026 10:02:25 +0200 Subject: [PATCH] `LoginPasswordEvents` -> `LoginPasswordEvent` --- ...asswordEvents.kt => LoginPasswordEvent.kt} | 10 +++--- .../loginpassword/LoginPasswordPresenter.kt | 10 +++--- .../loginpassword/LoginPasswordState.kt | 2 +- .../LoginPasswordStatePreviewParam.kt | 2 +- .../loginpassword/LoginPasswordView.kt | 10 +++--- .../LoginPasswordPresenterTest.kt | 32 ++++++++--------- .../loginpassword/LoginPasswordViewTest.kt | 36 +++++++++---------- 7 files changed, 51 insertions(+), 51 deletions(-) rename features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/{LoginPasswordEvents.kt => LoginPasswordEvent.kt} (64%) diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvent.kt similarity index 64% rename from features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvents.kt rename to features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvent.kt index 25a003b531..fa9acb5632 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvents.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordEvent.kt @@ -8,9 +8,9 @@ package io.element.android.features.login.impl.screens.loginpassword -sealed interface LoginPasswordEvents { - data class SetLogin(val login: String) : LoginPasswordEvents - data class SetPassword(val password: String) : LoginPasswordEvents - data object Submit : LoginPasswordEvents - data object ClearError : LoginPasswordEvents +sealed interface LoginPasswordEvent { + data class SetLogin(val login: String) : LoginPasswordEvent + data class SetPassword(val password: String) : LoginPasswordEvent + data object Submit : LoginPasswordEvent + data object ClearError : LoginPasswordEvent } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt index 6e28bd8781..864bbc7808 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenter.kt @@ -58,18 +58,18 @@ class LoginPasswordPresenter( } val accountProvider by accountProviderDataSource.flow.collectAsState() - fun handleEvent(event: LoginPasswordEvents) { + fun handleEvent(event: LoginPasswordEvent) { when (event) { - is LoginPasswordEvents.SetLogin -> updateFormState(formState) { + is LoginPasswordEvent.SetLogin -> updateFormState(formState) { copy(login = event.login) } - is LoginPasswordEvents.SetPassword -> updateFormState(formState) { + is LoginPasswordEvent.SetPassword -> updateFormState(formState) { copy(password = event.password) } - LoginPasswordEvents.Submit -> { + LoginPasswordEvent.Submit -> { localCoroutineScope.submit(formState.value, loginAction) } - LoginPasswordEvents.ClearError -> loginAction.value = AsyncData.Uninitialized + LoginPasswordEvent.ClearError -> loginAction.value = AsyncData.Uninitialized } } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt index d8adc7351f..db04e7b7ba 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordState.kt @@ -18,7 +18,7 @@ data class LoginPasswordState( val accountProvider: AccountProvider, val formState: LoginFormState, val loginAction: AsyncData, - val eventSink: (LoginPasswordEvents) -> Unit + val eventSink: (LoginPasswordEvent) -> Unit ) { val submitEnabled: Boolean get() = loginAction !is AsyncData.Failure && diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordStatePreviewParam.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordStatePreviewParam.kt index 4d7201dbc8..ba48e57b5d 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordStatePreviewParam.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordStatePreviewParam.kt @@ -29,7 +29,7 @@ fun aLoginPasswordState( accountProvider: AccountProvider = anAccountProvider(), formState: LoginFormState = LoginFormState.Default, loginAction: AsyncData = AsyncData.Uninitialized, - eventSink: (LoginPasswordEvents) -> Unit = {}, + eventSink: (LoginPasswordEvent) -> Unit = {}, ) = LoginPasswordState( accountProvider = accountProvider, formState = formState, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt index a168b14cc8..9a2dc3097b 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordView.kt @@ -97,7 +97,7 @@ fun LoginPasswordView( autofillManager?.commit() - state.eventSink(LoginPasswordEvents.Submit) + state.eventSink(LoginPasswordEvent.Submit) } Scaffold( @@ -166,7 +166,7 @@ fun LoginPasswordView( if (state.loginAction is AsyncData.Failure) { LoginErrorDialog(error = state.loginAction.error, onDismiss = { - state.eventSink(LoginPasswordEvents.ClearError) + state.eventSink(LoginPasswordEvent.ClearError) }) } } @@ -202,7 +202,7 @@ private fun LoginForm( onValueChange = { val sanitized = it.sanitize() loginFieldState = sanitized - eventSink(LoginPasswordEvents.SetLogin(sanitized)) + eventSink(LoginPasswordEvent.SetLogin(sanitized)) }, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Email, @@ -220,7 +220,7 @@ private fun LoginForm( role = Role.Button, ) { loginFieldState = "" - eventSink(LoginPasswordEvents.SetLogin("")) + eventSink(LoginPasswordEvent.SetLogin("")) } ) { Icon( @@ -254,7 +254,7 @@ private fun LoginForm( onValueChange = { val sanitized = it.sanitize() passwordFieldState = sanitized - eventSink(LoginPasswordEvents.SetPassword(sanitized)) + eventSink(LoginPasswordEvent.SetPassword(sanitized)) }, placeholder = stringResource(CommonStrings.common_password), visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt index 4dd2859dee..b12c9ec667 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordPresenterTest.kt @@ -54,7 +54,7 @@ class LoginPasswordPresenterTest { val initialState = awaitItem() assertThat(initialState.formState.login).isEqualTo(A_USER_NAME) // Login can be changed - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME_2)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME_2)) val loginChangedState = awaitItem() assertThat(loginChangedState.formState.login).isEqualTo(A_USER_NAME_2) } @@ -71,11 +71,11 @@ class LoginPasswordPresenterTest { authenticationService = authenticationService, ).test { val initialState = awaitItem() - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME)) val loginState = awaitItem() assertThat(loginState.formState).isEqualTo(LoginFormState(login = A_USER_NAME, password = "")) assertThat(loginState.submitEnabled).isFalse() - initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) + initialState.eventSink.invoke(LoginPasswordEvent.SetPassword(A_PASSWORD)) val loginAndPasswordState = awaitItem() assertThat(loginAndPasswordState.formState).isEqualTo(LoginFormState(login = A_USER_NAME, password = A_PASSWORD)) assertThat(loginAndPasswordState.submitEnabled).isTrue() @@ -93,11 +93,11 @@ class LoginPasswordPresenterTest { authenticationService = authenticationService, ).test { val initialState = awaitItem() - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) - initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME)) + initialState.eventSink.invoke(LoginPasswordEvent.SetPassword(A_PASSWORD)) skipItems(1) val loginAndPasswordState = awaitItem() - loginAndPasswordState.eventSink.invoke(LoginPasswordEvents.Submit) + loginAndPasswordState.eventSink.invoke(LoginPasswordEvent.Submit) val submitState = awaitItem() assertThat(submitState.loginAction).isInstanceOf(AsyncData.Loading::class.java) val loggedInState = awaitItem() @@ -118,11 +118,11 @@ class LoginPasswordPresenterTest { appPreferencesStore = appPreferencesStore, ).test { val initialState = awaitItem() - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) - initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME)) + initialState.eventSink.invoke(LoginPasswordEvent.SetPassword(A_PASSWORD)) skipItems(1) val loginAndPasswordState = awaitItem() - loginAndPasswordState.eventSink.invoke(LoginPasswordEvents.Submit) + loginAndPasswordState.eventSink.invoke(LoginPasswordEvent.Submit) skipItems(1) val loggedInState = awaitItem() assertThat(loggedInState.loginAction).isEqualTo(AsyncData.Success(A_SESSION_ID)) @@ -142,12 +142,12 @@ class LoginPasswordPresenterTest { authenticationService = authenticationService, ).test { val initialState = awaitItem() - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) - initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME)) + initialState.eventSink.invoke(LoginPasswordEvent.SetPassword(A_PASSWORD)) skipItems(1) val loginAndPasswordState = awaitItem() authenticationService.givenLoginError(AN_EXCEPTION) - loginAndPasswordState.eventSink.invoke(LoginPasswordEvents.Submit) + loginAndPasswordState.eventSink.invoke(LoginPasswordEvent.Submit) val submitState = awaitItem() assertThat(submitState.loginAction).isInstanceOf(AsyncData.Loading::class.java) val loggedInState = awaitItem() @@ -166,19 +166,19 @@ class LoginPasswordPresenterTest { authenticationService = authenticationService, ).test { val initialState = awaitItem() - initialState.eventSink.invoke(LoginPasswordEvents.SetLogin(A_USER_NAME)) - initialState.eventSink.invoke(LoginPasswordEvents.SetPassword(A_PASSWORD)) + initialState.eventSink.invoke(LoginPasswordEvent.SetLogin(A_USER_NAME)) + initialState.eventSink.invoke(LoginPasswordEvent.SetPassword(A_PASSWORD)) skipItems(1) val loginAndPasswordState = awaitItem() authenticationService.givenLoginError(AN_EXCEPTION) - loginAndPasswordState.eventSink.invoke(LoginPasswordEvents.Submit) + loginAndPasswordState.eventSink.invoke(LoginPasswordEvent.Submit) val submitState = awaitItem() assertThat(submitState.loginAction).isInstanceOf(AsyncData.Loading::class.java) val loggedInState = awaitItem() // Check an error was returned assertThat(loggedInState.loginAction).isEqualTo(AsyncData.Failure(AN_EXCEPTION)) // Assert the error is then cleared - loggedInState.eventSink(LoginPasswordEvents.ClearError) + loggedInState.eventSink(LoginPasswordEvent.ClearError) val clearedState = awaitItem() assertThat(clearedState.loginAction).isEqualTo(AsyncData.Uninitialized) } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordViewTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordViewTest.kt index d76c94d5ea..32ce44366f 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordViewTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/loginpassword/LoginPasswordViewTest.kt @@ -39,7 +39,7 @@ import org.robolectric.annotation.Config class LoginPasswordViewTest : RobolectricTest() { @Test fun `clicking on back invoke back callback`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder(expectEvents = false) + val eventsRecorder = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setLoginPasswordView( aLoginPasswordState( @@ -53,7 +53,7 @@ class LoginPasswordViewTest : RobolectricTest() { @Test fun `changing login invokes the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( eventSink = eventsRecorder, @@ -62,13 +62,13 @@ class LoginPasswordViewTest : RobolectricTest() { val userNameHint = activity!!.getString(CommonStrings.common_username) onNodeWithText(userNameHint).performTextInput(A_USER_NAME) eventsRecorder.assertSingle( - LoginPasswordEvents.SetLogin(A_USER_NAME) + LoginPasswordEvent.SetLogin(A_USER_NAME) ) } @Test fun `changing login removes new lines the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( eventSink = eventsRecorder, @@ -77,13 +77,13 @@ class LoginPasswordViewTest : RobolectricTest() { val userNameHint = activity!!.getString(CommonStrings.common_username) onNodeWithText(userNameHint).performTextInput("a\nb") eventsRecorder.assertSingle( - LoginPasswordEvents.SetLogin("ab") + LoginPasswordEvent.SetLogin("ab") ) } @Test fun `changing login removes carriage returns the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( eventSink = eventsRecorder, @@ -92,13 +92,13 @@ class LoginPasswordViewTest : RobolectricTest() { val userNameHint = activity!!.getString(CommonStrings.common_username) onNodeWithText(userNameHint).performTextInput("a\r\nb") eventsRecorder.assertSingle( - LoginPasswordEvents.SetLogin("ab") + LoginPasswordEvent.SetLogin("ab") ) } @Test fun `clearing login invokes the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( formState = aLoginFormState(A_USER_NAME), @@ -108,13 +108,13 @@ class LoginPasswordViewTest : RobolectricTest() { val a11yClear = activity!!.getString(CommonStrings.action_clear) onNodeWithContentDescription(a11yClear).performClick() eventsRecorder.assertSingle( - LoginPasswordEvents.SetLogin("") + LoginPasswordEvent.SetLogin("") ) } @Test fun `changing password invokes the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( eventSink = eventsRecorder, @@ -123,13 +123,13 @@ class LoginPasswordViewTest : RobolectricTest() { val userNameHint = activity!!.getString(CommonStrings.common_password) onNodeWithText(userNameHint).performTextInput(A_PASSWORD) eventsRecorder.assertSingle( - LoginPasswordEvents.SetPassword(A_PASSWORD) + LoginPasswordEvent.SetPassword(A_PASSWORD) ) } @Test fun `changing password removes carriage returns the expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( eventSink = eventsRecorder, @@ -138,13 +138,13 @@ class LoginPasswordViewTest : RobolectricTest() { val passwordHint = activity!!.getString(CommonStrings.common_password) onNodeWithText(passwordHint).performTextInput("a\r\nb") eventsRecorder.assertSingle( - LoginPasswordEvents.SetPassword("ab") + LoginPasswordEvent.SetPassword("ab") ) } @Test fun `reveal password makes the password visible`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder(expectEvents = false) + val eventsRecorder = EventsRecorder(expectEvents = false) setLoginPasswordView( aLoginPasswordState( formState = aLoginFormState(password = A_PASSWORD), @@ -165,7 +165,7 @@ class LoginPasswordViewTest : RobolectricTest() { @Test fun `when login is empty, continue button is not enabled`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder(expectEvents = false) + val eventsRecorder = EventsRecorder(expectEvents = false) setLoginPasswordView( aLoginPasswordState( formState = aLoginFormState(password = A_PASSWORD), @@ -178,7 +178,7 @@ class LoginPasswordViewTest : RobolectricTest() { @Test fun `when password is empty, continue button is not enabled`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder(expectEvents = false) + val eventsRecorder = EventsRecorder(expectEvents = false) setLoginPasswordView( aLoginPasswordState( formState = aLoginFormState(login = A_USER_NAME), @@ -192,7 +192,7 @@ class LoginPasswordViewTest : RobolectricTest() { @Config(qualifiers = "h1024dp") @Test fun `clicking on Continue sends expected event`() = runAndroidComposeUiTest { - val eventsRecorder = EventsRecorder() + val eventsRecorder = EventsRecorder() setLoginPasswordView( aLoginPasswordState( formState = aLoginFormState(login = A_USER_NAME, password = A_PASSWORD), @@ -203,7 +203,7 @@ class LoginPasswordViewTest : RobolectricTest() { onNodeWithText(continueStr).assertIsEnabled() clickOn(CommonStrings.action_continue) eventsRecorder.assertSingle( - LoginPasswordEvents.Submit + LoginPasswordEvent.Submit ) } }