From ca6821c4f11cf90b1717b98577e6a2ce247c270c Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 26 Oct 2021 21:07:21 +0400 Subject: [PATCH] Hide ad better --- submodules/Display/Source/ListView.swift | 10 ++++++++++ submodules/TelegramUI/Sources/ChatController.swift | 12 +++++++++++- .../Sources/ChatMessageBubbleItemNode.swift | 3 +++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/submodules/Display/Source/ListView.swift b/submodules/Display/Source/ListView.swift index e23d5b6a4b..6b93d5a465 100644 --- a/submodules/Display/Source/ListView.swift +++ b/submodules/Display/Source/ListView.swift @@ -4296,6 +4296,16 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture } } } + + public func enumerateItemNodes(_ f: (ASDisplayNode) -> Bool) { + for itemNode in self.itemNodes { + if itemNode.index != nil { + if !f(itemNode) { + break + } + } + } + } public func forEachVisibleItemNode(_ f: (ASDisplayNode) -> Void) { for itemNode in self.itemNodes { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 24c5f553d0..b3a80f847d 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -4963,12 +4963,22 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.chatDisplayNode.historyNode.contentPositionChanged = { [weak self] offset in guard let strongSelf = self else { return } + + var minOffsetForNavigation: CGFloat = 40.0 + strongSelf.chatDisplayNode.historyNode.enumerateItemNodes { itemNode in + if let itemNode = itemNode as? ChatMessageBubbleItemNode { + if itemNode.item?.content.firstMessage.adAttribute != nil { + minOffsetForNavigation += itemNode.bounds.height + } + } + return false + } let offsetAlpha: CGFloat let plainInputSeparatorAlpha: CGFloat switch offset { case let .known(offset): - if offset < 40.0 { + if offset < minOffsetForNavigation { offsetAlpha = 0.0 } else { offsetAlpha = 1.0 diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index 3b3d34b0d0..a55af7ee11 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -1972,6 +1972,9 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewItemNode if dateHeaderAtBottom { layoutInsets.top += layoutConstants.timestampHeaderHeight } + if isAd { + layoutInsets.top += 4.0 + } let layout = ListViewItemNodeLayout(contentSize: layoutSize, insets: layoutInsets)