diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveInstantVideoNode/Sources/ChatMessageInteractiveInstantVideoNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveInstantVideoNode/Sources/ChatMessageInteractiveInstantVideoNode.swift index 6980d7ec0e..66f240407d 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveInstantVideoNode/Sources/ChatMessageInteractiveInstantVideoNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveInstantVideoNode/Sources/ChatMessageInteractiveInstantVideoNode.swift @@ -433,7 +433,7 @@ public class ChatMessageInteractiveInstantVideoNode: ASDisplayNode { forwardAuthorSignature = forwardInfo.authorSignature } } - let availableWidth: CGFloat = max(60.0, availableContentWidth - 210.0 + 6.0) + let availableWidth: CGFloat = max(60.0, availableContentWidth - 220.0 + 6.0) forwardInfoSizeApply = makeForwardInfoLayout(item.context, item.presentationData, item.presentationData.strings, .standalone, forwardSource, forwardAuthorSignature, forwardPsaType, nil, CGSize(width: availableWidth, height: CGFloat.greatestFiniteMagnitude)) } diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageWebpageBubbleContentNode/Sources/ChatMessageWebpageBubbleContentNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageWebpageBubbleContentNode/Sources/ChatMessageWebpageBubbleContentNode.swift index 17e3d8a0e7..6634fce5e5 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageWebpageBubbleContentNode/Sources/ChatMessageWebpageBubbleContentNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageWebpageBubbleContentNode/Sources/ChatMessageWebpageBubbleContentNode.swift @@ -22,6 +22,31 @@ import ChatControllerInteraction private let titleFont: UIFont = Font.semibold(15.0) +public func defaultWebpageImageSizeIsSmall(webpage: TelegramMediaWebpageLoadedContent) -> Bool { + let type = websiteType(of: webpage.websiteName) + + let mainMedia: Media? + switch type { + case .instagram, .twitter: + mainMedia = webpage.story ?? webpage.image ?? webpage.file + default: + mainMedia = webpage.story ?? webpage.file ?? webpage.image + } + + if let image = mainMedia as? TelegramMediaImage { + if let type = webpage.type, (["photo", "video", "embed", "gif", "document", "telegram_album"] as [String]).contains(type) { + } else if let type = webpage.type, (["article"] as [String]).contains(type) { + return true + } else if let _ = largestImageRepresentation(image.representations)?.dimensions { + if webpage.instantPage == nil { + return true + } + } + } + + return false +} + public final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContentNode { private var webPage: TelegramMediaWebpage? @@ -309,10 +334,7 @@ public final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContent } mediaAndFlags = (image, flags) } else if let _ = largestImageRepresentation(image.representations)?.dimensions { - var flags = ChatMessageAttachedContentNodeMediaFlags() - if webpage.instantPage == nil { - flags.insert(.preferMediaInline) - } + let flags = ChatMessageAttachedContentNodeMediaFlags() mediaAndFlags = (image, flags) } } else if let story = mainMedia as? TelegramMediaStory { @@ -441,6 +463,10 @@ public final class ChatMessageWebpageBubbleContentNode: ChatMessageBubbleContent } } + if defaultWebpageImageSizeIsSmall(webpage: webpage) { + mediaAndFlags?.1.insert(.preferMediaInline) + } + if let webPageContent, let isMediaLargeByDefault = webPageContent.isMediaLargeByDefault, !isMediaLargeByDefault { mediaAndFlags?.1.insert(.preferMediaInline) } else if let attribute = item.message.attributes.first(where: { $0 is WebpagePreviewMessageAttribute }) as? WebpagePreviewMessageAttribute { diff --git a/submodules/TelegramUI/Sources/Chat/ChatMessageActionOptions.swift b/submodules/TelegramUI/Sources/Chat/ChatMessageActionOptions.swift index 435ae807dc..2964864ea0 100644 --- a/submodules/TelegramUI/Sources/Chat/ChatMessageActionOptions.swift +++ b/submodules/TelegramUI/Sources/Chat/ChatMessageActionOptions.swift @@ -16,6 +16,7 @@ import TextFormat import ChatMessageItemView import ChatMessageBubbleItemNode import TelegramNotices +import ChatMessageWebpageBubbleContentNode private enum OptionsId: Hashable { case reply @@ -710,7 +711,13 @@ private func chatLinkOptions(selfController: ChatControllerImpl, sourceNode: ASD var largeMedia = false if webpageHasLargeMedia { - largeMedia = urlPreview.largeMedia ?? true + if let value = urlPreview.largeMedia { + largeMedia = value + } else if case let .Loaded(content) = urlPreview.webPage.content { + largeMedia = !defaultWebpageImageSizeIsSmall(webpage: content) + } else { + largeMedia = true + } } else { largeMedia = false } diff --git a/versions.json b/versions.json index 73fae8de01..91021a2282 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,5 @@ { - "app": "10.2.3", + "app": "10.2.4", "bazel": "6.4.0", "xcode": "15.0" }