From 4dcafb6aa6d9a305f28dbb5f6e40f278e3234082 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 10 Jan 2024 15:42:03 +0100 Subject: [PATCH 1/2] Remove ReadReceipts feature flag. --- .../impl/timeline/TimelinePresenter.kt | 12 +--------- .../messages/impl/timeline/TimelineState.kt | 1 - .../impl/timeline/TimelineStateProvider.kt | 1 - .../messages/impl/timeline/TimelineView.kt | 1 - .../components/ATimelineItemEventRow.kt | 2 -- .../components/TimelineItemEventRow.kt | 2 -- .../TimelineItemEventRowWithRRPreview.kt | 3 --- .../TimelineItemGroupedEventsRow.kt | 9 +------ .../timeline/components/TimelineItemRow.kt | 4 ---- .../components/TimelineItemStateEventRow.kt | 3 --- .../receipt/TimelineItemReadReceiptView.kt | 24 ++++++++----------- .../messages/impl/MessagesPresenterTest.kt | 1 - .../impl/timeline/TimelinePresenterTest.kt | 13 ++-------- .../libraries/featureflag/api/FeatureFlags.kt | 7 ------ .../impl/StaticFeatureFlagProvider.kt | 1 - 15 files changed, 14 insertions(+), 70 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 31e36e86f9..9e21778169 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -40,8 +40,6 @@ import io.element.android.features.poll.api.actions.EndPollAction import io.element.android.features.poll.api.actions.SendPollResponseAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.CoroutineDispatchers -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.encryption.BackupState import io.element.android.libraries.matrix.api.encryption.EncryptionService @@ -71,7 +69,6 @@ class TimelinePresenter @AssistedInject constructor( @Assisted private val navigator: MessagesNavigator, private val verificationService: SessionVerificationService, private val encryptionService: EncryptionService, - private val featureFlagService: FeatureFlagService, private val redactedVoiceMessageManager: RedactedVoiceMessageManager, private val sendPollResponseAction: SendPollResponseAction, private val endPollAction: EndPollAction, @@ -115,7 +112,6 @@ class TimelinePresenter @AssistedInject constructor( } } - val readReceiptsEnabled by featureFlagService.isFeatureEnabledFlow(FeatureFlags.ReadReceipts).collectAsState(initial = false) val membersState by room.membersStateFlow.collectAsState() fun handleEvents(event: TimelineEvents) { @@ -159,12 +155,7 @@ class TimelinePresenter @AssistedInject constructor( .onEach { timelineItemsFactory.replaceWith( timelineItems = it, - roomMembers = if (readReceiptsEnabled) { - membersState.roomMembers().orEmpty() - } else { - // Give an empty list to not affect performance - emptyList() - } + roomMembers = membersState.roomMembers().orEmpty() ) } .onEach { timelineItems -> @@ -190,7 +181,6 @@ class TimelinePresenter @AssistedInject constructor( highlightedEventId = highlightedEventId.value, paginationState = paginationState, timelineItems = timelineItems, - showReadReceipts = readReceiptsEnabled, newEventState = newItemState.value, sessionState = sessionState, eventSink = { handleEvents(it) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt index abf7e626a3..ef25d94ebc 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineState.kt @@ -28,7 +28,6 @@ import kotlinx.collections.immutable.ImmutableList data class TimelineState( val timelineItems: ImmutableList, val timelineRoomInfo: TimelineRoomInfo, - val showReadReceipts: Boolean, val highlightedEventId: EventId?, val paginationState: MatrixTimeline.PaginationState, val newEventState: NewEventState, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index 0270b09a74..6e6febc949 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -48,7 +48,6 @@ import kotlin.random.Random fun aTimelineState(timelineItems: ImmutableList = persistentListOf()) = TimelineState( timelineItems = timelineItems, timelineRoomInfo = aTimelineRoomInfo(), - showReadReceipts = false, paginationState = MatrixTimeline.PaginationState( isBackPaginating = false, hasMoreToLoadBackwards = true, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt index 0d50631560..4f686e594b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineView.kt @@ -119,7 +119,6 @@ fun TimelineView( TimelineItemRow( timelineItem = timelineItem, timelineRoomInfo = state.timelineRoomInfo, - showReadReceipts = state.showReadReceipts, isLastOutgoingMessage = (timelineItem as? TimelineItem.Event)?.isMine == true && state.timelineItems.first().identifier() == timelineItem.identifier(), highlightedItem = state.highlightedEventId?.value, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ATimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ATimelineItemEventRow.kt index 6c65ecf828..a7c860f46e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ATimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/ATimelineItemEventRow.kt @@ -26,13 +26,11 @@ import io.element.android.features.messages.impl.timeline.model.TimelineItem internal fun ATimelineItemEventRow( event: TimelineItem.Event, timelineRoomInfo: TimelineRoomInfo = aTimelineRoomInfo(), - showReadReceipts: Boolean = false, isLastOutgoingMessage: Boolean = false, isHighlighted: Boolean = false, ) = TimelineItemEventRow( event = event, timelineRoomInfo = timelineRoomInfo, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, isHighlighted = isHighlighted, onClick = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt index 474648d9c3..7ef8ea8141 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt @@ -114,7 +114,6 @@ import kotlin.math.roundToInt fun TimelineItemEventRow( event: TimelineItem.Event, timelineRoomInfo: TimelineRoomInfo, - showReadReceipts: Boolean, isLastOutgoingMessage: Boolean, isHighlighted: Boolean, onClick: () -> Unit, @@ -224,7 +223,6 @@ fun TimelineItemEventRow( isLastOutgoingMessage = isLastOutgoingMessage, receipts = event.readReceiptState.receipts, ), - showReadReceipts = showReadReceipts, onReadReceiptsClicked = { onReadReceiptClick(event) }, modifier = Modifier.padding(top = 4.dp), ) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithRRPreview.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithRRPreview.kt index 4a9972d19b..0e43e34670 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithRRPreview.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRowWithRRPreview.kt @@ -47,7 +47,6 @@ internal fun TimelineItemEventRowWithRRPreview( timelineItemReactions = aTimelineItemReactions(count = 0), readReceiptState = TimelineItemReadReceipts(state.receipts), ), - showReadReceipts = true, isLastOutgoingMessage = false, ) // A message from current user @@ -61,7 +60,6 @@ internal fun TimelineItemEventRowWithRRPreview( timelineItemReactions = aTimelineItemReactions(count = 0), readReceiptState = TimelineItemReadReceipts(state.receipts), ), - showReadReceipts = true, isLastOutgoingMessage = false, ) // Another message from current user @@ -75,7 +73,6 @@ internal fun TimelineItemEventRowWithRRPreview( timelineItemReactions = aTimelineItemReactions(count = 0), readReceiptState = TimelineItemReadReceipts(state.receipts), ), - showReadReceipts = true, isLastOutgoingMessage = true, ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt index d337044e94..af7437716e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt @@ -43,7 +43,6 @@ import io.element.android.libraries.matrix.api.core.UserId fun TimelineItemGroupedEventsRow( timelineItem: TimelineItem.GroupedEvents, timelineRoomInfo: TimelineRoomInfo, - showReadReceipts: Boolean, isLastOutgoingMessage: Boolean, highlightedItem: String?, sessionState: SessionState, @@ -71,7 +70,6 @@ fun TimelineItemGroupedEventsRow( timelineItem = timelineItem, timelineRoomInfo = timelineRoomInfo, highlightedItem = highlightedItem, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, sessionState = sessionState, onClick = onClick, @@ -95,7 +93,6 @@ private fun TimelineItemGroupedEventsRowContent( timelineItem: TimelineItem.GroupedEvents, timelineRoomInfo: TimelineRoomInfo, highlightedItem: String?, - showReadReceipts: Boolean, isLastOutgoingMessage: Boolean, sessionState: SessionState, onClick: (TimelineItem.Event) -> Unit, @@ -127,7 +124,6 @@ private fun TimelineItemGroupedEventsRowContent( TimelineItemRow( timelineItem = subGroupEvent, timelineRoomInfo = timelineRoomInfo, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, highlightedItem = highlightedItem, sessionState = sessionState, @@ -145,14 +141,13 @@ private fun TimelineItemGroupedEventsRowContent( ) } } - } else if (showReadReceipts) { + } else { TimelineItemReadReceiptView( state = ReadReceiptViewState( sendState = null, isLastOutgoingMessage = false, receipts = timelineItem.aggregatedReadReceipts, ), - showReadReceipts = true, onReadReceiptsClicked = onExpandGroupClick ) } @@ -168,7 +163,6 @@ internal fun TimelineItemGroupedEventsRowContentExpandedPreview() = ElementPrevi timelineItem = aGroupedEvents(), timelineRoomInfo = aTimelineRoomInfo(), highlightedItem = null, - showReadReceipts = true, isLastOutgoingMessage = false, sessionState = aSessionState(), onClick = {}, @@ -193,7 +187,6 @@ internal fun TimelineItemGroupedEventsRowContentCollapsePreview() = ElementPrevi timelineItem = aGroupedEvents(), timelineRoomInfo = aTimelineRoomInfo(), highlightedItem = null, - showReadReceipts = true, isLastOutgoingMessage = false, sessionState = aSessionState(), onClick = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt index b7ab65e69e..2fe1080743 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemRow.kt @@ -30,7 +30,6 @@ import io.element.android.libraries.matrix.api.core.UserId internal fun TimelineItemRow( timelineItem: TimelineItem, timelineRoomInfo: TimelineRoomInfo, - showReadReceipts: Boolean, isLastOutgoingMessage: Boolean, highlightedItem: String?, sessionState: SessionState, @@ -59,7 +58,6 @@ internal fun TimelineItemRow( if (timelineItem.content is TimelineItemStateContent) { TimelineItemStateEventRow( event = timelineItem, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, isHighlighted = highlightedItem == timelineItem.identifier(), onClick = { onClick(timelineItem) }, @@ -72,7 +70,6 @@ internal fun TimelineItemRow( TimelineItemEventRow( event = timelineItem, timelineRoomInfo = timelineRoomInfo, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, isHighlighted = highlightedItem == timelineItem.identifier(), onClick = { onClick(timelineItem) }, @@ -94,7 +91,6 @@ internal fun TimelineItemRow( TimelineItemGroupedEventsRow( timelineItem = timelineItem, timelineRoomInfo = timelineRoomInfo, - showReadReceipts = showReadReceipts, isLastOutgoingMessage = isLastOutgoingMessage, highlightedItem = highlightedItem, sessionState = sessionState, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemStateEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemStateEventRow.kt index d126b3c2b2..85eba29bc1 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemStateEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemStateEventRow.kt @@ -47,7 +47,6 @@ import kotlinx.collections.immutable.toPersistentList @Composable fun TimelineItemStateEventRow( event: TimelineItem.Event, - showReadReceipts: Boolean, isLastOutgoingMessage: Boolean, isHighlighted: Boolean, onClick: () -> Unit, @@ -91,7 +90,6 @@ fun TimelineItemStateEventRow( isLastOutgoingMessage = isLastOutgoingMessage, receipts = event.readReceiptState.receipts, ), - showReadReceipts = showReadReceipts, onReadReceiptsClicked = { onReadReceiptsClick(event) }, ) } @@ -109,7 +107,6 @@ internal fun TimelineItemStateEventRowPreview() = ElementPreview { receipts = listOf(aReadReceiptData(0)).toPersistentList(), ) ), - showReadReceipts = true, isLastOutgoingMessage = false, isHighlighted = false, onClick = {}, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt index a0ca30f199..f50aba3e9e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/receipt/TimelineItemReadReceiptView.kt @@ -58,23 +58,20 @@ import kotlinx.collections.immutable.ImmutableList @Composable fun TimelineItemReadReceiptView( state: ReadReceiptViewState, - showReadReceipts: Boolean, onReadReceiptsClicked: () -> Unit, modifier: Modifier = Modifier, ) { if (state.receipts.isNotEmpty()) { - if (showReadReceipts) { - ReadReceiptsRow(modifier = modifier) { - ReadReceiptsAvatars( - receipts = state.receipts, - modifier = Modifier - .clip(RoundedCornerShape(4.dp)) - .clickable { - onReadReceiptsClicked() - } - .padding(2.dp) - ) - } + ReadReceiptsRow(modifier = modifier) { + ReadReceiptsAvatars( + receipts = state.receipts, + modifier = Modifier + .clip(RoundedCornerShape(4.dp)) + .clickable { + onReadReceiptsClicked() + } + .padding(2.dp) + ) } } else { when (state.sendState) { @@ -209,7 +206,6 @@ internal fun TimelineItemReactionsViewPreview( ) = ElementPreview { TimelineItemReadReceiptView( state = state, - showReadReceipts = true, onReadReceiptsClicked = {}, ) } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt index e173279ce9..843845de83 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt @@ -685,7 +685,6 @@ class MessagesPresenterTest { navigator = navigator, encryptionService = FakeEncryptionService(), verificationService = FakeSessionVerificationService(), - featureFlagService = FakeFeatureFlagService(), redactedVoiceMessageManager = FakeRedactedVoiceMessageManager(), endPollAction = FakeEndPollAction(), sendPollResponseAction = FakeSendPollResponseAction(), diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt index 8bb3c0dcb8..6726583ab0 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenterTest.kt @@ -35,7 +35,6 @@ import io.element.android.features.poll.api.actions.SendPollResponseAction import io.element.android.features.poll.test.actions.FakeEndPollAction import io.element.android.features.poll.test.actions.FakeSendPollResponseAction import io.element.android.libraries.featureflag.api.FeatureFlags -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.timeline.MatrixTimeline import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction @@ -89,7 +88,7 @@ class TimelinePresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - val initialState = awaitFirstItem() + val initialState = awaitItem() assertThat(initialState.paginationState.hasMoreToLoadBackwards).isTrue() assertThat(initialState.paginationState.isBackPaginating).isFalse() initialState.eventSink.invoke(TimelineEvents.LoadMore) @@ -133,8 +132,6 @@ class TimelinePresenterTest { }.test { assertThat(timeline.sendReadReceiptCount).isEqualTo(0) val initialState = awaitFirstItem() - // Wait for timeline items to be populated - skipItems(1) awaitWithLatch { latch -> timeline.sendReadReceiptLatch = latch initialState.eventSink.invoke(TimelineEvents.OnScrollFinished(0)) @@ -157,8 +154,6 @@ class TimelinePresenterTest { }.test { assertThat(timeline.sendReadReceiptCount).isEqualTo(0) val initialState = awaitFirstItem() - // Wait for timeline items to be populated - skipItems(1) awaitWithLatch { latch -> timeline.sendReadReceiptLatch = latch initialState.eventSink.invoke(TimelineEvents.OnScrollFinished(1)) @@ -181,8 +176,6 @@ class TimelinePresenterTest { }.test { assertThat(timeline.sendReadReceiptCount).isEqualTo(0) val initialState = awaitFirstItem() - // Wait for timeline items to be populated - skipItems(1) awaitWithLatch { latch -> timeline.sendReadReceiptLatch = latch initialState.eventSink.invoke(TimelineEvents.OnScrollFinished(0)) @@ -354,8 +347,7 @@ class TimelinePresenterTest { presenter.present() }.test { assertThat(redactedVoiceMessageManager.invocations.size).isEqualTo(0) - awaitFirstItem() - awaitItem().let { + awaitFirstItem().let { assertThat(it.timelineItems).isNotEmpty() } assertThat(redactedVoiceMessageManager.invocations.size).isEqualTo(1) @@ -386,7 +378,6 @@ class TimelinePresenterTest { navigator = messagesNavigator, encryptionService = FakeEncryptionService(), verificationService = FakeSessionVerificationService(), - featureFlagService = FakeFeatureFlagService(), redactedVoiceMessageManager = redactedVoiceMessageManager, endPollAction = endPollAction, sendPollResponseAction = sendPollResponseAction, diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 59ec586004..61c155caac 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -75,11 +75,4 @@ enum class FeatureFlags( defaultValue = true, isFinished = false, ), - ReadReceipts( - key = "feature.readreceipts", - title = "Show read receipts", - description = null, - defaultValue = true, - isFinished = false, - ), } diff --git a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt index 7866ac1f1f..585699da1f 100644 --- a/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt +++ b/libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt @@ -41,7 +41,6 @@ class StaticFeatureFlagProvider @Inject constructor() : FeatureFlags.PinUnlock -> true FeatureFlags.Mentions -> true FeatureFlags.SecureStorage -> true - FeatureFlags.ReadReceipts -> true } } else { false From 439c2f191b791fe85ed93e81011b910a37075334 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 11 Jan 2024 15:56:37 +0100 Subject: [PATCH 2/2] Ensure preview are not impacted when removing the ReadReceipt feature flag. --- .../messages/impl/timeline/TimelineStateProvider.kt | 9 ++++++--- .../timeline/components/TimelineItemGroupedEventsRow.kt | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt index 6e6febc949..3012a095e8 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelineStateProvider.kt @@ -189,13 +189,16 @@ internal fun aTimelineItemReadReceipts(): TimelineItemReadReceipts { ) } -internal fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents { +internal fun aGroupedEvents( + id: Long = 0, + withReadReceipts: Boolean = false, +): TimelineItem.GroupedEvents { val event1 = aTimelineItemEvent( isMine = true, content = aTimelineItemStateEventContent(), groupPosition = TimelineItemGroupPosition.None, readReceiptState = TimelineItemReadReceipts( - receipts = listOf(aReadReceiptData(0)).toPersistentList(), + receipts = (if (withReadReceipts) listOf(aReadReceiptData(0)) else emptyList()).toImmutableList() ), ) val event2 = aTimelineItemEvent( @@ -203,7 +206,7 @@ internal fun aGroupedEvents(id: Long = 0): TimelineItem.GroupedEvents { content = aTimelineItemStateEventContent(body = "Another state event"), groupPosition = TimelineItemGroupPosition.None, readReceiptState = TimelineItemReadReceipts( - receipts = listOf(aReadReceiptData(1)).toPersistentList(), + receipts = (if (withReadReceipts) listOf(aReadReceiptData(1)) else emptyList()).toImmutableList() ), ) val events = listOf(event1, event2) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt index af7437716e..5ca78adee6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemGroupedEventsRow.kt @@ -160,7 +160,7 @@ internal fun TimelineItemGroupedEventsRowContentExpandedPreview() = ElementPrevi TimelineItemGroupedEventsRowContent( isExpanded = true, onExpandGroupClick = {}, - timelineItem = aGroupedEvents(), + timelineItem = aGroupedEvents(withReadReceipts = true), timelineRoomInfo = aTimelineRoomInfo(), highlightedItem = null, isLastOutgoingMessage = false, @@ -184,7 +184,7 @@ internal fun TimelineItemGroupedEventsRowContentCollapsePreview() = ElementPrevi TimelineItemGroupedEventsRowContent( isExpanded = false, onExpandGroupClick = {}, - timelineItem = aGroupedEvents(), + timelineItem = aGroupedEvents(withReadReceipts = true), timelineRoomInfo = aTimelineRoomInfo(), highlightedItem = null, isLastOutgoingMessage = false,