mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-07-23 11:41:13 +00:00
Fix apply read index
This commit is contained in:
parent
4b47c48685
commit
3a47dab24e
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user