mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
EditRoomAddressEvents -> EditRoomAddressEvent
This commit is contained in:
+4
-4
@@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
package io.element.android.features.securityandprivacy.impl.editroomaddress
|
package io.element.android.features.securityandprivacy.impl.editroomaddress
|
||||||
|
|
||||||
sealed interface EditRoomAddressEvents {
|
sealed interface EditRoomAddressEvent {
|
||||||
data object Save : EditRoomAddressEvents
|
data object Save : EditRoomAddressEvent
|
||||||
data object DismissError : EditRoomAddressEvents
|
data object DismissError : EditRoomAddressEvent
|
||||||
data class RoomAddressChanged(val roomAddress: String) : EditRoomAddressEvents
|
data class RoomAddressChanged(val roomAddress: String) : EditRoomAddressEvent
|
||||||
}
|
}
|
||||||
+4
-4
@@ -63,17 +63,17 @@ class EditRoomAddressPresenter(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun handleEvent(event: EditRoomAddressEvents) {
|
fun handleEvent(event: EditRoomAddressEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
EditRoomAddressEvents.Save -> coroutineScope.save(
|
EditRoomAddressEvent.Save -> coroutineScope.save(
|
||||||
saveAction = saveAction,
|
saveAction = saveAction,
|
||||||
serverName = homeserverName,
|
serverName = homeserverName,
|
||||||
newRoomAddress = newRoomAddress
|
newRoomAddress = newRoomAddress
|
||||||
)
|
)
|
||||||
is EditRoomAddressEvents.RoomAddressChanged -> {
|
is EditRoomAddressEvent.RoomAddressChanged -> {
|
||||||
newRoomAddress = event.roomAddress
|
newRoomAddress = event.roomAddress
|
||||||
}
|
}
|
||||||
EditRoomAddressEvents.DismissError -> {
|
EditRoomAddressEvent.DismissError -> {
|
||||||
saveAction.value = AsyncAction.Uninitialized
|
saveAction.value = AsyncAction.Uninitialized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ data class EditRoomAddressState(
|
|||||||
val roomAddress: String,
|
val roomAddress: String,
|
||||||
val roomAddressValidity: RoomAddressValidity,
|
val roomAddressValidity: RoomAddressValidity,
|
||||||
val saveAction: AsyncAction<Unit>,
|
val saveAction: AsyncAction<Unit>,
|
||||||
val eventSink: (EditRoomAddressEvents) -> Unit
|
val eventSink: (EditRoomAddressEvent) -> Unit
|
||||||
) {
|
) {
|
||||||
val canBeSaved = roomAddressValidity == RoomAddressValidity.Valid
|
val canBeSaved = roomAddressValidity == RoomAddressValidity.Valid
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ fun anEditRoomAddressState(
|
|||||||
roomAddressValidity: RoomAddressValidity = RoomAddressValidity.Unknown,
|
roomAddressValidity: RoomAddressValidity = RoomAddressValidity.Unknown,
|
||||||
homeserverName: String = ":myserver.org",
|
homeserverName: String = ":myserver.org",
|
||||||
saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||||
eventSink: (EditRoomAddressEvents) -> Unit = {}
|
eventSink: (EditRoomAddressEvent) -> Unit = {}
|
||||||
) = EditRoomAddressState(
|
) = EditRoomAddressState(
|
||||||
roomAddress = roomAddress,
|
roomAddress = roomAddress,
|
||||||
roomAddressValidity = roomAddressValidity,
|
roomAddressValidity = roomAddressValidity,
|
||||||
|
|||||||
+4
-4
@@ -46,7 +46,7 @@ fun EditRoomAddressView(
|
|||||||
isSaveActionEnabled = state.canBeSaved,
|
isSaveActionEnabled = state.canBeSaved,
|
||||||
onBackClick = onBackClick,
|
onBackClick = onBackClick,
|
||||||
onSaveClick = {
|
onSaveClick = {
|
||||||
state.eventSink(EditRoomAddressEvents.Save)
|
state.eventSink(EditRoomAddressEvent.Save)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ fun EditRoomAddressView(
|
|||||||
homeserverName = state.homeserverName,
|
homeserverName = state.homeserverName,
|
||||||
addressValidity = state.roomAddressValidity,
|
addressValidity = state.roomAddressValidity,
|
||||||
onAddressChange = {
|
onAddressChange = {
|
||||||
state.eventSink(EditRoomAddressEvents.RoomAddressChanged(it))
|
state.eventSink(EditRoomAddressEvent.RoomAddressChanged(it))
|
||||||
},
|
},
|
||||||
label = stringResource(R.string.screen_edit_room_address_title),
|
label = stringResource(R.string.screen_edit_room_address_title),
|
||||||
supportingText = stringResource(R.string.screen_edit_room_address_room_address_section_footer),
|
supportingText = stringResource(R.string.screen_edit_room_address_room_address_section_footer),
|
||||||
@@ -81,8 +81,8 @@ fun EditRoomAddressView(
|
|||||||
},
|
},
|
||||||
onSuccess = {},
|
onSuccess = {},
|
||||||
errorMessage = { stringResource(CommonStrings.error_unknown) },
|
errorMessage = { stringResource(CommonStrings.error_unknown) },
|
||||||
onRetry = { state.eventSink(EditRoomAddressEvents.Save) },
|
onRetry = { state.eventSink(EditRoomAddressEvent.Save) },
|
||||||
onErrorDismiss = { state.eventSink(EditRoomAddressEvents.DismissError) },
|
onErrorDismiss = { state.eventSink(EditRoomAddressEvent.DismissError) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-13
@@ -97,7 +97,7 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter(roomAliasHelper = roomAliasHelper)
|
val presenter = createEditRoomAddressPresenter(roomAliasHelper = roomAliasHelper)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("invalid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("invalid"))
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddress).isEqualTo("invalid")
|
assertThat(roomAddress).isEqualTo("invalid")
|
||||||
@@ -115,7 +115,7 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter()
|
val presenter = createEditRoomAddressPresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddress).isEqualTo("valid")
|
assertThat(roomAddress).isEqualTo("valid")
|
||||||
@@ -134,7 +134,7 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter(client = client)
|
val presenter = createEditRoomAddressPresenter(client = client)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddress).isEqualTo("valid")
|
assertThat(roomAddress).isEqualTo("valid")
|
||||||
@@ -163,13 +163,13 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
||||||
assertThat(canBeSaved).isTrue()
|
assertThat(canBeSaved).isTrue()
|
||||||
eventSink(EditRoomAddressEvents.Save)
|
eventSink(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -212,13 +212,13 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
||||||
assertThat(canBeSaved).isTrue()
|
assertThat(canBeSaved).isTrue()
|
||||||
eventSink(EditRoomAddressEvents.Save)
|
eventSink(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -263,13 +263,13 @@ class EditRoomAddressPresenterTest {
|
|||||||
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
val presenter = createEditRoomAddressPresenter(room = room, navigator = navigator)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
||||||
assertThat(canBeSaved).isTrue()
|
assertThat(canBeSaved).isTrue()
|
||||||
eventSink(EditRoomAddressEvents.Save)
|
eventSink(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -309,13 +309,13 @@ class EditRoomAddressPresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.RoomAddressChanged("valid"))
|
eventSink(EditRoomAddressEvent.RoomAddressChanged("valid"))
|
||||||
}
|
}
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
assertThat(roomAddressValidity).isEqualTo(RoomAddressValidity.Valid)
|
||||||
assertThat(canBeSaved).isTrue()
|
assertThat(canBeSaved).isTrue()
|
||||||
eventSink(EditRoomAddressEvents.Save)
|
eventSink(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
assertThat(saveAction).isEqualTo(AsyncAction.Loading)
|
||||||
@@ -339,12 +339,12 @@ class EditRoomAddressPresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
eventSink(EditRoomAddressEvents.Save)
|
eventSink(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
assertThat(awaitItem().saveAction).isInstanceOf(AsyncAction.Loading::class.java)
|
assertThat(awaitItem().saveAction).isInstanceOf(AsyncAction.Loading::class.java)
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isInstanceOf(AsyncAction.Failure::class.java)
|
assertThat(saveAction).isInstanceOf(AsyncAction.Failure::class.java)
|
||||||
eventSink(EditRoomAddressEvents.DismissError)
|
eventSink(EditRoomAddressEvent.DismissError)
|
||||||
}
|
}
|
||||||
with(awaitItem()) {
|
with(awaitItem()) {
|
||||||
assertThat(saveAction).isEqualTo(AsyncAction.Uninitialized)
|
assertThat(saveAction).isEqualTo(AsyncAction.Uninitialized)
|
||||||
|
|||||||
+9
-9
@@ -39,7 +39,7 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `click on disabled save doesn't emit event`() = runAndroidComposeUiTest {
|
fun `click on disabled save doesn't emit event`() = runAndroidComposeUiTest {
|
||||||
val recorder = EventsRecorder<EditRoomAddressEvents>(expectEvents = false)
|
val recorder = EventsRecorder<EditRoomAddressEvent>(expectEvents = false)
|
||||||
val state = anEditRoomAddressState(eventSink = recorder)
|
val state = anEditRoomAddressState(eventSink = recorder)
|
||||||
setEditRoomAddressView(state)
|
setEditRoomAddressView(state)
|
||||||
clickOn(CommonStrings.action_save)
|
clickOn(CommonStrings.action_save)
|
||||||
@@ -48,7 +48,7 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `click on enabled save emits the expected event`() = runAndroidComposeUiTest {
|
fun `click on enabled save emits the expected event`() = runAndroidComposeUiTest {
|
||||||
val recorder = EventsRecorder<EditRoomAddressEvents>()
|
val recorder = EventsRecorder<EditRoomAddressEvent>()
|
||||||
val state = anEditRoomAddressState(
|
val state = anEditRoomAddressState(
|
||||||
roomAddress = "room",
|
roomAddress = "room",
|
||||||
roomAddressValidity = RoomAddressValidity.Valid,
|
roomAddressValidity = RoomAddressValidity.Valid,
|
||||||
@@ -56,12 +56,12 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
)
|
)
|
||||||
setEditRoomAddressView(state)
|
setEditRoomAddressView(state)
|
||||||
clickOn(CommonStrings.action_save)
|
clickOn(CommonStrings.action_save)
|
||||||
recorder.assertSingle(EditRoomAddressEvents.Save)
|
recorder.assertSingle(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `text changes on text field emits the expected event`() = runAndroidComposeUiTest {
|
fun `text changes on text field emits the expected event`() = runAndroidComposeUiTest {
|
||||||
val recorder = EventsRecorder<EditRoomAddressEvents>()
|
val recorder = EventsRecorder<EditRoomAddressEvent>()
|
||||||
val state = anEditRoomAddressState(
|
val state = anEditRoomAddressState(
|
||||||
roomAddress = "",
|
roomAddress = "",
|
||||||
eventSink = recorder
|
eventSink = recorder
|
||||||
@@ -69,12 +69,12 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
setEditRoomAddressView(state)
|
setEditRoomAddressView(state)
|
||||||
|
|
||||||
onNodeWithTag(TestTags.roomAddressField.value).performTextInput("alias")
|
onNodeWithTag(TestTags.roomAddressField.value).performTextInput("alias")
|
||||||
recorder.assertSingle(EditRoomAddressEvents.RoomAddressChanged("alias"))
|
recorder.assertSingle(EditRoomAddressEvent.RoomAddressChanged("alias"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `click on dismiss error emits the expected event`() = runAndroidComposeUiTest {
|
fun `click on dismiss error emits the expected event`() = runAndroidComposeUiTest {
|
||||||
val recorder = EventsRecorder<EditRoomAddressEvents>()
|
val recorder = EventsRecorder<EditRoomAddressEvent>()
|
||||||
val state = anEditRoomAddressState(
|
val state = anEditRoomAddressState(
|
||||||
roomAddress = "",
|
roomAddress = "",
|
||||||
saveAction = AsyncAction.Failure(IllegalStateException()),
|
saveAction = AsyncAction.Failure(IllegalStateException()),
|
||||||
@@ -82,12 +82,12 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
)
|
)
|
||||||
setEditRoomAddressView(state)
|
setEditRoomAddressView(state)
|
||||||
clickOn(CommonStrings.action_cancel)
|
clickOn(CommonStrings.action_cancel)
|
||||||
recorder.assertSingle(EditRoomAddressEvents.DismissError)
|
recorder.assertSingle(EditRoomAddressEvent.DismissError)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `click on retry error emits the expected event`() = runAndroidComposeUiTest {
|
fun `click on retry error emits the expected event`() = runAndroidComposeUiTest {
|
||||||
val recorder = EventsRecorder<EditRoomAddressEvents>()
|
val recorder = EventsRecorder<EditRoomAddressEvent>()
|
||||||
val state = anEditRoomAddressState(
|
val state = anEditRoomAddressState(
|
||||||
roomAddress = "",
|
roomAddress = "",
|
||||||
saveAction = AsyncAction.Failure(IllegalStateException()),
|
saveAction = AsyncAction.Failure(IllegalStateException()),
|
||||||
@@ -95,7 +95,7 @@ class EditRoomAddressViewTest : RobolectricTest() {
|
|||||||
)
|
)
|
||||||
setEditRoomAddressView(state)
|
setEditRoomAddressView(state)
|
||||||
clickOn(CommonStrings.action_retry)
|
clickOn(CommonStrings.action_retry)
|
||||||
recorder.assertSingle(EditRoomAddressEvents.Save)
|
recorder.assertSingle(EditRoomAddressEvent.Save)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user