From 20a2318f201cee94c7d37711bed71c151f167992 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Wed, 6 Jul 2022 14:25:24 +0200 Subject: [PATCH] Fix invoice image loading --- .../Sources/BotCheckoutHeaderItem.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutHeaderItem.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutHeaderItem.swift index 38bbe6315c..48847922ce 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutHeaderItem.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutHeaderItem.swift @@ -8,6 +8,7 @@ import TelegramPresentationData import ItemListUI import PresentationDataUtils import PhotoResources +import Postbox class BotCheckoutHeaderItem: ListViewItem, ItemListItem { let account: Account @@ -77,6 +78,8 @@ class BotCheckoutHeaderItemNode: ListViewItemNode { private var item: BotCheckoutHeaderItem? + private let fetchDisposable = MetaDisposable() + init() { self.backgroundNode = ASDisplayNode() self.backgroundNode.isLayerBacked = true @@ -119,6 +122,10 @@ class BotCheckoutHeaderItemNode: ListViewItemNode { self.addSubnode(self.botNameNode) } + deinit { + self.fetchDisposable.dispose() + } + func asyncLayout() -> (_ item: BotCheckoutHeaderItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { let makeTitleLayout = TextNode.asyncLayout(self.titleNode) let makeTextLayout = TextNode.asyncLayout(self.textNode) @@ -159,12 +166,14 @@ class BotCheckoutHeaderItemNode: ListViewItemNode { var imageApply: (() -> Void)? var updatedImageSignal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>? + var updatedFetchSignal: Signal? if let photo = item.invoice.photo, let dimensions = photo.dimensions { let arguments = TransformImageArguments(corners: ImageCorners(radius: 4.0), imageSize: dimensions.cgSize.aspectFilled(imageSize), boundingSize: imageSize, intrinsicInsets: UIEdgeInsets(), emptyColor: item.theme.list.mediaPlaceholderColor) imageApply = makeImageLayout(arguments) maxTextWidth = max(1.0, maxTextWidth - imageSize.width - imageTextSpacing) if imageUpdated { updatedImageSignal = chatWebFileImage(account: item.account, file: photo) + updatedFetchSignal = fetchedMediaResource(mediaBox: item.account.postbox.mediaBox, reference: .standalone(resource: photo.resource)) } } @@ -206,6 +215,9 @@ class BotCheckoutHeaderItemNode: ListViewItemNode { if let updatedImageSignal = updatedImageSignal { strongSelf.imageNode.setSignal(updatedImageSignal) } + if let updatedFetchSignal = updatedFetchSignal { + strongSelf.fetchDisposable.set(updatedFetchSignal.start()) + } strongSelf.imageNode.isHidden = false } else { strongSelf.imageNode.isHidden = true