ChangeServerEvents -> ChangeServerEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:00:15 +02:00
parent e07099f116
commit 0ee7ed3a78
6 changed files with 34 additions and 34 deletions
@@ -10,9 +10,9 @@ package io.element.android.features.login.impl.changeserver
import io.element.android.features.login.impl.accountprovider.AccountProvider
sealed interface ChangeServerEvents {
data class ChangeServer(val accountProvider: AccountProvider) : ChangeServerEvents
data object ClearError : ChangeServerEvents
data object RequestLocalNetworkPermission : ChangeServerEvents
data object DismissLocalNetworkPermission : ChangeServerEvents
sealed interface ChangeServerEvent {
data class ChangeServer(val accountProvider: AccountProvider) : ChangeServerEvent
data object ClearError : ChangeServerEvent
data object RequestLocalNetworkPermission : ChangeServerEvent
data object DismissLocalNetworkPermission : ChangeServerEvent
}
@@ -42,12 +42,12 @@ class ChangeServerPresenter(
onProceed = { provider -> changeServer(provider, changeServerAction) },
)
fun handleEvent(event: ChangeServerEvents) {
fun handleEvent(event: ChangeServerEvent) {
when (event) {
ChangeServerEvents.ClearError -> changeServerAction.value = AsyncData.Uninitialized
is ChangeServerEvents.ChangeServer -> gateState.submit(event.accountProvider)
ChangeServerEvents.DismissLocalNetworkPermission -> gateState.abort()
ChangeServerEvents.RequestLocalNetworkPermission -> gateState.requestPermission()
ChangeServerEvent.ClearError -> changeServerAction.value = AsyncData.Uninitialized
is ChangeServerEvent.ChangeServer -> gateState.submit(event.accountProvider)
ChangeServerEvent.DismissLocalNetworkPermission -> gateState.abort()
ChangeServerEvent.RequestLocalNetworkPermission -> gateState.requestPermission()
}
}
@@ -17,5 +17,5 @@ data class ChangeServerState(
// configuring (and re-networking) the homeserver a second time.
val changeServerAction: AsyncData<MatrixHomeServerDetails>,
val localNetworkPermissionDialog: LocalNetworkPermissionDialog,
val eventSink: (ChangeServerEvents) -> Unit
val eventSink: (ChangeServerEvent) -> Unit
)
@@ -47,7 +47,7 @@ fun ChangeServerView(
modifier = modifier,
content = stringResource(R.string.screen_change_server_error_invalid_homeserver),
onSubmit = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
}
)
ChangeServerError.UnsupportedServer ->
@@ -55,7 +55,7 @@ fun ChangeServerView(
modifier = modifier,
content = stringResource(R.string.screen_login_error_unsupported_authentication),
onSubmit = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
}
)
is ChangeServerError.Error -> {
@@ -63,7 +63,7 @@ fun ChangeServerView(
modifier = modifier,
content = error.messageStr ?: stringResource(CommonStrings.error_unknown),
onSubmit = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
}
)
}
@@ -72,10 +72,10 @@ fun ChangeServerView(
modifier = modifier,
onLearnMoreClick = {
onLearnMoreClick()
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
},
onDismiss = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
}
)
}
@@ -90,10 +90,10 @@ fun ChangeServerView(
submitText = stringResource(R.string.screen_change_server_error_element_pro_required_action_android),
onSubmitClick = {
context.openGooglePlay(error.applicationId)
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
},
onDismiss = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
},
)
}
@@ -106,7 +106,7 @@ fun ChangeServerView(
error.unauthorisedAccountProviderTitle,
),
onSubmit = {
eventSink.invoke(ChangeServerEvents.ClearError)
eventSink.invoke(ChangeServerEvent.ClearError)
}
)
}
@@ -125,10 +125,10 @@ fun ChangeServerView(
LocalNetworkPermissionDialogView(
dialog = state.localNetworkPermissionDialog,
onSubmit = {
eventSink.invoke(ChangeServerEvents.RequestLocalNetworkPermission)
eventSink.invoke(ChangeServerEvent.RequestLocalNetworkPermission)
},
onDismiss = {
eventSink.invoke(ChangeServerEvents.DismissLocalNetworkPermission)
eventSink.invoke(ChangeServerEvent.DismissLocalNetworkPermission)
}
)
}
@@ -24,7 +24,7 @@ import io.element.android.appconfig.AuthenticationConfig
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.features.login.impl.accountprovider.AccountProvider
import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource
import io.element.android.features.login.impl.changeserver.ChangeServerEvents
import io.element.android.features.login.impl.changeserver.ChangeServerEvent
import io.element.android.features.login.impl.changeserver.ChangeServerState
import io.element.android.features.login.impl.login.LoginModeEvent
import io.element.android.features.login.impl.login.LoginModeState
@@ -134,12 +134,12 @@ class ConfirmAccountProviderPresenter(
val accountProviderUrl = host.ensureProtocol()
submittedAccountProvider = accountProviderUrl
changeServerState.eventSink(
ChangeServerEvents.ChangeServer(AccountProvider(url = accountProviderUrl))
ChangeServerEvent.ChangeServer(AccountProvider(url = accountProviderUrl))
)
}
ConfirmAccountProviderEvents.ClearError -> {
loginModeState.eventSink(LoginModeEvent.ClearError)
changeServerState.eventSink(ChangeServerEvents.ClearError)
changeServerState.eventSink(ChangeServerEvent.ClearError)
}
}
}
@@ -63,7 +63,7 @@ class ChangeServerPresenterTest {
).test {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val loadingState = awaitItem()
assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java)
val successState = awaitItem()
@@ -87,13 +87,13 @@ class ChangeServerPresenterTest {
).test {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val loadingState = awaitItem()
assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java)
val failureState = awaitItem()
assertThat(failureState.changeServerAction).isInstanceOf(AsyncData.Failure::class.java)
// Clear error
failureState.eventSink.invoke(ChangeServerEvents.ClearError)
failureState.eventSink.invoke(ChangeServerEvent.ClearError)
val finalState = awaitItem()
assertThat(finalState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
}
@@ -115,7 +115,7 @@ class ChangeServerPresenterTest {
).test {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val loadingState = awaitItem()
assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java)
val failureState = awaitItem()
@@ -139,7 +139,7 @@ class ChangeServerPresenterTest {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
val anAccountProvider = AccountProvider(url = A_HOMESERVER_URL)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(anAccountProvider))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(anAccountProvider))
val loadingState = awaitItem()
assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java)
val failureState = awaitItem()
@@ -167,7 +167,7 @@ class ChangeServerPresenterTest {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
val anAccountProvider = AccountProvider(url = A_HOMESERVER_URL)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(anAccountProvider))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(anAccountProvider))
// Skip loading state
skipItems(1)
val failureState = awaitItem()
@@ -194,7 +194,7 @@ class ChangeServerPresenterTest {
).test {
val initialState = awaitItem()
assertThat(initialState.localNetworkPermissionDialog).isEqualTo(LocalNetworkPermissionDialog.None)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val promptState = expectMostRecentItem()
// Dialog is shown, permission has not been requested yet, setHomeserver has not been called.
assertThat(promptState.localNetworkPermissionDialog).isNotEqualTo(LocalNetworkPermissionDialog.None)
@@ -213,10 +213,10 @@ class ChangeServerPresenterTest {
permissionsPresenter = FakePermissionsPresenter(),
).test {
val initialState = awaitItem()
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val promptState = expectMostRecentItem()
assertThat(promptState.localNetworkPermissionDialog).isNotEqualTo(LocalNetworkPermissionDialog.None)
promptState.eventSink.invoke(ChangeServerEvents.DismissLocalNetworkPermission)
promptState.eventSink.invoke(ChangeServerEvent.DismissLocalNetworkPermission)
val dismissedState = expectMostRecentItem()
assertThat(dismissedState.localNetworkPermissionDialog).isEqualTo(LocalNetworkPermissionDialog.None)
assertThat(dismissedState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
@@ -236,7 +236,7 @@ class ChangeServerPresenterTest {
permissionsPresenter = permissionsPresenter,
).test {
val initialState = awaitItem()
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
initialState.eventSink.invoke(ChangeServerEvent.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val promptState = expectMostRecentItem()
assertThat(promptState.localNetworkPermissionDialog).isNotEqualTo(LocalNetworkPermissionDialog.None)
permissionsPresenter.setPermissionGranted()