From 66f78760be8d33ea756e0ce7a36a431d1c7c1541 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 19 Nov 2019 22:38:57 +0400 Subject: [PATCH] Fix send when online --- .../Sources/ApplyUpdateMessage.swift | 2 +- .../TelegramCore/Sources/EnqueueMessage.swift | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/submodules/TelegramCore/Sources/ApplyUpdateMessage.swift b/submodules/TelegramCore/Sources/ApplyUpdateMessage.swift index 6c6f4a53c9..6a7597a014 100644 --- a/submodules/TelegramCore/Sources/ApplyUpdateMessage.swift +++ b/submodules/TelegramCore/Sources/ApplyUpdateMessage.swift @@ -43,7 +43,7 @@ func applyUpdateMessage(postbox: Postbox, stateManager: AccountStateManager, mes } } - if let apiMessage = apiMessage, let id = apiMessage.id(namespace: message.scheduleTime != nil ? Namespaces.Message.ScheduledCloud : Namespaces.Message.Cloud) { + if let apiMessage = apiMessage, let id = apiMessage.id(namespace: message.scheduleTime != nil && message.scheduleTime == apiMessage.timestamp ? Namespaces.Message.ScheduledCloud : Namespaces.Message.Cloud) { messageId = id.id } else { messageId = result.rawMessageIds.first diff --git a/submodules/TelegramCore/Sources/EnqueueMessage.swift b/submodules/TelegramCore/Sources/EnqueueMessage.swift index 4900cfc999..75479694bb 100644 --- a/submodules/TelegramCore/Sources/EnqueueMessage.swift +++ b/submodules/TelegramCore/Sources/EnqueueMessage.swift @@ -267,6 +267,8 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, } if let peer = transaction.getPeer(peerId), let accountPeer = transaction.getPeer(account.peerId) { + let peerPresence = transaction.getPeerPresence(peerId: peerId) + var storeMessages: [StoreMessage] = [] var timestamp = Int32(account.network.context.globalTime()) switch peerId.namespace { @@ -377,12 +379,20 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, var effectiveTimestamp = timestamp for attribute in attributes { if let attribute = attribute as? OutgoingScheduleInfoMessageAttribute { - messageNamespace = Namespaces.Message.ScheduledLocal - effectiveTimestamp = attribute.scheduleTime + if attribute.scheduleTime == scheduleWhenOnlineTimestamp, let presence = peerPresence as? TelegramUserPresence, case let .present(statusTimestamp) = presence.status, statusTimestamp >= timestamp { + + } else { + messageNamespace = Namespaces.Message.ScheduledLocal + effectiveTimestamp = attribute.scheduleTime + } break } } + if messageNamespace != Namespaces.Message.ScheduledLocal { + attributes.removeAll(where: { $0 is OutgoingScheduleInfoMessageAttribute }) + } + if let peer = peer as? TelegramChannel { switch peer.info { case let .broadcast(info): @@ -515,11 +525,19 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, entitiesAttribute = attribute } if let attribute = attribute as? OutgoingScheduleInfoMessageAttribute { - messageNamespace = Namespaces.Message.ScheduledLocal - effectiveTimestamp = attribute.scheduleTime + if attribute.scheduleTime == scheduleWhenOnlineTimestamp, let presence = peerPresence as? TelegramUserPresence, case let .present(statusTimestamp) = presence.status, statusTimestamp >= timestamp { + + } else { + messageNamespace = Namespaces.Message.ScheduledLocal + effectiveTimestamp = attribute.scheduleTime + } } } + if messageNamespace != Namespaces.Message.ScheduledLocal { + attributes.removeAll(where: { $0 is OutgoingScheduleInfoMessageAttribute }) + } + let (tags, globalTags) = tagsForStoreMessage(incoming: false, attributes: attributes, media: sourceMessage.media, textEntities: entitiesAttribute?.entities) let localGroupingKey: Int64?