Download manager improvements

This commit is contained in:
Ali
2022-02-18 20:12:38 +04:00
parent 629174d261
commit ac8e9a0b9c
50 changed files with 942 additions and 253 deletions

View File

@@ -1815,6 +1815,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
var messageIdsWithRefreshMedia: [MessageId] = []
var messageIdsWithUnseenPersonalMention: [MessageId] = []
var messageIdsWithUnseenReactions: [MessageId] = []
var downloadableResourceIds: [(messageId: MessageId, resourceId: String)] = []
if indexRange.0 <= indexRange.1 {
for i in (indexRange.0 ... indexRange.1) {
@@ -1875,6 +1876,11 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
}
}
}
downloadableResourceIds.append((message.id, telegramFile.resource.id.stringRepresentation))
} else if let image = media as? TelegramMediaImage {
if let representation = image.representations.last {
downloadableResourceIds.append((message.id, representation.resource.id.stringRepresentation))
}
}
}
if contentRequiredValidation {
@@ -1889,6 +1895,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
if hasUnseenReactions {
messageIdsWithUnseenReactions.append(message.id)
}
if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.effectiveTopId == message.id {
isTopReplyThreadMessageShownValue = true
}
@@ -1909,6 +1916,15 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
}
}
}
for media in message.media {
if let telegramFile = media as? TelegramMediaFile {
downloadableResourceIds.append((message.id, telegramFile.resource.id.stringRepresentation))
} else if let image = media as? TelegramMediaImage {
if let representation = image.representations.last {
downloadableResourceIds.append((message.id, representation.resource.id.stringRepresentation))
}
}
}
for attribute in message.attributes {
if attribute is ViewCountMessageAttribute {
if message.id.namespace == Namespaces.Message.Cloud {
@@ -2073,6 +2089,9 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
if !messageIdsWithPossibleReactions.isEmpty {
self.messageWithReactionsProcessingManager.add(messageIdsWithPossibleReactions)
}
if !downloadableResourceIds.isEmpty {
let _ = markRecentDownloadItemsAsSeen(postbox: self.context.account.postbox, items: downloadableResourceIds).start()
}
self.currentEarlierPrefetchMessages = toEarlierMediaMessages
self.currentLaterPrefetchMessages = toLaterMediaMessages