mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Render LiveLocations in the map (#5394)
This commit is contained in:
@@ -529,7 +529,7 @@ class TimelineInteractionHandler {
|
||||
}
|
||||
|
||||
func processItemTap(_ itemID: TimelineItemIdentifier) async -> TimelineControllerAction {
|
||||
guard let timelineItem = timelineController.timelineItems.firstUsingStableID(itemID) as? EventBasedMessageTimelineItemProtocol else {
|
||||
guard let timelineItem = timelineController.timelineItems.firstUsingStableID(itemID) as? EventBasedTimelineItemProtocol else {
|
||||
return .none
|
||||
}
|
||||
|
||||
@@ -540,12 +540,21 @@ class TimelineInteractionHandler {
|
||||
geoURI: geoURI,
|
||||
kind: item.content.kind,
|
||||
timestamp: item.timestamp))
|
||||
case is ImageRoomTimelineItem,
|
||||
is VideoRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: timelineItem, messageTypes: [.image, .video])
|
||||
case is AudioRoomTimelineItem,
|
||||
is FileRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: timelineItem, messageTypes: [.audio, .file])
|
||||
case let item as LiveLocationRoomTimelineItem:
|
||||
guard let geoURI = item.content.lastGeoURI else { return .none }
|
||||
let initialLiveLocationShare = LiveLocationShare(userID: item.sender.id,
|
||||
geoURI: geoURI,
|
||||
timestamp: item.timestamp,
|
||||
timeoutDate: item.content.timeoutDate)
|
||||
return .displayLiveLocation(sender: item.sender, initialLiveLocationShare: initialLiveLocationShare)
|
||||
case let item as ImageRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: item, messageTypes: [.image, .video])
|
||||
case let item as VideoRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: item, messageTypes: [.image, .video])
|
||||
case let item as AudioRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: item, messageTypes: [.audio, .file])
|
||||
case let item as FileRoomTimelineItem:
|
||||
return await mediaPreviewAction(for: item, messageTypes: [.audio, .file])
|
||||
default:
|
||||
return .none
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ enum TimelineViewModelAction {
|
||||
case displayMessageForwarding(forwardingItem: MessageForwardingItem)
|
||||
case displayMediaPreview(TimelineMediaPreviewViewModel)
|
||||
case displayLocation(StaticLocationData)
|
||||
case displayLiveLocation(sender: TimelineItemSender, initialLiveLocationShare: LiveLocationShare)
|
||||
case displayResolveSendFailure(failure: TimelineItemSendFailure.VerifiedUser, sendHandle: SendHandleProxy)
|
||||
case displayThread(itemID: TimelineItemIdentifier)
|
||||
case composer(action: TimelineComposerAction)
|
||||
|
||||
@@ -666,6 +666,8 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
||||
actionsSubject.send(.displayMediaPreview(mediaPreviewViewModel))
|
||||
case .displayLocation(let location):
|
||||
actionsSubject.send(.displayLocation(location))
|
||||
case .displayLiveLocation(let sender, let initialLiveLocationShare):
|
||||
actionsSubject.send(.displayLiveLocation(sender: sender, initialLiveLocationShare: initialLiveLocationShare))
|
||||
case .none:
|
||||
break
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user