diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt index da278904a3..f581149ad2 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesStateProvider.kt @@ -30,6 +30,7 @@ import io.element.android.features.messages.impl.timeline.components.reactionsum import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryState import io.element.android.features.messages.impl.timeline.components.receipt.bottomsheet.ReadReceiptBottomSheetState import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMenuState +import io.element.android.features.messages.impl.timeline.components.retrysendmenu.aRetrySendMenuState import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent import io.element.android.features.messages.impl.typing.aTypingNotificationState import io.element.android.features.messages.impl.voicemessages.composer.VoiceMessageComposerState @@ -97,6 +98,7 @@ fun aMessagesState( mode = MessageComposerMode.Normal, ), voiceMessageComposerState: VoiceMessageComposerState = aVoiceMessageComposerState(), + retrySendMenuState: RetrySendMenuState = aRetrySendMenuState(), actionListState: ActionListState = anActionListState(), customReactionState: CustomReactionState = aCustomReactionState(), reactionSummaryState: ReactionSummaryState = aReactionSummaryState(), @@ -119,10 +121,7 @@ fun aMessagesState( timelineItems = aTimelineItemList(aTimelineItemTextContent()), ), typingNotificationState = aTypingNotificationState(), - retrySendMenuState = RetrySendMenuState( - selectedEvent = null, - eventSink = {}, - ), + retrySendMenuState = retrySendMenuState, readReceiptBottomSheetState = ReadReceiptBottomSheetState( selectedEvent = null, eventSink = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuStateProvider.kt index ccb5c26982..14353ddd09 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/retrysendmenu/RetrySendMenuStateProvider.kt @@ -22,10 +22,15 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem class RetrySendMenuStateProvider : PreviewParameterProvider { override val values: Sequence = sequenceOf( - aRetrySendMenuState(event = null), + aRetrySendMenuState(), aRetrySendMenuState(event = aTimelineItemEvent()), ) } -fun aRetrySendMenuState(event: TimelineItem.Event? = aTimelineItemEvent()) = - RetrySendMenuState(selectedEvent = event, eventSink = {}) +fun aRetrySendMenuState( + event: TimelineItem.Event? = null, + eventSink: (RetrySendMenuEvents) -> Unit = {}, +) = RetrySendMenuState( + selectedEvent = event, + eventSink = eventSink, +) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt index 449abc3f46..1eb4f54d76 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesViewTest.kt @@ -38,6 +38,8 @@ import io.element.android.features.messages.impl.attachments.Attachment import io.element.android.features.messages.impl.messagecomposer.aMessageComposerState import io.element.android.features.messages.impl.timeline.components.customreaction.CustomReactionEvents import io.element.android.features.messages.impl.timeline.components.reactionsummary.ReactionSummaryEvents +import io.element.android.features.messages.impl.timeline.components.retrysendmenu.RetrySendMenuEvents +import io.element.android.features.messages.impl.timeline.components.retrysendmenu.aRetrySendMenuState import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.testtags.TestTags @@ -128,6 +130,22 @@ class MessagesViewTest { callback.assertSuccess() } + @Test + fun `clicking on an Event timestamp in error emits the expected Event`() { + val eventsRecorder = EventsRecorder() + val state = aMessagesState( + retrySendMenuState = aRetrySendMenuState( + eventSink = eventsRecorder + ), + ) + val timelineItem = state.timelineState.timelineItems[1] as TimelineItem.Event + rule.setMessagesView( + state = state, + ) + rule.onAllNodesWithText(timelineItem.sentTime)[1].performClick() + eventsRecorder.assertSingle(RetrySendMenuEvents.EventSelected(timelineItem)) + } + @Test fun `clicking on send location invoke expected callback`() { val eventsRecorder = EventsRecorder(expectEvents = false)