mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
59 lines
2.5 KiB
Swift
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
|
|
}
|