diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvents.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvent.kt similarity index 70% rename from features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvents.kt rename to features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvent.kt index 6101b21ded..4b3993e2d1 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvents.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingEvent.kt @@ -8,11 +8,11 @@ package io.element.android.features.login.impl.screens.onboarding -sealed interface OnBoardingEvents { +sealed interface OnBoardingEvent { data class OnSignIn( val defaultAccountProvider: String - ) : OnBoardingEvents + ) : OnBoardingEvent - data object OnVersionClick : OnBoardingEvents - data object ClearError : OnBoardingEvents + data object OnVersionClick : OnBoardingEvent + data object ClearError : OnBoardingEvent } diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt index e9bdb5e1e9..7e48ae22e8 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenter.kt @@ -101,9 +101,9 @@ class OnBoardingPresenter( val loginModeState = loginModePresenter.present() - fun handleEvent(event: OnBoardingEvents) { + fun handleEvent(event: OnBoardingEvent) { when (event) { - is OnBoardingEvents.OnSignIn -> localCoroutineScope.launch { + is OnBoardingEvent.OnSignIn -> localCoroutineScope.launch { // Ensure that the current account provider is set accountProviderDataSource.setUrl(event.defaultAccountProvider) loginModeState.eventSink( @@ -115,8 +115,8 @@ class OnBoardingPresenter( ) ) } - OnBoardingEvents.ClearError -> loginModeState.eventSink(LoginModeEvent.ClearError) - OnBoardingEvents.OnVersionClick -> { + OnBoardingEvent.ClearError -> loginModeState.eventSink(LoginModeEvent.ClearError) + OnBoardingEvent.OnVersionClick -> { if (canReportBug) { if (multipleTapToUnlock.unlock(localCoroutineScope)) { showReportBug = true diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt index 4fb4b8090e..97ebed67f6 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingState.kt @@ -26,7 +26,7 @@ data class OnBoardingState( @DrawableRes val onBoardingLogoResId: Int?, val loginModeState: LoginModeState, - val eventSink: (OnBoardingEvents) -> Unit, + val eventSink: (OnBoardingEvent) -> Unit, ) { val submitEnabled: Boolean get() = defaultAccountProvider != null && diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStatePreviewParam.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStatePreviewParam.kt index d04f85f2a0..c7d89b21d5 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStatePreviewParam.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingStatePreviewParam.kt @@ -50,7 +50,7 @@ fun anOnBoardingState( @DrawableRes customLogoResId: Int? = null, loginModeState: LoginModeState = aLoginModeState(), - eventSink: (OnBoardingEvents) -> Unit = {}, + eventSink: (OnBoardingEvent) -> Unit = {}, ) = OnBoardingState( isAddingAccount = isAddingAccount, showBackButton = showBackButton, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt index 78faed7543..bd257d0891 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingView.kt @@ -78,7 +78,7 @@ fun OnBoardingView( LoginModeView( loginMode = state.loginModeState.loginMode, onClearError = { - state.eventSink(OnBoardingEvents.ClearError) + state.eventSink(OnBoardingEvent.ClearError) }, onLearnMoreClick = onLearnMoreClick, onOAuthDetails = onOAuthDetails, @@ -306,7 +306,7 @@ private fun OnBoardingButtons( text = stringResource(id = R.string.screen_onboarding_sign_in_to, defaultAccountProvider), showProgress = isLoading, onClick = { - state.eventSink(OnBoardingEvents.OnSignIn(defaultAccountProvider)) + state.eventSink(OnBoardingEvent.OnSignIn(defaultAccountProvider)) }, enabled = state.submitEnabled || isLoading, modifier = Modifier @@ -336,7 +336,7 @@ private fun OnBoardingButtons( Text( modifier = Modifier .clickable(role = Role.Button) { - state.eventSink(OnBoardingEvents.OnVersionClick) + state.eventSink(OnBoardingEvent.OnVersionClick) } .padding(16.dp), text = stringResource(id = R.string.screen_onboarding_app_version, state.version), diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt index 3c2e4b574f..1088a87538 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnBoardingPresenterTest.kt @@ -153,7 +153,7 @@ class OnBoardingPresenterTest { awaitItem().also { state -> assertThat(state.canReportBug).isFalse() repeat(7) { - state.eventSink(OnBoardingEvents.OnVersionClick) + state.eventSink(OnBoardingEvent.OnVersionClick) } } expectNoEvents() @@ -168,7 +168,7 @@ class OnBoardingPresenterTest { awaitItem().also { state -> assertThat(state.canReportBug).isFalse() repeat(7) { - state.eventSink(OnBoardingEvents.OnVersionClick) + state.eventSink(OnBoardingEvent.OnVersionClick) } } assertThat(awaitItem().canReportBug).isTrue() @@ -272,7 +272,7 @@ class OnBoardingPresenterTest { awaitItem().also { assertThat(it.defaultAccountProvider).isEqualTo(A_HOMESERVER_URL) assertThat(accountProviderDataSource.flow.first().url).isEqualTo(AuthenticationConfig.MATRIX_ORG_URL) - it.eventSink(OnBoardingEvents.OnSignIn(A_HOMESERVER_URL_2)) + it.eventSink(OnBoardingEvent.OnSignIn(A_HOMESERVER_URL_2)) skipItems(1) // Loading // Account data source has been updated assertThat(accountProviderDataSource.flow.first().url).isEqualTo(A_HOMESERVER_URL_2) @@ -281,7 +281,7 @@ class OnBoardingPresenterTest { assertThat(submittedState.loginModeState.loginMode).isInstanceOf(AsyncData.Failure::class.java) // Assert the error is then cleared - submittedState.eventSink(OnBoardingEvents.ClearError) + submittedState.eventSink(OnBoardingEvent.ClearError) val clearedState = awaitItem() assertThat(clearedState.loginModeState.loginMode).isEqualTo(AsyncData.Uninitialized) } diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt index dfa4119711..88c9acf55f 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/onboarding/OnboardingViewTest.kt @@ -39,7 +39,7 @@ import org.junit.Test class OnboardingViewTest : RobolectricTestParameter() { @Test fun `when can create account - clicking on create account calls the expected callback`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -58,7 +58,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `when can go back - clicking on back calls the expected callback`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -73,7 +73,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `when can login with QR code - clicking on sign in with QR code calls the expected callback`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -93,7 +93,7 @@ class OnboardingViewTest : RobolectricTestParameter() { "cannot search account provider" to true, ) ) = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnceWithParam(mustChooseAccountProvider) { callback -> setOnboardingView( state = anOnBoardingState( @@ -114,7 +114,7 @@ class OnboardingViewTest : RobolectricTestParameter() { "cannot search account provider" to true, ) ) = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnceWithParam(mustChooseAccountProvider) { callback -> setOnboardingView( state = anOnBoardingState( @@ -131,7 +131,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `when sign in to pre defined account provider - clicking on button emits the expected event`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder() + val eventSink = EventsRecorder() setOnboardingView( state = anOnBoardingState( defaultAccountProvider = "element.io", @@ -140,12 +140,12 @@ class OnboardingViewTest : RobolectricTestParameter() { ) val buttonText = activity!!.getString(R.string.screen_onboarding_sign_in_to, "element.io") onNodeWithText(buttonText).performClick() - eventSink.assertSingle(OnBoardingEvents.OnSignIn("element.io")) + eventSink.assertSingle(OnBoardingEvent.OnSignIn("element.io")) } @Test fun `when error is displayed - closing the dialog emits the expected event`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder() + val eventSink = EventsRecorder() setOnboardingView( state = anOnBoardingState( defaultAccountProvider = "element.io", @@ -154,12 +154,12 @@ class OnboardingViewTest : RobolectricTestParameter() { ), ) clickOn(CommonStrings.action_ok) - eventSink.assertSingle(OnBoardingEvents.ClearError) + eventSink.assertSingle(OnBoardingEvent.ClearError) } @Test fun `clicking on report a problem calls the sign in callback`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -176,7 +176,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `clicking on settings calls the developer settings callback`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -192,7 +192,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `cannot report a problem when the feature is disabled`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder(expectEvents = false) + val eventSink = EventsRecorder(expectEvents = false) setOnboardingView( state = anOnBoardingState( canReportBug = false, @@ -205,7 +205,7 @@ class OnboardingViewTest : RobolectricTestParameter() { @Test fun `when success PasswordLogin - the expected callback is invoked and the event is received`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder() + val eventSink = EventsRecorder() ensureCalledOnce { callback -> setOnboardingView( state = anOnBoardingState( @@ -215,12 +215,12 @@ class OnboardingViewTest : RobolectricTestParameter() { onNeedLoginPassword = callback, ) } - eventSink.assertSingle(OnBoardingEvents.ClearError) + eventSink.assertSingle(OnBoardingEvent.ClearError) } @Test fun `when success Oidc - the expected callback is invoked and the event is received`() = runAndroidComposeUiTest { - val eventSink = EventsRecorder() + val eventSink = EventsRecorder() val oAuthDetails = OAuthDetails("aUrl") ensureCalledOnceWithParam(oAuthDetails) { callback -> setOnboardingView( @@ -231,7 +231,7 @@ class OnboardingViewTest : RobolectricTestParameter() { onOAuthDetails = callback, ) } - eventSink.assertSingle(OnBoardingEvents.ClearError) + eventSink.assertSingle(OnBoardingEvent.ClearError) } private fun AndroidComposeUiTest.setOnboardingView(