mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
34 lines
1.4 KiB
Swift
34 lines
1.4 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import SwiftSignalKit
|
|
|
|
import SyncCore
|
|
|
|
public func topPeerActiveLiveLocationMessages(viewTracker: AccountViewTracker, accountPeerId: PeerId, peerId: PeerId) -> Signal<(Peer?, [Message]), NoError> {
|
|
return viewTracker.aroundMessageHistoryViewForLocation(.peer(peerId), index: .upperBound, anchorIndex: .upperBound, count: 50, fixedCombinedReadStates: nil, tagMask: .liveLocation, orderStatistics: [], additionalData: [.peer(accountPeerId)])
|
|
|> map { (view, _, _) -> (Peer?, [Message]) in
|
|
var accountPeer: Peer?
|
|
for entry in view.additionalData {
|
|
if case let .peer(id, peer) = entry {
|
|
accountPeer = peer
|
|
break
|
|
}
|
|
}
|
|
|
|
let timestamp = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970)
|
|
var result: [Message] = []
|
|
for entry in view.entries {
|
|
for media in entry.message.media {
|
|
if let location = media as? TelegramMediaMap, let liveBroadcastingTimeout = location.liveBroadcastingTimeout {
|
|
if entry.message.timestamp + liveBroadcastingTimeout > timestamp {
|
|
result.append(entry.message)
|
|
}
|
|
} else {
|
|
assertionFailure()
|
|
}
|
|
}
|
|
}
|
|
return (accountPeer, result)
|
|
}
|
|
}
|