From c041da85e07f9a9b30e9aed30cb7b31eb7fcc898 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sat, 20 Nov 2021 20:26:53 +0400 Subject: [PATCH] Various Fixes --- .../CallListUI/Sources/CallListCallItem.swift | 20 +++++++++---- .../ChatListFilterPresetListItem.swift | 15 ++++++++-- .../Sources/ItemListPeerItem.swift | 3 ++ .../Sources/ItemListStickerPackItem.swift | 30 ++++++++++++------- .../LocalizationListItem.swift | 20 +++++++++---- .../RecentSessionsController.swift | 12 ++++---- .../Sources/PeerInfo/PeerInfoScreen.swift | 8 ++++- 7 files changed, 77 insertions(+), 31 deletions(-) diff --git a/submodules/CallListUI/Sources/CallListCallItem.swift b/submodules/CallListUI/Sources/CallListCallItem.swift index 7dfee591ca..7cc33f906f 100644 --- a/submodules/CallListUI/Sources/CallListCallItem.swift +++ b/submodules/CallListUI/Sources/CallListCallItem.swift @@ -190,6 +190,11 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { private let highlightedBackgroundNode: ASDisplayNode private let maskNode: ASImageNode + private let containerNode: ASDisplayNode + override var controlsContainer: ASDisplayNode { + return self.containerNode + } + private let avatarNode: AvatarNode private let titleNode: TextNode private let statusNode: TextNode @@ -207,6 +212,8 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { self.backgroundNode = ASDisplayNode() self.backgroundNode.isLayerBacked = true + self.containerNode = ASDisplayNode() + self.maskNode = ASImageNode() self.maskNode.isUserInteractionEnabled = false @@ -239,12 +246,12 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) self.addSubnode(self.backgroundNode) - self.addSubnode(self.avatarNode) - self.addSubnode(self.typeIconNode) - self.addSubnode(self.titleNode) - self.addSubnode(self.statusNode) - self.addSubnode(self.dateNode) - self.addSubnode(self.infoButtonNode) + self.containerNode.addSubnode(self.avatarNode) + self.containerNode.addSubnode(self.typeIconNode) + self.containerNode.addSubnode(self.titleNode) + self.containerNode.addSubnode(self.statusNode) + self.containerNode.addSubnode(self.dateNode) + self.containerNode.addSubnode(self.infoButtonNode) self.addSubnode(self.accessibilityArea) self.infoButtonNode.addTarget(self, action: #selector(self.infoPressed), forControlEvents: .touchUpInside) @@ -631,6 +638,7 @@ class CallListCallItemNode: ItemListRevealOptionsItemNode { let topHighlightInset: CGFloat = (first || !nodeLayout.insets.top.isZero) ? 0.0 : separatorHeight strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: nodeLayout.contentSize.width, height: nodeLayout.contentSize.height)) + strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: strongSelf.backgroundNode.frame.size) strongSelf.highlightedBackgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -nodeLayout.insets.top - topHighlightInset), size: CGSize(width: nodeLayout.size.width, height: nodeLayout.size.height + topHighlightInset)) strongSelf.updateLayout(size: nodeLayout.contentSize, leftInset: params.leftInset, rightInset: params.rightInset) diff --git a/submodules/ChatListUI/Sources/ChatListFilterPresetListItem.swift b/submodules/ChatListUI/Sources/ChatListFilterPresetListItem.swift index 7fddedcea1..7dd627e4c8 100644 --- a/submodules/ChatListUI/Sources/ChatListFilterPresetListItem.swift +++ b/submodules/ChatListUI/Sources/ChatListFilterPresetListItem.swift @@ -109,6 +109,11 @@ private final class ChatListFilterPresetListItemNode: ItemListRevealOptionsItemN private let highlightedBackgroundNode: ASDisplayNode private let maskNode: ASImageNode + private let containerNode: ASDisplayNode + override var controlsContainer: ASDisplayNode { + return self.containerNode + } + private let titleNode: TextNode private let labelNode: TextNode private let arrowNode: ASImageNode @@ -138,6 +143,8 @@ private final class ChatListFilterPresetListItemNode: ItemListRevealOptionsItemN self.bottomStripeNode = ASDisplayNode() self.bottomStripeNode.isLayerBacked = true + self.containerNode = ASDisplayNode() + self.maskNode = ASImageNode() self.maskNode.isUserInteractionEnabled = false @@ -161,9 +168,10 @@ private final class ChatListFilterPresetListItemNode: ItemListRevealOptionsItemN super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) - self.addSubnode(self.titleNode) - self.addSubnode(self.labelNode) - self.addSubnode(self.arrowNode) + self.addSubnode(self.containerNode) + self.containerNode.addSubnode(self.titleNode) + self.containerNode.addSubnode(self.labelNode) + self.containerNode.addSubnode(self.arrowNode) self.addSubnode(self.activateArea) self.activateArea.activate = { [weak self] in @@ -345,6 +353,7 @@ private final class ChatListFilterPresetListItemNode: ItemListRevealOptionsItemN strongSelf.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(item.presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight))) + strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: strongSelf.backgroundNode.frame.size) strongSelf.maskNode.frame = strongSelf.backgroundNode.frame.insetBy(dx: params.leftInset, dy: 0.0) transition.updateFrame(node: strongSelf.topStripeNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: layoutSize.width, height: separatorHeight))) transition.updateFrame(node: strongSelf.bottomStripeNode, frame: CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height + bottomStripeOffset), size: CGSize(width: layoutSize.width - bottomStripeInset, height: separatorHeight))) diff --git a/submodules/ItemListPeerItem/Sources/ItemListPeerItem.swift b/submodules/ItemListPeerItem/Sources/ItemListPeerItem.swift index dc4d38f2c5..12d2e57962 100644 --- a/submodules/ItemListPeerItem/Sources/ItemListPeerItem.swift +++ b/submodules/ItemListPeerItem/Sources/ItemListPeerItem.swift @@ -449,6 +449,9 @@ public class ItemListPeerItemNode: ItemListRevealOptionsItemNode, ItemListItemNo private let maskNode: ASImageNode private let containerNode: ContextControllerSourceNode + public override var controlsContainer: ASDisplayNode { + return self.containerNode + } fileprivate let avatarNode: AvatarNode private let titleNode: TextNode diff --git a/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift b/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift index 335a1e2c04..53cc020bfe 100644 --- a/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift +++ b/submodules/ItemListStickerPackItem/Sources/ItemListStickerPackItem.swift @@ -151,6 +151,11 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { private var disabledOverlayNode: ASDisplayNode? private let maskNode: ASImageNode + private let containerNode: ASDisplayNode + override var controlsContainer: ASDisplayNode { + return self.containerNode + } + fileprivate let imageNode: TransformImageNode private var animationNode: AnimatedStickerNode? private var placeholderNode: StickerShimmerEffectNode? @@ -203,6 +208,8 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { self.bottomStripeNode = ASDisplayNode() self.bottomStripeNode.isLayerBacked = true + self.containerNode = ASDisplayNode() + self.maskNode = ASImageNode() self.maskNode.isUserInteractionEnabled = false @@ -245,17 +252,19 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) - if let placeholderNode = self.placeholderNode { - self.addSubnode(placeholderNode) - } - self.addSubnode(self.imageNode) + self.addSubnode(self.containerNode) - self.addSubnode(self.titleNode) - self.addSubnode(self.statusNode) - self.addSubnode(self.unreadNode) - self.addSubnode(self.installationActionImageNode) - self.addSubnode(self.installationActionNode) - self.addSubnode(self.selectionIconNode) + if let placeholderNode = self.placeholderNode { + self.containerNode.addSubnode(placeholderNode) + } + + self.containerNode.addSubnode(self.imageNode) + self.containerNode.addSubnode(self.titleNode) + self.containerNode.addSubnode(self.statusNode) + self.containerNode.addSubnode(self.unreadNode) + self.containerNode.addSubnode(self.installationActionImageNode) + self.containerNode.addSubnode(self.installationActionNode) + self.containerNode.addSubnode(self.selectionIconNode) self.addSubnode(self.activateArea) self.installationActionNode.addTarget(self, action: #selector(self.installationActionPressed), forControlEvents: .touchUpInside) @@ -689,6 +698,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { strongSelf.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(item.presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight))) + strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: strongSelf.backgroundNode.frame.size) strongSelf.maskNode.frame = strongSelf.backgroundNode.frame.insetBy(dx: params.leftInset, dy: 0.0) transition.updateFrame(node: strongSelf.topStripeNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: layoutSize.width, height: separatorHeight))) transition.updateFrame(node: strongSelf.bottomStripeNode, frame: CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height + bottomStripeOffset), size: CGSize(width: layoutSize.width - bottomStripeInset, height: separatorHeight))) diff --git a/submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift b/submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift index 8739c2307c..cc0eb02266 100644 --- a/submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift +++ b/submodules/SettingsUI/Sources/Language Selection/LocalizationListItem.swift @@ -120,6 +120,11 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { private let activateArea: AccessibilityAreaNode + private let containerNode: ASDisplayNode + override var controlsContainer: ASDisplayNode { + return self.containerNode + } + override var canBeSelected: Bool { if self.editableControlNode != nil { return false @@ -144,6 +149,8 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { self.maskNode = ASImageNode() self.maskNode.isUserInteractionEnabled = false + self.containerNode = ASDisplayNode() + self.iconNode = ASImageNode() self.iconNode.isLayerBacked = true self.iconNode.displayWithoutProcessing = true @@ -169,10 +176,12 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { super.init(layerBacked: false, dynamicBounce: false, rotated: false, seeThrough: false) - self.addSubnode(self.iconNode) - self.addSubnode(self.activityNode) - self.addSubnode(self.titleNode) - self.addSubnode(self.subtitleNode) + self.addSubnode(self.containerNode) + + self.containerNode.addSubnode(self.iconNode) + self.containerNode.addSubnode(self.activityNode) + self.containerNode.addSubnode(self.titleNode) + self.containerNode.addSubnode(self.subtitleNode) self.addSubnode(self.activateArea) } @@ -282,7 +291,7 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 2) } if strongSelf.maskNode.supernode == nil { - strongSelf.insertSubnode(strongSelf.maskNode, at: 3) + strongSelf.addSubnode(strongSelf.maskNode) } let hasCorners = itemListHasRoundedBlockLayout(params) var hasTopCorners = false @@ -307,6 +316,7 @@ class LocalizationListItemNode: ItemListRevealOptionsItemNode { strongSelf.maskNode.image = hasCorners ? PresentationResourcesItemList.cornersImage(item.presentationData.theme, top: hasTopCorners, bottom: hasBottomCorners) : nil strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: contentSize.height + min(insets.top, separatorHeight) + min(insets.bottom, separatorHeight))) + strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: strongSelf.backgroundNode.frame.size) strongSelf.maskNode.frame = strongSelf.backgroundNode.frame.insetBy(dx: params.leftInset, dy: 0.0) strongSelf.topStripeNode.frame = CGRect(origin: CGPoint(x: 0.0, y: -min(insets.top, separatorHeight)), size: CGSize(width: params.width, height: separatorHeight)) strongSelf.bottomStripeNode.frame = CGRect(origin: CGPoint(x: bottomStripeInset, y: contentSize.height - separatorHeight), size: CGSize(width: params.width - bottomStripeInset, height: separatorHeight)) diff --git a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift index 23a83f0e00..5ce9e6415a 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/Recent Sessions/RecentSessionsController.swift @@ -829,12 +829,12 @@ public func recentSessionsController(context: AccountContext, activeSessionsCont } } - let emptyStateItem: ItemListControllerEmptyStateItem? - if sessionsState.sessions.count == 1 && mode == .sessions { - emptyStateItem = RecentSessionsEmptyStateItem(theme: presentationData.theme, strings: presentationData.strings) - } else { - emptyStateItem = nil - } + let emptyStateItem: ItemListControllerEmptyStateItem? = nil +// if sessionsState.sessions.count == 1 && mode == .sessions { +// emptyStateItem = RecentSessionsEmptyStateItem(theme: presentationData.theme, strings: presentationData.strings) +// } else { +// emptyStateItem = nil +// } let title: ItemListControllerTitle let entries: [RecentSessionsEntry] diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 47bed354b0..2d0353aaba 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -6115,7 +6115,13 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate var testView: UIView? = localResult while true { if let testViewValue = testView { - if let node = testViewValue.asyncdisplaykit_node as? PeerInfoVisualMediaPaneNode { + if let node = testViewValue.asyncdisplaykit_node as? PeerInfoHeaderNavigationButton { + node.isUserInteractionEnabled = false + DispatchQueue.main.async { + node.isUserInteractionEnabled = true + } + return .dismiss(consume: false, result: nil) + } else if let node = testViewValue.asyncdisplaykit_node as? PeerInfoVisualMediaPaneNode { node.brieflyDisableTouchActions() return .dismiss(consume: false, result: nil) } else {