mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
ChooseAccountProviderEvents -> ChooseAccountProviderEvent
This commit is contained in:
+4
-4
@@ -10,8 +10,8 @@ package io.element.android.features.login.impl.screens.chooseaccountprovider
|
||||
|
||||
import io.element.android.features.login.impl.accountprovider.AccountProvider
|
||||
|
||||
sealed interface ChooseAccountProviderEvents {
|
||||
data class SelectAccountProvider(val accountProvider: AccountProvider) : ChooseAccountProviderEvents
|
||||
data object Continue : ChooseAccountProviderEvents
|
||||
data object ClearError : ChooseAccountProviderEvents
|
||||
sealed interface ChooseAccountProviderEvent {
|
||||
data class SelectAccountProvider(val accountProvider: AccountProvider) : ChooseAccountProviderEvent
|
||||
data object Continue : ChooseAccountProviderEvent
|
||||
data object ClearError : ChooseAccountProviderEvent
|
||||
}
|
||||
+4
-4
@@ -34,9 +34,9 @@ class ChooseAccountProviderPresenter(
|
||||
val loginModeState = loginModePresenter.present()
|
||||
var selectedAccountProvider: AccountProvider? by remember { mutableStateOf(null) }
|
||||
|
||||
fun handleEvent(event: ChooseAccountProviderEvents) {
|
||||
fun handleEvent(event: ChooseAccountProviderEvent) {
|
||||
when (event) {
|
||||
ChooseAccountProviderEvents.Continue -> {
|
||||
ChooseAccountProviderEvent.Continue -> {
|
||||
selectedAccountProvider?.let { provider ->
|
||||
loginModeState.eventSink(
|
||||
LoginModeEvent.Submit(
|
||||
@@ -48,13 +48,13 @@ class ChooseAccountProviderPresenter(
|
||||
)
|
||||
}
|
||||
}
|
||||
is ChooseAccountProviderEvents.SelectAccountProvider -> {
|
||||
is ChooseAccountProviderEvent.SelectAccountProvider -> {
|
||||
// Ensure that the user does not change the server during processing.
|
||||
if (loginModeState.loginMode is AsyncData.Uninitialized) {
|
||||
selectedAccountProvider = event.accountProvider
|
||||
}
|
||||
}
|
||||
ChooseAccountProviderEvents.ClearError -> loginModeState.eventSink(LoginModeEvent.ClearError)
|
||||
ChooseAccountProviderEvent.ClearError -> loginModeState.eventSink(LoginModeEvent.ClearError)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ data class ChooseAccountProviderState(
|
||||
val accountProviders: ImmutableList<AccountProvider>,
|
||||
val selectedAccountProvider: AccountProvider?,
|
||||
val loginModeState: LoginModeState,
|
||||
val eventSink: (ChooseAccountProviderEvents) -> Unit,
|
||||
val eventSink: (ChooseAccountProviderEvent) -> Unit,
|
||||
) {
|
||||
val submitEnabled: Boolean
|
||||
get() = selectedAccountProvider != null &&
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ fun aChooseAccountProviderState(
|
||||
),
|
||||
selectedAccountProvider: AccountProvider? = null,
|
||||
loginModeState: LoginModeState = aLoginModeState(),
|
||||
eventSink: (ChooseAccountProviderEvents) -> Unit = {},
|
||||
eventSink: (ChooseAccountProviderEvent) -> Unit = {},
|
||||
) = ChooseAccountProviderState(
|
||||
accountProviders = accountProviders.toImmutableList(),
|
||||
selectedAccountProvider = selectedAccountProvider,
|
||||
|
||||
+3
-3
@@ -108,7 +108,7 @@ fun ChooseAccountProviderView(
|
||||
item = alteredItem,
|
||||
selected = item == state.selectedAccountProvider,
|
||||
onClick = {
|
||||
state.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(item))
|
||||
state.eventSink(ChooseAccountProviderEvent.SelectAccountProvider(item))
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -119,7 +119,7 @@ fun ChooseAccountProviderView(
|
||||
text = stringResource(id = CommonStrings.action_continue),
|
||||
showProgress = isLoading,
|
||||
onClick = {
|
||||
state.eventSink(ChooseAccountProviderEvents.Continue)
|
||||
state.eventSink(ChooseAccountProviderEvent.Continue)
|
||||
},
|
||||
enabled = state.submitEnabled || isLoading,
|
||||
modifier = Modifier
|
||||
@@ -131,7 +131,7 @@ fun ChooseAccountProviderView(
|
||||
LoginModeView(
|
||||
loginMode = state.loginModeState.loginMode,
|
||||
onClearError = {
|
||||
state.eventSink(ChooseAccountProviderEvents.ClearError)
|
||||
state.eventSink(ChooseAccountProviderEvent.ClearError)
|
||||
},
|
||||
onLearnMoreClick = onLearnMoreClick,
|
||||
onOAuthDetails = onOAuthDetails,
|
||||
|
||||
+7
-7
@@ -88,7 +88,7 @@ class ChooseAccountProviderPresenterTest {
|
||||
presenter.test {
|
||||
awaitItem().also {
|
||||
assertThat(it.selectedAccountProvider).isNull()
|
||||
it.eventSink(ChooseAccountProviderEvents.Continue)
|
||||
it.eventSink(ChooseAccountProviderEvent.Continue)
|
||||
expectNoEvents()
|
||||
}
|
||||
}
|
||||
@@ -112,11 +112,11 @@ class ChooseAccountProviderPresenterTest {
|
||||
presenter.test {
|
||||
awaitItem().also {
|
||||
assertThat(it.selectedAccountProvider).isNull()
|
||||
it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider1))
|
||||
it.eventSink(ChooseAccountProviderEvent.SelectAccountProvider(accountProvider1))
|
||||
}
|
||||
awaitItem().also {
|
||||
assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1)
|
||||
it.eventSink(ChooseAccountProviderEvents.Continue)
|
||||
it.eventSink(ChooseAccountProviderEvent.Continue)
|
||||
skipItems(1) // Loading
|
||||
|
||||
// Check an error was returned
|
||||
@@ -124,7 +124,7 @@ class ChooseAccountProviderPresenterTest {
|
||||
assertThat(submittedState.loginModeState.loginMode).isInstanceOf(AsyncData.Failure::class.java)
|
||||
|
||||
// Assert the error is then cleared
|
||||
submittedState.eventSink(ChooseAccountProviderEvents.ClearError)
|
||||
submittedState.eventSink(ChooseAccountProviderEvent.ClearError)
|
||||
val clearedState = awaitItem()
|
||||
assertThat(clearedState.loginModeState.loginMode).isEqualTo(AsyncData.Uninitialized)
|
||||
}
|
||||
@@ -145,15 +145,15 @@ class ChooseAccountProviderPresenterTest {
|
||||
presenter.test {
|
||||
awaitItem().also {
|
||||
assertThat(it.selectedAccountProvider).isNull()
|
||||
it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider1))
|
||||
it.eventSink(ChooseAccountProviderEvent.SelectAccountProvider(accountProvider1))
|
||||
}
|
||||
awaitItem().also {
|
||||
assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1)
|
||||
it.eventSink(ChooseAccountProviderEvents.Continue)
|
||||
it.eventSink(ChooseAccountProviderEvent.Continue)
|
||||
}
|
||||
awaitItem().also {
|
||||
assertThat(it.loginModeState.loginMode.isLoading()).isTrue()
|
||||
it.eventSink(ChooseAccountProviderEvents.SelectAccountProvider(accountProvider2))
|
||||
it.eventSink(ChooseAccountProviderEvent.SelectAccountProvider(accountProvider2))
|
||||
}
|
||||
expectNoEvents()
|
||||
}
|
||||
|
||||
+5
-5
@@ -35,7 +35,7 @@ import org.robolectric.annotation.Config
|
||||
class ChooseAccountProviderViewTest : RobolectricTest() {
|
||||
@Test
|
||||
fun `clicking on back invokes the expected callback`() = runAndroidComposeUiTest {
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvents>(expectEvents = false)
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvent>(expectEvents = false)
|
||||
ensureCalledOnce {
|
||||
setChooseAccountProviderView(
|
||||
state = aChooseAccountProviderState(
|
||||
@@ -50,7 +50,7 @@ class ChooseAccountProviderViewTest : RobolectricTest() {
|
||||
@Config(qualifiers = "h1024dp")
|
||||
@Test
|
||||
fun `selecting an account provider emits the the expected event`() = runAndroidComposeUiTest {
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvents>()
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvent>()
|
||||
setChooseAccountProviderView(
|
||||
state = aChooseAccountProviderState(
|
||||
accountProviders = listOf(
|
||||
@@ -62,12 +62,12 @@ class ChooseAccountProviderViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
onNodeWithText(ChooseAccountProviderPresenterTest.accountProvider1.title).performClick()
|
||||
eventSink.assertSingle(ChooseAccountProviderEvents.SelectAccountProvider(ChooseAccountProviderPresenterTest.accountProvider1))
|
||||
eventSink.assertSingle(ChooseAccountProviderEvent.SelectAccountProvider(ChooseAccountProviderPresenterTest.accountProvider1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `when error is displayed - closing the dialog emits the expected event`() = runAndroidComposeUiTest {
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvents>()
|
||||
val eventSink = EventsRecorder<ChooseAccountProviderEvent>()
|
||||
setChooseAccountProviderView(
|
||||
state = aChooseAccountProviderState(
|
||||
loginModeState = aLoginModeState(loginMode = AsyncData.Failure(AN_EXCEPTION)),
|
||||
@@ -75,7 +75,7 @@ class ChooseAccountProviderViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
clickOn(CommonStrings.action_ok)
|
||||
eventSink.assertSingle(ChooseAccountProviderEvents.ClearError)
|
||||
eventSink.assertSingle(ChooseAccountProviderEvent.ClearError)
|
||||
}
|
||||
|
||||
private fun AndroidComposeUiTest<ComponentActivity>.setChooseAccountProviderView(
|
||||
|
||||
Reference in New Issue
Block a user