mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 21:45:19 +00:00
Adjust timer expiration handler
This commit is contained in:
parent
2485d6d997
commit
e796dcfef2
@ -1026,7 +1026,7 @@ public class Account {
|
||||
|
||||
self.managedOperationsDisposable.add(managedSecretChatOutgoingOperations(auxiliaryMethods: auxiliaryMethods, postbox: self.postbox, network: self.network).start())
|
||||
self.managedOperationsDisposable.add(managedCloudChatRemoveMessagesOperations(postbox: self.postbox, network: self.network, stateManager: self.stateManager).start())
|
||||
self.managedOperationsDisposable.add(managedAutoremoveMessageOperations(postbox: self.postbox).start())
|
||||
self.managedOperationsDisposable.add(managedAutoremoveMessageOperations(network: self.network, postbox: self.postbox).start())
|
||||
self.managedOperationsDisposable.add(managedGlobalNotificationSettings(postbox: self.postbox, network: self.network).start())
|
||||
self.managedOperationsDisposable.add(managedSynchronizePinnedChatsOperations(postbox: self.postbox, network: self.network, accountPeerId: self.peerId, stateManager: self.stateManager).start())
|
||||
|
||||
|
@ -39,11 +39,29 @@ private final class ManagedAutoremoveMessageOperationsHelper {
|
||||
}
|
||||
}
|
||||
|
||||
func managedAutoremoveMessageOperations(postbox: Postbox) -> Signal<Void, NoError> {
|
||||
func managedAutoremoveMessageOperations(network: Network, postbox: Postbox) -> Signal<Void, NoError> {
|
||||
return Signal { _ in
|
||||
let helper = Atomic(value: ManagedAutoremoveMessageOperationsHelper())
|
||||
|
||||
let disposable = postbox.timestampBasedMessageAttributesView(tag: 0).start(next: { view in
|
||||
let timeOffsetOnce = Signal<Double, NoError> { subscriber in
|
||||
subscriber.putNext(network.globalTimeDifference)
|
||||
return EmptyDisposable
|
||||
}
|
||||
|
||||
let timeOffset = (
|
||||
timeOffsetOnce
|
||||
|> then(
|
||||
Signal<Double, NoError>.complete()
|
||||
|> delay(1.0, queue: .mainQueue())
|
||||
)
|
||||
)
|
||||
|> restart
|
||||
|> map { value -> Double in
|
||||
round(value)
|
||||
}
|
||||
|> distinctUntilChanged
|
||||
|
||||
let disposable = combineLatest(timeOffset, postbox.timestampBasedMessageAttributesView(tag: 0)).start(next: { timeOffset, view in
|
||||
let (disposeOperations, beginOperations) = helper.with { helper -> (disposeOperations: [Disposable], beginOperations: [(TimestampBasedMessageAttributesEntry, MetaDisposable)]) in
|
||||
return helper.update(view.head)
|
||||
}
|
||||
@ -53,7 +71,7 @@ func managedAutoremoveMessageOperations(postbox: Postbox) -> Signal<Void, NoErro
|
||||
}
|
||||
|
||||
for (entry, disposable) in beginOperations {
|
||||
let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970
|
||||
let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970 + timeOffset
|
||||
let signal = Signal<Void, NoError>.complete()
|
||||
|> suspendAwareDelay(max(0.0, Double(entry.timestamp) - timestamp), queue: Queue.concurrentDefaultQueue())
|
||||
|> then(postbox.transaction { transaction -> Void in
|
||||
|
@ -865,6 +865,10 @@ public final class Network: NSObject, MTRequestMessageServiceDelegate {
|
||||
return self.context.globalTime()
|
||||
}
|
||||
|
||||
public var globalTimeDifference: TimeInterval {
|
||||
return self.context.globalTimeDifference()
|
||||
}
|
||||
|
||||
public var currentGlobalTime: Signal<Double, NoError> {
|
||||
return Signal { subscriber in
|
||||
self.context.performBatchUpdates({
|
||||
|
Loading…
x
Reference in New Issue
Block a user