From 0bf846086f6ec6e987b7a58707c9e0ef13d7d61e Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 10 Sep 2024 13:49:12 +0200 Subject: [PATCH 1/2] Pinned messages : allow to unpin redacted message --- .../features/messages/impl/actionlist/ActionListPresenter.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt index 840e12583f..f4882ea7b0 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/ActionListPresenter.kt @@ -190,9 +190,9 @@ private fun List.postFilter(content: TimelineItemEventConten when (content) { is TimelineItemCallNotifyContent, is TimelineItemLegacyCallInviteContent, - is TimelineItemStateContent, + is TimelineItemStateContent -> action == TimelineItemAction.ViewSource is TimelineItemRedactedContent -> { - action == TimelineItemAction.ViewSource + action == TimelineItemAction.ViewSource || action == TimelineItemAction.Unpin } else -> true } From 004cb7404a9a514ddd64d96375a48b882ea11e6c Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 10 Sep 2024 13:49:40 +0200 Subject: [PATCH 2/2] Pinned messages : remove redact action from the pinned message list action menu. --- .../list/PinnedMessagesListPresenter.kt | 8 ----- ...MessagesListTimelineActionPostProcessor.kt | 1 - .../list/PinnedMessagesListPresenterTest.kt | 29 ------------------- 3 files changed, 38 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt index c25675c7f7..4b6f3e64d4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt @@ -112,7 +112,6 @@ class PinnedMessagesListPresenter @AssistedInject constructor( targetEvent: TimelineItem.Event, ) = launch { when (action) { - TimelineItemAction.Redact -> handleActionRedact(targetEvent) TimelineItemAction.ViewSource -> { navigator.onShowEventDebugInfoClick(targetEvent.eventId, targetEvent.debugInfo) } @@ -142,13 +141,6 @@ class PinnedMessagesListPresenter @AssistedInject constructor( } } - private suspend fun handleActionRedact(event: TimelineItem.Event) { - timelineProvider.invokeOnTimeline { - redactEvent(eventId = event.eventId, transactionId = event.transactionId, reason = null) - .onFailure { Timber.e(it) } - } - } - @Composable private fun userEventPermissions(updateKey: Long): State { return produceState(UserEventPermissions.DEFAULT, key1 = updateKey) { diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListTimelineActionPostProcessor.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListTimelineActionPostProcessor.kt index 3e88a9d716..48fdb83d79 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListTimelineActionPostProcessor.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListTimelineActionPostProcessor.kt @@ -17,7 +17,6 @@ class PinnedMessagesListTimelineActionPostProcessor : TimelineItemActionPostProc actions.firstOrNull { it is TimelineItemAction.Unpin }?.let(::add) actions.firstOrNull { it is TimelineItemAction.Forward }?.let(::add) actions.firstOrNull { it is TimelineItemAction.ViewSource }?.let(::add) - actions.firstOrNull { it is TimelineItemAction.Redact }?.let(::add) } } } diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt index 0478e08934..48a0cf5e5e 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt @@ -19,7 +19,6 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.core.EventId -import io.element.android.libraries.matrix.api.core.TransactionId import io.element.android.libraries.matrix.api.room.MatrixRoom import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo @@ -138,34 +137,6 @@ class PinnedMessagesListPresenterTest { } } - @Test - fun `present - redact event`() = runTest { - val redactEventLambda = lambdaRecorder { _: EventId?, _: TransactionId?, _: String? -> Result.success(true) } - val pinnedEventsTimeline = createPinnedMessagesTimeline().apply { - this.redactEventLambda = redactEventLambda - } - val room = FakeMatrixRoom( - pinnedEventsTimelineResult = { Result.success(pinnedEventsTimeline) }, - canRedactOwnResult = { Result.success(true) }, - canRedactOtherResult = { Result.success(true) }, - canUserPinUnpinResult = { Result.success(true) }, - ).apply { - givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID))) - } - val presenter = createPinnedMessagesListPresenter(room = room, isFeatureEnabled = true) - presenter.test { - skipItems(3) - val filledState = awaitItem() as PinnedMessagesListState.Filled - val eventItem = filledState.timelineItems.first() as TimelineItem.Event - filledState.eventSink(PinnedMessagesListEvents.HandleAction(TimelineItemAction.Redact, eventItem)) - advanceUntilIdle() - cancelAndIgnoreRemainingEvents() - assert(redactEventLambda) - .isCalledOnce() - .with(value(AN_EVENT_ID), value(null), value(null)) - } - } - @Test fun `present - unpin event`() = runTest { val successUnpinEventLambda = lambdaRecorder { _: EventId? -> Result.success(true) }