From 68c9dd337afde5d40328e80010d921c7409b02b5 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 18 Sep 2018 17:50:24 +0100 Subject: [PATCH] no message --- TelegramCore/AccountIntermediateState.swift | 8 ++++---- TelegramCore/AccountStateManagementUtils.swift | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/TelegramCore/AccountIntermediateState.swift b/TelegramCore/AccountIntermediateState.swift index f1d20e3af9..9dd099040c 100644 --- a/TelegramCore/AccountIntermediateState.swift +++ b/TelegramCore/AccountIntermediateState.swift @@ -74,7 +74,7 @@ enum AccountStateMutationOperation { case UpdateIsContact(PeerId, Bool) case UpdateCachedPeerData(PeerId, (CachedPeerData?) -> CachedPeerData?) case MergeApiUsers([Api.User]) - case MergePeerPresences([PeerId: PeerPresence]) + case MergePeerPresences([PeerId: PeerPresence], Bool) case UpdateSecretChat(chat: Api.EncryptedChat, timestamp: Int32) case AddSecretMessages([Api.EncryptedMessage]) case ReadSecretOutbox(peerId: PeerId, maxTimestamp: Int32, actionTimestamp: Int32) @@ -281,12 +281,12 @@ struct AccountMutableState { } } if !presences.isEmpty { - self.addOperation(.MergePeerPresences(presences)) + self.addOperation(.MergePeerPresences(presences, false)) } } - mutating func mergePeerPresences(_ presences: [PeerId: PeerPresence]) { - self.addOperation(.MergePeerPresences(presences)) + mutating func mergePeerPresences(_ presences: [PeerId: PeerPresence], explicit: Bool) { + self.addOperation(.MergePeerPresences(presences, explicit)) } mutating func updateSecretChat(chat: Api.EncryptedChat, timestamp: Int32) { diff --git a/TelegramCore/AccountStateManagementUtils.swift b/TelegramCore/AccountStateManagementUtils.swift index a8ba6451b7..ee980f73ae 100644 --- a/TelegramCore/AccountStateManagementUtils.swift +++ b/TelegramCore/AccountStateManagementUtils.swift @@ -1055,7 +1055,7 @@ private func finalStateWithUpdatesAndServerTime(account: Account, state: Account return previous.withUpdatedIsBlocked(blocked == .boolTrue) }) case let .updateUserStatus(userId, status): - updatedState.mergePeerPresences([PeerId(namespace: Namespaces.Peer.CloudUser, id: userId): TelegramUserPresence(apiStatus: status)]) + updatedState.mergePeerPresences([PeerId(namespace: Namespaces.Peer.CloudUser, id: userId): TelegramUserPresence(apiStatus: status)], explicit: true) case let .updateUserName(userId, firstName, lastName, username): //TODO add contact checking for apply first and last name updatedState.updatePeer(PeerId(namespace: Namespaces.Peer.CloudUser, id: userId), { peer in @@ -2143,11 +2143,11 @@ func replayFinalState(accountPeerId: PeerId, mediaBox: MediaBox, transaction: Tr transaction.updatePeerCachedData(peerIds: Set([id]), update: { _, current in return f(current) }) - case let .MergePeerPresences(presences): + case let .MergePeerPresences(presences, explicit): var filteredPresences = presences if let accountPresence = presences[accountPeerId] { filteredPresences.removeValue(forKey: accountPeerId) - if let presence = accountPresence as? TelegramUserPresence, case let .present(until) = presence.status { + if explicit, let presence = accountPresence as? TelegramUserPresence, case let .present(until) = presence.status { delayNotificatonsUntil = until + 30 } }