diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/ApplyMaxReadIndexInteractively.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/ApplyMaxReadIndexInteractively.swift index 47f7b76dd5..49660cece5 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/ApplyMaxReadIndexInteractively.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/ApplyMaxReadIndexInteractively.swift @@ -159,32 +159,30 @@ func _internal_togglePeerUnreadMarkInteractively(transaction: Transaction, netwo displayAsRegularChat = cachedData.viewForumAsMessages.knownValue ?? false } - if let channel = peer as? TelegramChannel { - if channel.isForumOrMonoForum, !displayAsRegularChat { - for item in transaction.getMessageHistoryThreadIndex(peerId: peerId, limit: 20) { - guard var data = transaction.getMessageHistoryThreadInfo(peerId: peerId, threadId: item.threadId)?.data.get(MessageHistoryThreadData.self) else { - continue + if let channel = peer as? TelegramChannel, channel.isForumOrMonoForum, !displayAsRegularChat { + for item in transaction.getMessageHistoryThreadIndex(peerId: peerId, limit: 20) { + guard var data = transaction.getMessageHistoryThreadInfo(peerId: peerId, threadId: item.threadId)?.data.get(MessageHistoryThreadData.self) else { + continue + } + guard let messageIndex = transaction.getMessageHistoryThreadTopMessage(peerId: peerId, threadId: item.threadId, namespaces: Set([Namespaces.Message.Cloud])) else { + continue + } + if data.incomingUnreadCount != 0 { + data.incomingUnreadCount = 0 + data.maxIncomingReadId = max(messageIndex.id.id, data.maxIncomingReadId) + data.maxKnownMessageId = max(data.maxKnownMessageId, messageIndex.id.id) + + if let entry = StoredMessageHistoryThreadInfo(data) { + transaction.setMessageHistoryThreadInfo(peerId: peerId, threadId: item.threadId, info: entry) } - guard let messageIndex = transaction.getMessageHistoryThreadTopMessage(peerId: peerId, threadId: item.threadId, namespaces: Set([Namespaces.Message.Cloud])) else { - continue - } - if data.incomingUnreadCount != 0 { - data.incomingUnreadCount = 0 - data.maxIncomingReadId = max(messageIndex.id.id, data.maxIncomingReadId) - data.maxKnownMessageId = max(data.maxKnownMessageId, messageIndex.id.id) - - if let entry = StoredMessageHistoryThreadInfo(data) { - transaction.setMessageHistoryThreadInfo(peerId: peerId, threadId: item.threadId, info: entry) + + if channel.flags.contains(.isForum) { + if let inputPeer = apiInputPeer(channel) { + let _ = network.request(Api.functions.messages.readDiscussion(peer: inputPeer, msgId: Int32(clamping: item.threadId), readMaxId: messageIndex.id.id)).start() } - - if channel.flags.contains(.isForum) { - if let inputPeer = apiInputPeer(channel) { - let _ = network.request(Api.functions.messages.readDiscussion(peer: inputPeer, msgId: Int32(clamping: item.threadId), readMaxId: messageIndex.id.id)).start() - } - } else if channel.flags.contains(.isMonoforum) { - if let inputPeer = apiInputPeer(channel), let subPeer = transaction.getPeer(PeerId(item.threadId)).flatMap(apiInputPeer) { - let _ = network.request(Api.functions.messages.readSavedHistory(parentPeer: inputPeer, peer: subPeer, maxId: messageIndex.id.id)).start() - } + } else if channel.flags.contains(.isMonoforum) { + if let inputPeer = apiInputPeer(channel), let subPeer = transaction.getPeer(PeerId(item.threadId)).flatMap(apiInputPeer) { + let _ = network.request(Api.functions.messages.readSavedHistory(parentPeer: inputPeer, peer: subPeer, maxId: messageIndex.id.id)).start() } } }