Swiftgram/TelegramUI/LegacyLocationController.swift
2017-07-14 15:34:30 +03:00

59 lines
2.5 KiB
Swift

import Foundation
import Display
import TelegramLegacyComponents
import TelegramCore
import Postbox
func legacyLocationController(message: Message, mapMedia: TelegramMediaMap, account: Account, openPeer: @escaping (Peer) -> Void) -> ViewController {
var legacyPeer: AnyObject?
if let user = message.author as? TelegramUser {
let legacyUser = TGUser()
legacyUser.uid = user.id.id
legacyUser.firstName = user.firstName
legacyUser.lastName = user.lastName
legacyPeer = legacyUser
} else if let channel = message.author as? TelegramChannel {
let legacyConversation = TGConversation()
legacyConversation.conversationId = Int64(channel.id.id)
legacyConversation.chatTitle = channel.title
legacyPeer = legacyConversation
}
let legacyLocation = TGLocationMediaAttachment()
legacyLocation.latitude = mapMedia.latitude
legacyLocation.longitude = mapMedia.longitude
if let venue = mapMedia.venue {
legacyLocation.venue = TGVenueAttachment(title: venue.title, address: venue.address, provider: venue.provider, venueId: venue.id)
}
let controller = TGLocationViewController(locationAttachment: legacyLocation, peer: legacyPeer)!
let navigationController = TGNavigationController(controllers: [controller])!
let legacyController = LegacyController(legacyController: navigationController, presentation: .modal(animateIn: true))
controller.customDismiss = { [weak legacyController] in
legacyController?.dismiss()
}
controller.customActions = { [weak legacyController] in
if let legacyController = legacyController {
var shareAction: (([PeerId]) -> Void)?
let shareController = ShareController(account: account, shareAction: { peerIds in
shareAction?(peerIds)
}, defaultAction: nil)
legacyController.present(shareController, in: .window(.root))
shareAction = { [weak shareController] peerIds in
shareController?.dismiss()
for peerId in peerIds {
let _ = enqueueMessages(account: account, peerId: peerId, messages: [.forward(source: message.id)]).start()
}
}
}
}
controller.calloutPressed = { [weak legacyController] in
legacyController?.dismiss()
if let author = message.author {
openPeer(author)
}
}
return legacyController
}