ReactionSummaryEvents -> ReactionSummaryEvent

This commit is contained in:
Benoit Marty 2026-01-27 10:02:44 +01:00
parent b6fcb0240d
commit 0ca69f0e5c
8 changed files with 17 additions and 17 deletions

View file

@ -30,7 +30,7 @@ import io.element.android.features.messages.impl.timeline.aTimelineItemList
import io.element.android.features.messages.impl.timeline.aTimelineState
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvent
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
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.receipt.bottomsheet.ReadReceiptBottomSheetEvents
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetState
@ -187,7 +187,7 @@ fun aUserEventPermissions(
fun aReactionSummaryState(
target: ReactionSummaryState.Summary? = null,
eventSink: (ReactionSummaryEvents) -> Unit = {}
eventSink: (ReactionSummaryEvent) -> Unit = {}
) = ReactionSummaryState(
target = target,
eventSink = eventSink,

View file

@ -76,7 +76,7 @@ import io.element.android.features.messages.impl.timeline.aTimelineItemEvent
import io.element.android.features.messages.impl.timeline.aTimelineState
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionBottomSheet
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvent
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
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.receipt.bottomsheet.ReadReceiptBottomSheet
import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetEvents
@ -187,7 +187,7 @@ fun MessagesView(
fun onEmojiReactionLongClick(emoji: String, event: TimelineItem.Event) {
if (event.eventId == null) return
state.reactionSummaryState.eventSink(ReactionSummaryEvents.ShowReactionSummary(event.eventId, event.reactionsState.reactions, emoji))
state.reactionSummaryState.eventSink(ReactionSummaryEvent.ShowReactionSummary(event.eventId, event.reactionsState.reactions, emoji))
}
fun onMoreReactionsClick(event: TimelineItem.Event) {

View file

@ -11,7 +11,7 @@ package io.element.android.features.messages.impl.timeline.components.reactionsu
import io.element.android.features.messages.impl.timeline.model.AggregatedReaction
import io.element.android.libraries.matrix.api.core.EventId
sealed interface ReactionSummaryEvents {
data object Clear : ReactionSummaryEvents
data class ShowReactionSummary(val eventId: EventId, val reactions: List<AggregatedReaction>, val selectedKey: String) : ReactionSummaryEvents
sealed interface ReactionSummaryEvent {
data object Clear : ReactionSummaryEvent
data class ShowReactionSummary(val eventId: EventId, val reactions: List<AggregatedReaction>, val selectedKey: String) : ReactionSummaryEvent
}

View file

@ -37,14 +37,14 @@ class ReactionSummaryPresenter(
}
val targetWithAvatars = populateSenderAvatars(members = membersState.roomMembers().orEmpty().toImmutableList(), summary = target.value)
fun handleEvent(event: ReactionSummaryEvents) {
fun handleEvent(event: ReactionSummaryEvent) {
when (event) {
is ReactionSummaryEvents.ShowReactionSummary -> target.value = ReactionSummaryState.Summary(
is ReactionSummaryEvent.ShowReactionSummary -> target.value = ReactionSummaryState.Summary(
reactions = event.reactions.toImmutableList(),
selectedKey = event.selectedKey,
selectedEventId = event.eventId
)
ReactionSummaryEvents.Clear -> target.value = null
ReactionSummaryEvent.Clear -> target.value = null
}
}
return ReactionSummaryState(

View file

@ -14,7 +14,7 @@ import kotlinx.collections.immutable.ImmutableList
data class ReactionSummaryState(
val target: Summary?,
val eventSink: (ReactionSummaryEvents) -> Unit
val eventSink: (ReactionSummaryEvent) -> Unit
) {
data class Summary(
val reactions: ImmutableList<AggregatedReaction>,

View file

@ -84,7 +84,7 @@ fun ReactionSummaryView(
modifier: Modifier = Modifier,
) {
fun onDismiss() {
state.eventSink(ReactionSummaryEvents.Clear)
state.eventSink(ReactionSummaryEvent.Clear)
}
if (state.target != null) {

View file

@ -48,7 +48,7 @@ import io.element.android.features.messages.impl.timeline.aTimelineRoomInfo
import io.element.android.features.messages.impl.timeline.aTimelineState
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvent
import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionState
import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents
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.bottomsheet.ReadReceiptBottomSheetEvents
import io.element.android.features.messages.impl.timeline.model.TimelineItem
@ -406,7 +406,7 @@ class MessagesViewTest {
@Test
fun `long clicking on a reaction emits the expected Event`() {
val eventsRecorder = EventsRecorder<ReactionSummaryEvents>()
val eventsRecorder = EventsRecorder<ReactionSummaryEvent>()
val state = aMessagesState(
timelineState = aTimelineState(
timelineItems = aTimelineItemList(aTimelineItemTextContent()),
@ -424,7 +424,7 @@ class MessagesViewTest {
text = "👍️",
useUnmergedTree = true,
).onFirst().performTouchInput { longClick() }
eventsRecorder.assertSingle(ReactionSummaryEvents.ShowReactionSummary(timelineItem.eventId!!, timelineItem.reactionsState.reactions, "👍️"))
eventsRecorder.assertSingle(ReactionSummaryEvent.ShowReactionSummary(timelineItem.eventId!!, timelineItem.reactionsState.reactions, "👍️"))
}
@Test

View file

@ -32,7 +32,7 @@ class ReactionSummaryPresenterTest {
private val aggregatedReaction = anAggregatedReaction(userId = A_USER_ID, key = "👍", isHighlighted = true)
private val roomMember = aRoomMember(userId = A_USER_ID, avatarUrl = AN_AVATAR_URL, displayName = A_USER_NAME)
private val summaryEvent = ReactionSummaryEvents.ShowReactionSummary(AN_EVENT_ID, listOf(aggregatedReaction), aggregatedReaction.key)
private val summaryEvent = ReactionSummaryEvent.ShowReactionSummary(AN_EVENT_ID, listOf(aggregatedReaction), aggregatedReaction.key)
private val room = FakeBaseRoom().apply {
givenRoomMembersState(RoomMembersState.Ready(persistentListOf(roomMember)))
}
@ -49,7 +49,7 @@ class ReactionSummaryPresenterTest {
initialState.eventSink(summaryEvent)
assertThat(awaitItem().target).isNotNull()
initialState.eventSink(ReactionSummaryEvents.Clear)
initialState.eventSink(ReactionSummaryEvent.Clear)
assertThat(awaitItem().target).isNull()
}
}