mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 09:20:08 +00:00
Use server-provided venue search bot configuration
This commit is contained in:
parent
715e10fb7f
commit
626d1fae3c
@ -5,7 +5,6 @@ import Postbox
|
|||||||
import Display
|
import Display
|
||||||
import SwiftSignalKit
|
import SwiftSignalKit
|
||||||
import TelegramPresentationData
|
import TelegramPresentationData
|
||||||
import ListSectionHeaderNode
|
|
||||||
import ItemListUI
|
import ItemListUI
|
||||||
import AppBundle
|
import AppBundle
|
||||||
|
|
||||||
|
|||||||
@ -33,36 +33,40 @@ public func ==(lhs: CLLocationCoordinate2D, rhs: CLLocationCoordinate2D) -> Bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func nearbyVenues(account: Account, latitude: Double, longitude: Double, query: String? = nil) -> Signal<[TelegramMediaMap], NoError> {
|
public func nearbyVenues(account: Account, latitude: Double, longitude: Double, query: String? = nil) -> Signal<[TelegramMediaMap], NoError> {
|
||||||
return resolvePeerByName(account: account, name: "foursquare")
|
return account.postbox.transaction { transaction -> SearchBotsConfiguration in
|
||||||
|> take(1)
|
return currentSearchBotsConfiguration(transaction: transaction)
|
||||||
|> mapToSignal { peerId -> Signal<ChatContextResultCollection?, NoError> in
|
} |> mapToSignal { searchBotsConfiguration in
|
||||||
guard let peerId = peerId else {
|
return resolvePeerByName(account: account, name: searchBotsConfiguration.venueBotUsername ?? "foursquare")
|
||||||
return .single(nil)
|
|> take(1)
|
||||||
}
|
|> mapToSignal { peerId -> Signal<ChatContextResultCollection?, NoError> in
|
||||||
return requestChatContextResults(account: account, botId: peerId, peerId: account.peerId, query: query ?? "", location: .single((latitude, longitude)), offset: "")
|
guard let peerId = peerId else {
|
||||||
|> map { results -> ChatContextResultCollection? in
|
return .single(nil)
|
||||||
return results?.results
|
}
|
||||||
}
|
return requestChatContextResults(account: account, botId: peerId, peerId: account.peerId, query: query ?? "", location: .single((latitude, longitude)), offset: "")
|
||||||
|> `catch` { error -> Signal<ChatContextResultCollection?, NoError> in
|
|> map { results -> ChatContextResultCollection? in
|
||||||
return .single(nil)
|
return results?.results
|
||||||
}
|
}
|
||||||
}
|
|> `catch` { error -> Signal<ChatContextResultCollection?, NoError> in
|
||||||
|> map { contextResult -> [TelegramMediaMap] in
|
return .single(nil)
|
||||||
guard let contextResult = contextResult else {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
var list: [TelegramMediaMap] = []
|
|
||||||
for result in contextResult.results {
|
|
||||||
switch result.message {
|
|
||||||
case let .mapLocation(mapMedia, _):
|
|
||||||
if let _ = mapMedia.venue {
|
|
||||||
list.append(mapMedia)
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list
|
|> map { contextResult -> [TelegramMediaMap] in
|
||||||
|
guard let contextResult = contextResult else {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
var list: [TelegramMediaMap] = []
|
||||||
|
for result in contextResult.results {
|
||||||
|
switch result.message {
|
||||||
|
case let .mapLocation(mapMedia, _):
|
||||||
|
if let _ = mapMedia.venue {
|
||||||
|
list.append(mapMedia)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +90,7 @@ func stringForDistance(strings: PresentationStrings, distance: CLLocationDistanc
|
|||||||
|
|
||||||
func stringForEstimatedDuration(strings: PresentationStrings, eta: Double) -> String? {
|
func stringForEstimatedDuration(strings: PresentationStrings, eta: Double) -> String? {
|
||||||
if eta > 0.0 && eta < 60.0 * 60.0 * 10.0 {
|
if eta > 0.0 && eta < 60.0 * 60.0 * 10.0 {
|
||||||
var eta = max(eta, 60.0)
|
let eta = max(eta, 60.0)
|
||||||
let minutes = Int32(eta / 60.0) % 60
|
let minutes = Int32(eta / 60.0) % 60
|
||||||
let hours = Int32(eta / 3600.0)
|
let hours = Int32(eta / 3600.0)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user