Merge pull request #3438 from element-hq/feature/fga/pinned_messages_actions
Update pinned message actions
This commit is contained in:
commit
7fcccea43f
4 changed files with 2 additions and 40 deletions
|
|
@ -195,9 +195,9 @@ private fun List<TimelineItemAction>.postFilter(content: TimelineItemEventConten
|
||||||
when (content) {
|
when (content) {
|
||||||
is TimelineItemCallNotifyContent,
|
is TimelineItemCallNotifyContent,
|
||||||
is TimelineItemLegacyCallInviteContent,
|
is TimelineItemLegacyCallInviteContent,
|
||||||
is TimelineItemStateContent,
|
is TimelineItemStateContent -> action == TimelineItemAction.ViewSource
|
||||||
is TimelineItemRedactedContent -> {
|
is TimelineItemRedactedContent -> {
|
||||||
action == TimelineItemAction.ViewSource
|
action == TimelineItemAction.ViewSource || action == TimelineItemAction.Unpin
|
||||||
}
|
}
|
||||||
else -> true
|
else -> true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,6 @@ class PinnedMessagesListPresenter @AssistedInject constructor(
|
||||||
targetEvent: TimelineItem.Event,
|
targetEvent: TimelineItem.Event,
|
||||||
) = launch {
|
) = launch {
|
||||||
when (action) {
|
when (action) {
|
||||||
TimelineItemAction.Redact -> handleActionRedact(targetEvent)
|
|
||||||
TimelineItemAction.ViewSource -> {
|
TimelineItemAction.ViewSource -> {
|
||||||
navigator.onShowEventDebugInfoClick(targetEvent.eventId, targetEvent.debugInfo)
|
navigator.onShowEventDebugInfoClick(targetEvent.eventId, targetEvent.debugInfo)
|
||||||
}
|
}
|
||||||
|
|
@ -149,13 +148,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
|
@Composable
|
||||||
private fun userEventPermissions(updateKey: Long): State<UserEventPermissions> {
|
private fun userEventPermissions(updateKey: Long): State<UserEventPermissions> {
|
||||||
return produceState(UserEventPermissions.DEFAULT, key1 = updateKey) {
|
return produceState(UserEventPermissions.DEFAULT, key1 = updateKey) {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ class PinnedMessagesListTimelineActionPostProcessor : TimelineItemActionPostProc
|
||||||
actions.firstOrNull { it is TimelineItemAction.Unpin }?.let(::add)
|
actions.firstOrNull { it is TimelineItemAction.Unpin }?.let(::add)
|
||||||
actions.firstOrNull { it is TimelineItemAction.Forward }?.let(::add)
|
actions.firstOrNull { it is TimelineItemAction.Forward }?.let(::add)
|
||||||
actions.firstOrNull { it is TimelineItemAction.ViewSource }?.let(::add)
|
actions.firstOrNull { it is TimelineItemAction.ViewSource }?.let(::add)
|
||||||
actions.firstOrNull { it is TimelineItemAction.Redact }?.let(::add)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.api.FeatureFlags
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
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.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.room.MatrixRoom
|
||||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||||
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
|
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
|
@Test
|
||||||
fun `present - unpin event`() = runTest {
|
fun `present - unpin event`() = runTest {
|
||||||
val successUnpinEventLambda = lambdaRecorder { _: EventId? -> Result.success(true) }
|
val successUnpinEventLambda = lambdaRecorder { _: EventId? -> Result.success(true) }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue