diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift index d7ac7bda2..72ed4e999 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift @@ -558,7 +558,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol actions.append(.edit) } - if item.isMessage, !item.isLocation { + if item.isCopyable { actions.append(.copy) } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/EventBasedTimelineItemProtocol.swift b/ElementX/Sources/Services/Timeline/TimelineItems/EventBasedTimelineItemProtocol.swift index c2f14ce90..94b7e1773 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/EventBasedTimelineItemProtocol.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/EventBasedTimelineItemProtocol.swift @@ -43,14 +43,6 @@ extension EventBasedTimelineItemProtocol { properties.deliveryStatus == .sendingFailed } - var isMessage: Bool { - self is EventBasedMessageTimelineItemProtocol - } - - var isLocation: Bool { - self is LocationRoomTimelineItem - } - var pollIfAvailable: Poll? { (self as? PollRoomTimelineItem)?.poll } @@ -89,4 +81,17 @@ extension EventBasedTimelineItemProtocol { } return start + timestamp } + + var isCopyable: Bool { + guard let messageBasedItem = self as? EventBasedMessageTimelineItemProtocol else { + return false + } + + switch messageBasedItem.contentType { + case .audio, .file, .image, .video, .location, .voice: + return false + case .text, .emote, .notice: + return true + } + } }