From ff158e66fd1d773692282e29c9e3fd78a2f37a48 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 27 Oct 2021 00:22:39 +0400 Subject: [PATCH] Various fixes --- .../ListItems/PeerInfoScreenInfoItem.swift | 16 ++++++++++++++++ .../Sources/PeerInfo/PeerInfoHeaderNode.swift | 2 +- .../Sources/PeerInfo/PeerInfoScreen.swift | 15 +++++++-------- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenInfoItem.swift b/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenInfoItem.swift index 1ff9d4634c..d97fd8fb65 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenInfoItem.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/ListItems/PeerInfoScreenInfoItem.swift @@ -35,6 +35,7 @@ final class PeerInfoScreenInfoItem: PeerInfoScreenItem { private final class PeerInfoScreenInfoItemNode: PeerInfoScreenItemNode { private let bottomSeparatorNode: ASDisplayNode + private let maskNode: ASImageNode private var item: PeerInfoScreenInfoItem? private var itemNode: InfoItemNode? @@ -43,6 +44,9 @@ private final class PeerInfoScreenInfoItemNode: PeerInfoScreenItemNode { self.bottomSeparatorNode = ASDisplayNode() self.bottomSeparatorNode.isLayerBacked = true + self.maskNode = ASImageNode() + self.maskNode.isUserInteractionEnabled = false + super.init() self.addSubnode(self.bottomSeparatorNode) @@ -99,6 +103,18 @@ private final class PeerInfoScreenInfoItemNode: PeerInfoScreenItemNode { separatorInset += 49.0 } + let hasCorners = safeInsets.left > 0.0 && (topItem == nil || bottomItem == nil) + let hasTopCorners = hasCorners && topItem == nil + let hasBottomCorners = hasCorners && bottomItem == nil + + self.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil + self.maskNode.frame = CGRect(origin: CGPoint(x: safeInsets.left, y: 0.0), size: CGSize(width: width - safeInsets.left - safeInsets.right, height: height)) + self.bottomSeparatorNode.isHidden = hasBottomCorners + + if self.maskNode.supernode == nil { + self.addSubnode(self.maskNode) + } + transition.updateFrame(node: self.bottomSeparatorNode, frame: CGRect(origin: CGPoint(x: separatorInset, y: height - UIScreenPixel), size: CGSize(width: width - sideInset, height: UIScreenPixel))) transition.updateAlpha(node: self.bottomSeparatorNode, alpha: bottomItem == nil ? 0.0 : 1.0) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift index ebfa4ddcd6..bb5d84a3d7 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift @@ -2266,7 +2266,7 @@ final class PeerInfoHeaderNode: ASDisplayNode { panelSubtitleAlpha = 0.0 var headerBackgroundAlpha: CGFloat = 0.0 - if titleCollapseFraction >= 0.8 { + if !state.isEditing && titleCollapseFraction >= 0.8 { headerBackgroundAlpha = (titleCollapseFraction - 0.8) / 0.2 } self.updateHeaderAlpha?(headerBackgroundAlpha, transition) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 37e8fc44fc..be80a5422e 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -111,8 +111,6 @@ private final class PeerInfoScreenItemSectionContainerNode: ASDisplayNode { } func update(width: CGFloat, safeInsets: UIEdgeInsets, presentationData: PresentationData, items: [PeerInfoScreenItem], transition: ContainedViewLayoutTransition) -> CGFloat { - let previousItems = self.currentItems - self.backgroundNode.backgroundColor = presentationData.theme.list.itemBlocksBackgroundColor self.topSeparatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor self.bottomSeparatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor @@ -217,12 +215,6 @@ private final class PeerInfoScreenItemSectionContainerNode: ASDisplayNode { transition.updateAlpha(node: self.bottomSeparatorNode, alpha: 1.0) } - if previousItems.isEmpty && items.count == 1 && transition.isAnimated { - self.alpha = 0.0 - let alphaTransition: ContainedViewLayoutTransition = .animated(duration: 0.35, curve: .linear) - alphaTransition.updateAlpha(node: self, alpha: 1.0) - } - return contentHeight } } @@ -6395,6 +6387,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate for (sectionId, sectionItems) in items { validRegularSections.append(sectionId) + var wasAdded = false let sectionNode: PeerInfoScreenItemSectionContainerNode if let current = self.regularSections[sectionId] { sectionNode = current @@ -6402,6 +6395,12 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate sectionNode = PeerInfoScreenItemSectionContainerNode() self.regularSections[sectionId] = sectionNode self.scrollNode.addSubnode(sectionNode) + wasAdded = true + } + + if wasAdded && transition.isAnimated && self.isSettings && !self.state.isEditing { + sectionNode.alpha = 0.0 + transition.updateAlpha(node: sectionNode, alpha: 1.0) } let sectionHeight = sectionNode.update(width: layout.size.width, safeInsets: insets, presentationData: self.presentationData, items: sectionItems, transition: transition)