mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Various improvements
This commit is contained in:
@@ -412,6 +412,14 @@ private class ExtendedMediaOverlayNode: ASDisplayNode {
|
||||
}
|
||||
}
|
||||
|
||||
private func selectStoryMedia(item: Stories.Item, preferredHighQuality: Bool) -> Media? {
|
||||
if !preferredHighQuality, let alternativeMedia = item.alternativeMedia {
|
||||
return alternativeMedia
|
||||
} else {
|
||||
return item.media
|
||||
}
|
||||
}
|
||||
|
||||
public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTransitionNode {
|
||||
private let pinchContainerNode: PinchSourceContainerNode
|
||||
private let imageNode: TransformImageNode
|
||||
@@ -442,6 +450,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
private var wideLayout: Bool?
|
||||
private var automaticDownload: InteractiveMediaNodeAutodownloadMode?
|
||||
public var automaticPlayback: Bool?
|
||||
private var preferredStoryHighQuality: Bool = false
|
||||
|
||||
private let statusDisposable = MetaDisposable()
|
||||
private let fetchControls = Atomic<FetchControls?>(value: nil)
|
||||
@@ -666,6 +675,13 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
} else if let media = media as? TelegramMediaImage, let resource = largestImageRepresentation(media.representations)?.resource {
|
||||
messageMediaImageCancelInteractiveFetch(context: context, messageId: message.id, image: media, resource: resource)
|
||||
}
|
||||
if let alternativeMedia = item.alternativeMedia {
|
||||
if let media = alternativeMedia as? TelegramMediaFile {
|
||||
messageMediaFileCancelInteractiveFetch(context: context, messageId: message.id, file: media)
|
||||
} else if let media = alternativeMedia as? TelegramMediaImage, let resource = largestImageRepresentation(media.representations)?.resource {
|
||||
messageMediaImageCancelInteractiveFetch(context: context, messageId: message.id, image: media, resource: resource)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,8 +719,8 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
}
|
||||
|
||||
if let storyMedia = media as? TelegramMediaStory, let storyItem = self.message?.associatedStories[storyMedia.storyId]?.get(Stories.StoredItem.self) {
|
||||
if case let .item(item) = storyItem, let mediaValue = item.media {
|
||||
media = mediaValue
|
||||
if case let .item(item) = storyItem, let _ = item.media {
|
||||
media = selectStoryMedia(item: item, preferredHighQuality: self.preferredStoryHighQuality)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -720,8 +736,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
if let invoice = self.media as? TelegramMediaInvoice, let _ = invoice.extendedMedia {
|
||||
self.activateLocalContent(.default)
|
||||
} else if let storyMedia = media as? TelegramMediaStory, let storyItem = self.message?.associatedStories[storyMedia.storyId]?.get(Stories.StoredItem.self) {
|
||||
if case let .item(item) = storyItem, let mediaValue = item.media {
|
||||
let _ = mediaValue
|
||||
if case let .item(item) = storyItem, let _ = item.media {
|
||||
self.activateLocalContent(.default)
|
||||
}
|
||||
} else {
|
||||
@@ -1118,7 +1133,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
replaceAnimatedStickerNode = true
|
||||
}
|
||||
|
||||
if let storyItem = message.associatedStories[story.storyId]?.get(Stories.StoredItem.self), case let .item(item) = storyItem, let media = item.media {
|
||||
if let storyItem = message.associatedStories[story.storyId]?.get(Stories.StoredItem.self), case let .item(item) = storyItem, let media = selectStoryMedia(item: item, preferredHighQuality: associatedData.preferredStoryHighQuality) {
|
||||
if let image = media as? TelegramMediaImage {
|
||||
if hasCurrentVideoNode {
|
||||
replaceVideoNode = true
|
||||
@@ -1431,7 +1446,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
media = fullMedia
|
||||
}
|
||||
if let storyMedia = media as? TelegramMediaStory, let storyItem = message.associatedStories[storyMedia.storyId]?.get(Stories.StoredItem.self) {
|
||||
if case let .item(item) = storyItem, let mediaValue = item.media {
|
||||
if case let .item(item) = storyItem, let mediaValue = selectStoryMedia(item: item, preferredHighQuality: associatedData.preferredStoryHighQuality) {
|
||||
media = mediaValue
|
||||
}
|
||||
}
|
||||
@@ -1494,6 +1509,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
strongSelf.sizeCalculation = sizeCalculation
|
||||
strongSelf.automaticPlayback = automaticPlayback
|
||||
strongSelf.automaticDownload = automaticDownload
|
||||
strongSelf.preferredStoryHighQuality = associatedData.preferredStoryHighQuality
|
||||
|
||||
if let previousArguments = strongSelf.currentImageArguments {
|
||||
if previousArguments.imageSize == arguments.imageSize {
|
||||
@@ -1731,7 +1747,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
media = fullMedia
|
||||
}
|
||||
if let storyMedia = media as? TelegramMediaStory, let storyItem = message.associatedStories[storyMedia.storyId]?.get(Stories.StoredItem.self) {
|
||||
if case let .item(item) = storyItem, let mediaValue = item.media {
|
||||
if case let .item(item) = storyItem, let mediaValue = selectStoryMedia(item: item, preferredHighQuality: associatedData.preferredStoryHighQuality) {
|
||||
media = mediaValue
|
||||
}
|
||||
}
|
||||
@@ -2011,7 +2027,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr
|
||||
media = fullMedia
|
||||
}
|
||||
if let storyMedia = media as? TelegramMediaStory, let storyItem = message.associatedStories[storyMedia.storyId]?.get(Stories.StoredItem.self) {
|
||||
if case let .item(item) = storyItem, let mediaValue = item.media {
|
||||
if case let .item(item) = storyItem, let mediaValue = selectStoryMedia(item: item, preferredHighQuality: self.preferredStoryHighQuality) {
|
||||
media = mediaValue
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user