mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +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(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(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(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())
|
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
|
return Signal { _ in
|
||||||
let helper = Atomic(value: ManagedAutoremoveMessageOperationsHelper())
|
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
|
let (disposeOperations, beginOperations) = helper.with { helper -> (disposeOperations: [Disposable], beginOperations: [(TimestampBasedMessageAttributesEntry, MetaDisposable)]) in
|
||||||
return helper.update(view.head)
|
return helper.update(view.head)
|
||||||
}
|
}
|
||||||
@ -53,7 +71,7 @@ func managedAutoremoveMessageOperations(postbox: Postbox) -> Signal<Void, NoErro
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (entry, disposable) in beginOperations {
|
for (entry, disposable) in beginOperations {
|
||||||
let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970
|
let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970 + timeOffset
|
||||||
let signal = Signal<Void, NoError>.complete()
|
let signal = Signal<Void, NoError>.complete()
|
||||||
|> suspendAwareDelay(max(0.0, Double(entry.timestamp) - timestamp), queue: Queue.concurrentDefaultQueue())
|
|> suspendAwareDelay(max(0.0, Double(entry.timestamp) - timestamp), queue: Queue.concurrentDefaultQueue())
|
||||||
|> then(postbox.transaction { transaction -> Void in
|
|> then(postbox.transaction { transaction -> Void in
|
||||||
|
@ -865,6 +865,10 @@ public final class Network: NSObject, MTRequestMessageServiceDelegate {
|
|||||||
return self.context.globalTime()
|
return self.context.globalTime()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public var globalTimeDifference: TimeInterval {
|
||||||
|
return self.context.globalTimeDifference()
|
||||||
|
}
|
||||||
|
|
||||||
public var currentGlobalTime: Signal<Double, NoError> {
|
public var currentGlobalTime: Signal<Double, NoError> {
|
||||||
return Signal { subscriber in
|
return Signal { subscriber in
|
||||||
self.context.performBatchUpdates({
|
self.context.performBatchUpdates({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user