From c2052b559aee203d20788aa4526fd0e8d8735520 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Thu, 22 May 2025 21:15:58 +0800 Subject: [PATCH] Monoforums --- .../Sources/NotificationService.swift | 2 +- .../ChatTitleView/Sources/ChatTitleView.swift | 2 +- .../Sources/ChatControllerNode.swift | 27 ++++++++++--------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/Telegram/NotificationService/Sources/NotificationService.swift b/Telegram/NotificationService/Sources/NotificationService.swift index 49eccbd317..8c92b1ef94 100644 --- a/Telegram/NotificationService/Sources/NotificationService.swift +++ b/Telegram/NotificationService/Sources/NotificationService.swift @@ -1763,7 +1763,7 @@ private final class NotificationServiceHandler { |> mapToSignal { content, _ -> Signal<(NotificationContent, Media?), NoError> in return stateManager.postbox.transaction { transaction -> (NotificationContent, Media?) in var parsedMedia: Media? - if let messageId, let message = transaction.getMessage(messageId), !message.containsSecretMedia { + if let messageId, let message = transaction.getMessage(messageId), !message.containsSecretMedia, !message.attributes.contains(where: { $0 is MediaSpoilerMessageAttribute }) { if let media = message.media.first { parsedMedia = media } diff --git a/submodules/TelegramUI/Components/ChatTitleView/Sources/ChatTitleView.swift b/submodules/TelegramUI/Components/ChatTitleView/Sources/ChatTitleView.swift index f7a7d09dcd..ed7c2cf28b 100644 --- a/submodules/TelegramUI/Components/ChatTitleView/Sources/ChatTitleView.swift +++ b/submodules/TelegramUI/Components/ChatTitleView/Sources/ChatTitleView.swift @@ -1148,7 +1148,7 @@ public final class ChatTitleView: UIView, NavigationBarTitleView { self.superview?.insertSubview(snapshotState.snapshotView, belowSubview: self) let snapshotView = snapshotState.snapshotView - snapshotState.snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.12, removeOnCompletion: false, completion: { [weak snapshotView] _ in + snapshotState.snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.14, removeOnCompletion: false, completion: { [weak snapshotView] _ in snapshotView?.removeFromSuperview() }) snapshotView.layer.animatePosition(from: CGPoint(), to: CGPoint(x: -offset.x, y: -offset.y), duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, additive: true) diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 6a21248cb3..d9565af13f 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -1317,8 +1317,6 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { } self.containerLayoutAndNavigationBarHeight = (layout, navigationBarHeight) - var extraTransition = transition - var dismissedTitleTopicsAccessoryPanelNode: ChatTopicListTitleAccessoryPanelNode? var immediatelyLayoutTitleTopicsAccessoryPanelNodeAndAnimateAppearance = false var titleTopicsAccessoryPanelHeight: CGFloat? @@ -1379,9 +1377,6 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { self.titleAccessoryPanelContainer.addSubnode(titleAccessoryPanelNode) titleAccessoryPanelNode.clipsToBounds = true - if transition.isAnimated { - extraTransition = .animated(duration: 0.2, curve: .easeInOut) - } } let layoutResult = titleAccessoryPanelNode.updateLayout(width: layout.size.width, leftInset: leftPanelSize?.width ?? layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: immediatelyLayoutTitleAccessoryPanelNodeAndAnimateAppearance ? .immediate : transition, interfaceState: self.chatPresentationInterfaceState) @@ -1389,9 +1384,11 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { titleAccessoryPanelBackgroundHeight = layoutResult.backgroundHeight titleAccessoryPanelHitTestSlop = layoutResult.hitTestSlop if immediatelyLayoutTitleAccessoryPanelNodeAndAnimateAppearance { - titleAccessoryPanelNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + if transition.isAnimated { + titleAccessoryPanelNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } titleAccessoryPanelNode.subnodeTransform = CATransform3DMakeTranslation(0.0, -layoutResult.backgroundHeight, 0.0) - extraTransition.updateSublayerTransformOffset(layer: titleAccessoryPanelNode.layer, offset: CGPoint()) + transition.updateSublayerTransformOffset(layer: titleAccessoryPanelNode.layer, offset: CGPoint()) } } else if let titleAccessoryPanelNode = self.titleAccessoryPanelNode { dismissedTitleAccessoryPanelNode = titleAccessoryPanelNode @@ -1434,9 +1431,6 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { self.titleAccessoryPanelContainer.addSubnode(translationPanelNode) translationPanelNode.clipsToBounds = true - if transition.isAnimated { - extraTransition = .animated(duration: 0.2, curve: .easeInOut) - } } let height = translationPanelNode.updateLayout(width: layout.size.width, leftInset: leftPanelSize?.width ?? layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: immediatelyLayoutTitleAccessoryPanelNodeAndAnimateAppearance ? .immediate : transition, interfaceState: self.chatPresentationInterfaceState) @@ -1444,7 +1438,7 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { if immediatelyLayoutTranslationPanelNodeAndAnimateAppearance { translationPanelNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) translationPanelNode.subnodeTransform = CATransform3DMakeTranslation(0.0, -height, 0.0) - extraTransition.updateSublayerTransformOffset(layer: translationPanelNode.layer, offset: CGPoint()) + transition.updateSublayerTransformOffset(layer: translationPanelNode.layer, offset: CGPoint()) } } else if let chatTranslationPanel = self.chatTranslationPanel { dismissedTranslationPanelNode = chatTranslationPanel @@ -1849,6 +1843,7 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { } var titleAccessoryPanelFrame: CGRect? + let titleAccessoryPanelBaseY = titlePanelsContentOffset if let _ = self.titleAccessoryPanelNode, let panelHeight = titleAccessoryPanelHeight { titleAccessoryPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: titlePanelsContentOffset), size: CGSize(width: layout.size.width, height: panelHeight)) insets.top += panelHeight @@ -1891,7 +1886,7 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { extraNavigationBarLeftCutout = CGSize(width: 0.0, height: navigationBarHeight) } - updateExtraNavigationBarBackgroundHeight(extraNavigationBarHeight, extraNavigationBarHitTestSlop, extraNavigationBarLeftCutout, extraTransition) + updateExtraNavigationBarBackgroundHeight(extraNavigationBarHeight, extraNavigationBarHitTestSlop, extraNavigationBarLeftCutout, transition) let contentBounds = CGRect(x: 0.0, y: 0.0, width: layout.size.width - wrappingInsets.left - wrappingInsets.right, height: layout.size.height - wrappingInsets.top - wrappingInsets.bottom) @@ -2703,7 +2698,13 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { if let dismissedTitleAccessoryPanelNode { var dismissedPanelFrame = dismissedTitleAccessoryPanelNode.frame - dismissedPanelFrame.origin.y = -dismissedPanelFrame.size.height + transition.updateSublayerTransformOffset(layer: dismissedTitleAccessoryPanelNode.layer, offset: CGPoint(x: 0.0, y: -dismissedPanelFrame.height)) + dismissedPanelFrame.origin.y = titleAccessoryPanelBaseY + dismissedTitleAccessoryPanelNode.clipsToBounds = true + dismissedPanelFrame.size.height = 0.0 + if transition.isAnimated { + dismissedTitleAccessoryPanelNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false) + } transition.updateFrame(node: dismissedTitleAccessoryPanelNode, frame: dismissedPanelFrame, completion: { [weak dismissedTitleAccessoryPanelNode] _ in dismissedTitleAccessoryPanelNode?.removeFromSupernode() })