mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
33 lines
936 B
Swift
33 lines
936 B
Swift
import Foundation
|
|
import SwiftSignalKit
|
|
import TelegramCore
|
|
|
|
final class PeerPresenceStatusManager {
|
|
private let update: () -> Void
|
|
private var timer: SwiftSignalKit.Timer?
|
|
|
|
init(update: @escaping () -> Void) {
|
|
self.update = update
|
|
}
|
|
|
|
deinit {
|
|
self.timer?.invalidate()
|
|
}
|
|
|
|
func reset(presence: TelegramUserPresence) {
|
|
timer?.invalidate()
|
|
timer = nil
|
|
|
|
let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970
|
|
let timeout = userPresenceStringRefreshTimeout(presence, relativeTo: Int32(timestamp))
|
|
if timeout.isFinite {
|
|
self.timer = SwiftSignalKit.Timer(timeout: timeout, repeat: false, completion: { [weak self] in
|
|
if let strongSelf = self {
|
|
strongSelf.update()
|
|
}
|
|
}, queue: Queue.mainQueue())
|
|
self.timer?.start()
|
|
}
|
|
}
|
|
}
|