diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt
index 12b7bf9f50..3622208233 100644
--- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt
+++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt
@@ -281,6 +281,7 @@ class MessagesPresenter @AssistedInject constructor(
TimelineItemAction.ReportContent -> handleReportAction(targetEvent)
TimelineItemAction.EndPoll -> handleEndPollAction(targetEvent, timelineState)
TimelineItemAction.Pin -> handlePinAction(targetEvent)
+ TimelineItemAction.Unpin -> handleUnpinAction(targetEvent)
}
}
@@ -291,6 +292,13 @@ class MessagesPresenter @AssistedInject constructor(
}
}
+ private suspend fun handleUnpinAction(targetEvent: TimelineItem.Event) {
+ if (targetEvent.eventId == null) return
+ timelineController.invokeOnCurrentTimeline {
+ unpinEvent(targetEvent.eventId)
+ }
+ }
+
private fun CoroutineScope.toggleReaction(
emoji: String,
eventId: EventId,
diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt
index e8da131d8d..b9762c4056 100644
--- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt
+++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/actionlist/model/TimelineItemAction.kt
@@ -40,4 +40,6 @@ sealed class TimelineItemAction(
data object ReportContent : TimelineItemAction(CommonStrings.action_report_content, CompoundDrawables.ic_compound_chat_problem, destructive = true)
data object EndPoll : TimelineItemAction(CommonStrings.action_end_poll, CompoundDrawables.ic_compound_polls_end)
data object Pin : TimelineItemAction(CommonStrings.action_pin, CompoundDrawables.ic_compound_pin)
+ //TODO use the Unpin compound icon when available.
+ data object Unpin : TimelineItemAction(CommonStrings.action_unpin, CompoundDrawables.ic_compound_pin)
}
diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml
index c5d8f46622..a86f920ed9 100644
--- a/libraries/ui-strings/src/main/res/values/localazy.xml
+++ b/libraries/ui-strings/src/main/res/values/localazy.xml
@@ -110,6 +110,7 @@
"Take photo"
"Tap for options"
"Try again"
+ "Unpin"
"View source"
"Yes"
"About"