diff --git a/submodules/TelegramCore/Sources/Account.swift b/submodules/TelegramCore/Sources/Account.swift index 59b8df9556..cd69c00329 100644 --- a/submodules/TelegramCore/Sources/Account.swift +++ b/submodules/TelegramCore/Sources/Account.swift @@ -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()) diff --git a/submodules/TelegramCore/Sources/ManagedAutoremoveMessageOperations.swift b/submodules/TelegramCore/Sources/ManagedAutoremoveMessageOperations.swift index e2f09b3ddd..2d73425fb1 100644 --- a/submodules/TelegramCore/Sources/ManagedAutoremoveMessageOperations.swift +++ b/submodules/TelegramCore/Sources/ManagedAutoremoveMessageOperations.swift @@ -39,11 +39,29 @@ private final class ManagedAutoremoveMessageOperationsHelper { } } -func managedAutoremoveMessageOperations(postbox: Postbox) -> Signal { +func managedAutoremoveMessageOperations(network: Network, postbox: Postbox) -> Signal { return Signal { _ in let helper = Atomic(value: ManagedAutoremoveMessageOperationsHelper()) - let disposable = postbox.timestampBasedMessageAttributesView(tag: 0).start(next: { view in + let timeOffsetOnce = Signal { subscriber in + subscriber.putNext(network.globalTimeDifference) + return EmptyDisposable + } + + let timeOffset = ( + timeOffsetOnce + |> then( + Signal.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.complete() |> suspendAwareDelay(max(0.0, Double(entry.timestamp) - timestamp), queue: Queue.concurrentDefaultQueue()) |> then(postbox.transaction { transaction -> Void in diff --git a/submodules/TelegramCore/Sources/Network.swift b/submodules/TelegramCore/Sources/Network.swift index eebda144d0..57edafa585 100644 --- a/submodules/TelegramCore/Sources/Network.swift +++ b/submodules/TelegramCore/Sources/Network.swift @@ -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 { return Signal { subscriber in self.context.performBatchUpdates({