From d09c539298f8bdc8a042c3b6b2ae49998a6ce0d7 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 28 Jun 2024 00:01:40 +0400 Subject: [PATCH] Various fixes --- .../Sources/Items/ChatImageGalleryItem.swift | 2 +- .../Sources/TGMediaAssetsController.m | 3 +++ .../ApiUtils/ReactionsMessageAttribute.swift | 2 ++ .../ChatMessageInteractiveMediaNode.swift | 5 +---- .../ChatMessageMediaBubbleContentNode.swift | 4 +--- .../Sources/StarsImageComponent.swift | 20 +++++++++++++++++- .../Stars/MediaLock.imageset/Contents.json | 12 +++++++++++ .../Stars/MediaLock.imageset/lockmedia.pdf | Bin 0 -> 1836 bytes .../Chat/ChatMessageActionOptions.swift | 8 ++++++- 9 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/lockmedia.pdf diff --git a/submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift b/submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift index 0b2fb3983d..9c39a5d896 100644 --- a/submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift +++ b/submodules/GalleryUI/Sources/Items/ChatImageGalleryItem.swift @@ -386,7 +386,7 @@ final class ChatImageGalleryItemNode: ZoomableContentGalleryItemNode { strongSelf.statusNodeContainer.isHidden = true Queue.concurrentDefaultQueue().async { - if let message = strongSelf.message, !message.isCopyProtected() && !imageReference.media.flags.contains(.hasStickers) { + if let message = strongSelf.message, !message.isCopyProtected() && !imageReference.media.flags.contains(.hasStickers) && message.paidContent == nil { strongSelf.recognitionDisposable.set((recognizedContent(context: strongSelf.context, image: { return generate(TransformImageArguments(corners: ImageCorners(), imageSize: displaySize, boundingSize: displaySize, intrinsicInsets: UIEdgeInsets()))?.generateImage() }, messageId: message.id) |> deliverOnMainQueue).start(next: { [weak self] results in if let strongSelf = self { diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m index a890bf89e0..94f4f26632 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m @@ -1227,6 +1227,9 @@ else if (groupedId != nil && !hasAnyTimers) dict[@"groupedId"] = groupedId; + if (price != nil) + dict[@"price"] = price; + if (spoiler) { dict[@"spoiler"] = @true; } diff --git a/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift b/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift index 63b3d8b66e..52fd6e0f2c 100644 --- a/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift +++ b/submodules/TelegramCore/Sources/ApiUtils/ReactionsMessageAttribute.swift @@ -111,6 +111,8 @@ public func mergedMessageReactionsAndPeers(accountPeerId: EnginePeer.Id, account reactions.insert(MessageReaction(value: .custom(MessageReaction.starsReactionId), count: 1000000, chosenOrder: nil), at: 0) } } + #else + let reactions = attribute.reactions #endif return (reactions, recentPeers) diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveMediaNode/Sources/ChatMessageInteractiveMediaNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveMediaNode/Sources/ChatMessageInteractiveMediaNode.swift index c9366f7e85..3b9cd0b578 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveMediaNode/Sources/ChatMessageInteractiveMediaNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageInteractiveMediaNode/Sources/ChatMessageInteractiveMediaNode.swift @@ -2079,7 +2079,7 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr if let invoice = media as? TelegramMediaInvoice, let selectedMedia = invoice.extendedMedia { extendedMedia = selectedMedia } else if let paidContent = media as? TelegramMediaPaidContent { - let selectedMediaIndex = mediaIndex ?? 0 + let selectedMediaIndex = self.mediaIndex ?? 0 if selectedMediaIndex < paidContent.extendedMedia.count { extendedMedia = paidContent.extendedMedia[selectedMediaIndex] } @@ -2427,9 +2427,6 @@ public final class ChatMessageInteractiveMediaNode: ASDisplayNode, GalleryItemTr } } } -// if let paidContent { -// viewText = "⭐️\(paidContent.amount)" -// } self.extendedMediaOverlayNode?.update(size: self.imageNode.frame.size, text: viewText, imageSignal: self.currentBlurredImageSignal, imageFrame: self.imageNode.view.convert(self.imageNode.bounds, to: self.extendedMediaOverlayNode?.view), corners: self.currentImageArguments?.corners) } else if let extendedMediaOverlayNode = self.extendedMediaOverlayNode { self.extendedMediaOverlayNode = nil diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageMediaBubbleContentNode/Sources/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageMediaBubbleContentNode/Sources/ChatMessageMediaBubbleContentNode.swift index 57b30db954..dbe1880c41 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageMediaBubbleContentNode/Sources/ChatMessageMediaBubbleContentNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageMediaBubbleContentNode/Sources/ChatMessageMediaBubbleContentNode.swift @@ -186,9 +186,7 @@ public class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { } } } - - let _ = selectedMediaIndex - + if let extendedMedia, case let .full(media) = extendedMedia { if let telegramImage = media as? TelegramMediaImage { if shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: telegramImage) { diff --git a/submodules/TelegramUI/Components/Stars/StarsImageComponent/Sources/StarsImageComponent.swift b/submodules/TelegramUI/Components/Stars/StarsImageComponent/Sources/StarsImageComponent.swift index c29b55363e..fa56c53adb 100644 --- a/submodules/TelegramUI/Components/Stars/StarsImageComponent/Sources/StarsImageComponent.swift +++ b/submodules/TelegramUI/Components/Stars/StarsImageComponent/Sources/StarsImageComponent.swift @@ -347,6 +347,7 @@ public final class StarsImageComponent: Component { private var dustNode: MediaDustNode? private var button: UIControl? + private var lockView: UIImageView? private var countView = ComponentView() private let fetchDisposable = MetaDisposable() @@ -641,6 +642,19 @@ public final class StarsImageComponent: Component { imageFrameNode.frame = imageFrame.insetBy(dx: -2.0, dy: -2.0) } + var totalLabelWidth: CGFloat = 0.0 + let labelSpacing: CGFloat = 3.0 + let lockView: UIImageView + if let current = self.lockView { + lockView = current + } else { + lockView = UIImageView(image: UIImage(bundleImageName: "Premium/Stars/MediaLock")) + containerNode.view.addSubview(lockView) + } + if let icon = lockView.image { + totalLabelWidth += icon.size.width + } + if extendedMedia.count > 1 { let countSize = self.countView.update( transition: .immediate, @@ -650,7 +664,9 @@ public final class StarsImageComponent: Component { environment: {}, containerSize: imageFrame.size ) - let countFrame = CGRect(origin: CGPoint(x: imageFrame.minX + floorToScreenPixels((imageFrame.width - countSize.width) / 2.0), y: imageFrame.minY + floorToScreenPixels((imageFrame.height - countSize.height) / 2.0)), size: countSize) + let iconWidth = totalLabelWidth + totalLabelWidth += countSize.width + labelSpacing + let countFrame = CGRect(origin: CGPoint(x: imageFrame.minX + floorToScreenPixels((imageFrame.width - totalLabelWidth) / 2.0) + iconWidth + labelSpacing, y: imageFrame.minY + floorToScreenPixels((imageFrame.height - countSize.height) / 2.0)), size: countSize) if let countView = self.countView.view { if countView.superview == nil { containerNode.view.addSubview(countView) @@ -658,6 +674,8 @@ public final class StarsImageComponent: Component { countView.frame = countFrame } } + + lockView.frame = CGRect(origin: CGPoint(x: imageFrame.minX + floorToScreenPixels((imageFrame.width - totalLabelWidth) / 2.0), y: imageFrame.minY + floorToScreenPixels((imageFrame.height - lockView.bounds.height) / 2.0)), size: lockView.bounds.size) case let .transactionPeer(peer): if case let .peer(peer) = peer { let avatarNode: ImageNode diff --git a/submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/Contents.json new file mode 100644 index 0000000000..832af97290 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "lockmedia.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/lockmedia.pdf b/submodules/TelegramUI/Images.xcassets/Premium/Stars/MediaLock.imageset/lockmedia.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ffaa059660a4ccd42a4ab2a787ad408cf66b8718 GIT binary patch literal 1836 zcmZXVdo+}J7{{B{$i7&Ym{CfI-bFeL|_5HGa^|C>;|*>VX!(w9e6L8$3emY zNxj`yEvYLA5dqBF3B{n`>^pVV6um=zqbBhTOY@(jw}qm_q<)>V?vkQX<3Mp&mvGR_ z2md8G^!SNNT+V~KxS@{rH3_R}V`Du&BlQW9i&Qd;SH-s-xT8ZaMs~b!SKKOp^2{~x zvmJG?I%lwE9ACb=ocFxyzEhW7i!~{D5YK0N3|vSr*(;&s7l!!vDC(o%ddptey}Kq> zw1~v7nBpZ0(rMIQt^A^TxCD@l&>=v&xKfzO?mPQ)lgh(Nd*~yi>!7MZN>i6SZq$OlOseA zjfYBnkG7N?_!yU}b4J=ClxGxDt*dj_TCE#RV-;V!OAdv9yDo8Xu`b&Xnp=EO{PJqG z_NZ1_qU`3eeJ}4Eqe&c)2HBHxE3GD+@m8O@E=y3~w(ebX`MNfpsLllKq^ej0iLO(P zyd$Y%*k(AX%v0GmRO;7%%SiugqN*FtIBDO-%>!TUIOPopD)qvOG|pX z@>%0SONv32$!=zJoU3!k!@xpRss6p2n?a71B`tA1=noH>XJ2i1=cW66rjzHV2qQXE zNH*VI25wSP_xyCr6l=pgETk{&_^V^b<#=k(nJwM{ug!Lt+^>Y9F>WL6E)ffl7zQUc zXqn>-&pr+?tk115_9_n-ru9DA%V@9FN-(>QB21es?=yRg&ohU3Zy7U=7F?HSo^ zm<6?_|47YRjz}($4KXL{25b#dvFM6(dLwi=QDz!n!Sdq(GrZo3)RV~KET&wA zv;M^1`eF0t3h7|7-1N*!g)-%^JP^Xxnw?uFs-2f(x}ep~HiT6bv&$JpMR#(%ejRFW zo@crbqpyvQK;6k&kho<7(_7y4=%{|jAp?^U%i(!xRw=XGoQ|<_IZOT0I8~^*#6m3r zv?<^5(Gf4!Cky1s%)5Z8Y6(WLj>ReP1@Hy0hK}_QGi;W z3L*hatN?FDBB}e-#Ee9=cU1fNULp}3|0|Il)dTx}7lraQ5fQMsk+1;L{Jr&V>T%c# w`8#18u;qr~CWnIe