ReadReceiptBottomSheetEvents -> ReadReceiptBottomSheetEvent
This commit is contained in:
parent
dd7c9dee78
commit
c74169d893
8 changed files with 19 additions and 19 deletions
|
|
@ -32,7 +32,7 @@ import io.element.android.features.messages.impl.timeline.components.customreact
|
||||||
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
|
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryState
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryState
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvent
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetState
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetState
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
|
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
|
||||||
|
|
@ -206,7 +206,7 @@ fun aCustomReactionState(
|
||||||
|
|
||||||
fun aReadReceiptBottomSheetState(
|
fun aReadReceiptBottomSheetState(
|
||||||
selectedEvent: TimelineItem.Event? = null,
|
selectedEvent: TimelineItem.Event? = null,
|
||||||
eventSink: (ReadReceiptBottomSheetEvents) -> Unit = {},
|
eventSink: (ReadReceiptBottomSheetEvent) -> Unit = {},
|
||||||
) = ReadReceiptBottomSheetState(
|
) = ReadReceiptBottomSheetState(
|
||||||
selectedEvent = selectedEvent,
|
selectedEvent = selectedEvent,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ import io.element.android.features.messages.impl.timeline.components.customreact
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryView
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryView
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheet
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheet
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvent
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItemGroupPosition
|
import io.element.android.features.messages.impl.timeline.model.TimelineItemGroupPosition
|
||||||
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemStateEventContent
|
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemStateEventContent
|
||||||
|
|
@ -259,7 +259,7 @@ fun MessagesView(
|
||||||
onReactionLongClick = ::onEmojiReactionLongClick,
|
onReactionLongClick = ::onEmojiReactionLongClick,
|
||||||
onMoreReactionsClick = ::onMoreReactionsClick,
|
onMoreReactionsClick = ::onMoreReactionsClick,
|
||||||
onReadReceiptClick = { event ->
|
onReadReceiptClick = { event ->
|
||||||
state.readReceiptBottomSheetState.eventSink(ReadReceiptBottomSheetEvents.EventSelected(event))
|
state.readReceiptBottomSheetState.eventSink(ReadReceiptBottomSheetEvent.EventSelected(event))
|
||||||
},
|
},
|
||||||
onSendLocationClick = onSendLocationClick,
|
onSendLocationClick = onSendLocationClick,
|
||||||
onCreatePollClick = onCreatePollClick,
|
onCreatePollClick = onCreatePollClick,
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ internal fun ReadReceiptBottomSheet(
|
||||||
onDismissRequest = {
|
onDismissRequest = {
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
sheetState.hide()
|
sheetState.hide()
|
||||||
state.eventSink(ReadReceiptBottomSheetEvents.Dismiss)
|
state.eventSink(ReadReceiptBottomSheetEvent.Dismiss)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
|
|
@ -64,7 +64,7 @@ internal fun ReadReceiptBottomSheet(
|
||||||
onUserDataClick = {
|
onUserDataClick = {
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
sheetState.hide()
|
sheetState.hide()
|
||||||
state.eventSink(ReadReceiptBottomSheetEvents.Dismiss)
|
state.eventSink(ReadReceiptBottomSheetEvent.Dismiss)
|
||||||
onUserDataClick.invoke(it)
|
onUserDataClick.invoke(it)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ package io.element.android.features.messages.impl.timeline.components.receipt.bo
|
||||||
|
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
|
|
||||||
sealed interface ReadReceiptBottomSheetEvents {
|
sealed interface ReadReceiptBottomSheetEvent {
|
||||||
data class EventSelected(val event: TimelineItem.Event) : ReadReceiptBottomSheetEvents
|
data class EventSelected(val event: TimelineItem.Event) : ReadReceiptBottomSheetEvent
|
||||||
data object Dismiss : ReadReceiptBottomSheetEvents
|
data object Dismiss : ReadReceiptBottomSheetEvent
|
||||||
}
|
}
|
||||||
|
|
@ -23,13 +23,13 @@ class ReadReceiptBottomSheetPresenter : Presenter<ReadReceiptBottomSheetState> {
|
||||||
override fun present(): ReadReceiptBottomSheetState {
|
override fun present(): ReadReceiptBottomSheetState {
|
||||||
var selectedEvent: TimelineItem.Event? by remember { mutableStateOf(null) }
|
var selectedEvent: TimelineItem.Event? by remember { mutableStateOf(null) }
|
||||||
|
|
||||||
fun handleEvent(event: ReadReceiptBottomSheetEvents) {
|
fun handleEvent(event: ReadReceiptBottomSheetEvent) {
|
||||||
@Suppress("LiftReturnOrAssignment")
|
@Suppress("LiftReturnOrAssignment")
|
||||||
when (event) {
|
when (event) {
|
||||||
is ReadReceiptBottomSheetEvents.EventSelected -> {
|
is ReadReceiptBottomSheetEvent.EventSelected -> {
|
||||||
selectedEvent = event.event
|
selectedEvent = event.event
|
||||||
}
|
}
|
||||||
ReadReceiptBottomSheetEvents.Dismiss -> {
|
ReadReceiptBottomSheetEvent.Dismiss -> {
|
||||||
selectedEvent = null
|
selectedEvent = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,5 +12,5 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
|
|
||||||
data class ReadReceiptBottomSheetState(
|
data class ReadReceiptBottomSheetState(
|
||||||
val selectedEvent: TimelineItem.Event?,
|
val selectedEvent: TimelineItem.Event?,
|
||||||
val eventSink: (ReadReceiptBottomSheetEvents) -> Unit,
|
val eventSink: (ReadReceiptBottomSheetEvent) -> Unit,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ import io.element.android.features.messages.impl.timeline.components.customreact
|
||||||
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
|
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
|
||||||
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvent
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData
|
import io.element.android.features.messages.impl.timeline.components.receipt.aReadReceiptData
|
||||||
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
|
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvent
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
|
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -216,7 +216,7 @@ class MessagesViewTest {
|
||||||
@Test
|
@Test
|
||||||
@Config(qualifiers = "h1024dp")
|
@Config(qualifiers = "h1024dp")
|
||||||
fun `clicking on a read receipt list emits the expected Event`() {
|
fun `clicking on a read receipt list emits the expected Event`() {
|
||||||
val eventsRecorder = EventsRecorder<ReadReceiptBottomSheetEvents>()
|
val eventsRecorder = EventsRecorder<ReadReceiptBottomSheetEvent>()
|
||||||
val state = aMessagesState(
|
val state = aMessagesState(
|
||||||
timelineState = aTimelineState(
|
timelineState = aTimelineState(
|
||||||
renderReadReceipts = true,
|
renderReadReceipts = true,
|
||||||
|
|
@ -239,7 +239,7 @@ class MessagesViewTest {
|
||||||
state = state,
|
state = state,
|
||||||
)
|
)
|
||||||
rule.onNodeWithTag(TestTags.messageReadReceipts.value, useUnmergedTree = true).performClick()
|
rule.onNodeWithTag(TestTags.messageReadReceipts.value, useUnmergedTree = true).performClick()
|
||||||
eventsRecorder.assertSingle(ReadReceiptBottomSheetEvents.EventSelected(timelineItem))
|
eventsRecorder.assertSingle(ReadReceiptBottomSheetEvent.EventSelected(timelineItem))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class ReadReceiptBottomSheetPresenterTest {
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
val selectedEvent = aTimelineItemEvent()
|
val selectedEvent = aTimelineItemEvent()
|
||||||
initialState.eventSink(ReadReceiptBottomSheetEvents.EventSelected(selectedEvent))
|
initialState.eventSink(ReadReceiptBottomSheetEvent.EventSelected(selectedEvent))
|
||||||
assertThat(awaitItem().selectedEvent).isSameInstanceAs(selectedEvent)
|
assertThat(awaitItem().selectedEvent).isSameInstanceAs(selectedEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -43,9 +43,9 @@ class ReadReceiptBottomSheetPresenterTest {
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
val selectedEvent = aTimelineItemEvent()
|
val selectedEvent = aTimelineItemEvent()
|
||||||
initialState.eventSink(ReadReceiptBottomSheetEvents.EventSelected(selectedEvent))
|
initialState.eventSink(ReadReceiptBottomSheetEvent.EventSelected(selectedEvent))
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
initialState.eventSink(ReadReceiptBottomSheetEvents.Dismiss)
|
initialState.eventSink(ReadReceiptBottomSheetEvent.Dismiss)
|
||||||
assertThat(awaitItem().selectedEvent).isNull()
|
assertThat(awaitItem().selectedEvent).isNull()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue