mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix stories in download list
(cherry picked from commit a1de4e39b2f9be8b17386d61fd304422ecd92a5d)
This commit is contained in:
parent
af8276cf2d
commit
4d66bf7194
@ -964,7 +964,7 @@ public enum ChatListSearchEntry: Comparable, Identifiable {
|
||||
}
|
||||
let selection: ChatHistoryMessageSelection = selected.flatMap { .selectable(selected: $0) } ?? .none
|
||||
var isMedia = false
|
||||
if let tagMask = tagMask, tagMask != .photoOrVideo {
|
||||
if let tagMask, tagMask != .photoOrVideo {
|
||||
isMedia = true
|
||||
} else if key == .downloads {
|
||||
isMedia = true
|
||||
@ -3105,6 +3105,8 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
|
||||
return [:]
|
||||
})
|
||||
|
||||
listInteraction.preferredStoryHighQuality = context.sharedContext.currentAutomaticMediaDownloadSettings.highQualityStories
|
||||
|
||||
let previousSearchItems = Atomic<[ChatListSearchEntry]?>(value: nil)
|
||||
let previousSelectedMessages = Atomic<Set<EngineMessage.Id>?>(value: nil)
|
||||
let previousExpandGlobalSearch = Atomic<Bool>(value: false)
|
||||
|
@ -160,6 +160,14 @@ final class CachedChatListSearchResult {
|
||||
}
|
||||
}
|
||||
|
||||
private func selectStoryMedia(item: Stories.Item, preferredHighQuality: Bool) -> Media? {
|
||||
if !preferredHighQuality, let alternativeMediaValue = item.alternativeMediaList.first {
|
||||
return alternativeMediaValue
|
||||
} else {
|
||||
return item.media
|
||||
}
|
||||
}
|
||||
|
||||
public final class ListMessageFileItemNode: ListMessageNode {
|
||||
public final class DescriptionNode: ASDisplayNode {
|
||||
let descriptionNode: TextNode
|
||||
@ -625,7 +633,17 @@ public final class ListMessageFileItemNode: ListMessageNode {
|
||||
|
||||
var selectedMedia: Media?
|
||||
if let message = message {
|
||||
var effectiveMessageMedia = message.media
|
||||
for media in message.media {
|
||||
if let storyMedia = media as? TelegramMediaStory {
|
||||
if let story = message.associatedStories[storyMedia.storyId], !story.data.isEmpty, case let .item(storyItem) = story.get(Stories.StoredItem.self), let media = selectStoryMedia(item: storyItem, preferredHighQuality: item.interaction.preferredStoryHighQuality) {
|
||||
effectiveMessageMedia = [media]
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for media in effectiveMessageMedia {
|
||||
if let file = media as? TelegramMediaFile {
|
||||
selectedMedia = file
|
||||
|
||||
|
@ -20,6 +20,7 @@ public final class ListMessageItemInteraction {
|
||||
let getHiddenMedia: () -> [MessageId: [Media]]
|
||||
|
||||
public var searchTextHighightState: String?
|
||||
public var preferredStoryHighQuality: Bool = false
|
||||
|
||||
public init(openMessage: @escaping (Message, ChatControllerInteractionOpenMessageMode) -> Bool, openMessageContextMenu: @escaping (Message, Bool, ASDisplayNode, CGRect, UIGestureRecognizer?) -> Void, toggleMessagesSelection: @escaping ([MessageId], Bool) -> Void, openUrl: @escaping (String, Bool, Bool?, Message?) -> Void, openInstantPage: @escaping (Message, ChatMessageItemAssociatedData?) -> Void, longTap: @escaping (ChatControllerInteractionLongTapAction, Message?) -> Void, getHiddenMedia: @escaping () -> [MessageId: [Media]]) {
|
||||
self.openMessage = openMessage
|
||||
@ -97,6 +98,9 @@ public final class ListMessageItem: ListViewItem {
|
||||
} else if let _ = media as? TelegramMediaImage {
|
||||
viewClassName = ListMessageFileItemNode.self
|
||||
break
|
||||
} else if let _ = media as? TelegramMediaStory {
|
||||
viewClassName = ListMessageFileItemNode.self
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user