Merge commit 'b7a0e9e2d71f8fcf8c7f3d259b0ed57b18d2af5d'

This commit is contained in:
Isaac 2025-04-12 23:02:07 +04:00
commit 672d5ddbd1
2 changed files with 18 additions and 7 deletions

View File

@ -7512,17 +7512,20 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
navigationController.pushViewController(self, animated: false) navigationController.pushViewController(self, animated: false)
let updatedLayout = self.validLayout let updatedLayout = self.validLayout
let updatedFrame = self.view.frame
if let initialLayout, let updatedLayout, transition.isAnimated { if let initialLayout, let updatedLayout, transition.isAnimated {
let initialView = self.view.superview let initialView = self.view.superview
let updatedFrame = self.view.convert(self.view.bounds, to: navigationController.view)
navigationController.view.addSubview(self.view) navigationController.view.addSubview(self.view)
self.view.clipsToBounds = true self.view.clipsToBounds = true
self.view.frame = initialFrame self.view.frame = initialFrame
self.containerLayoutUpdated(initialLayout, transition: .immediate) self.containerLayoutUpdated(initialLayout, transition: .immediate)
self.containerLayoutUpdated(updatedLayout, transition: transition) self.containerLayoutUpdated(updatedLayout, transition: transition)
self.chatDisplayNode.historyNode.layer.animateScaleX(from: initialLayout.size.width / updatedLayout.size.width, to: 1.0, duration: 0.4, timingFunction: kCAMediaTimingFunctionSpring)
self.chatDisplayNode.historyNode.layer.animatePosition(from: CGPoint(x: (updatedLayout.size.width - initialLayout.size.width) / 2.0, y: 0.0), to: .zero, duration: 0.4, timingFunction: kCAMediaTimingFunctionSpring, additive: true)
self.chatDisplayNode.inputPanelBackgroundNode.layer.removeAllAnimations()
self.chatDisplayNode.inputPanelBackgroundNode.layer.animatePosition(from: CGPoint(x: 0.0, y: self.chatDisplayNode.inputPanelNode?.frame.height ?? 45.0), to: .zero, duration: 0.4, timingFunction: kCAMediaTimingFunctionSpring, additive: true)
self.view.layer.animate(from: 14.0, to: updatedLayout.deviceMetrics.screenCornerRadius, keyPath: "cornerRadius", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.4) self.view.layer.animate(from: 14.0, to: updatedLayout.deviceMetrics.screenCornerRadius, keyPath: "cornerRadius", timingFunction: kCAMediaTimingFunctionSpring, duration: 0.4)
transition.updateFrame(view: self.view, frame: updatedFrame, completion: { _ in transition.updateFrame(view: self.view, frame: updatedFrame, completion: { _ in

View File

@ -190,7 +190,7 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate {
let inputPanelContainerNode: ChatInputPanelContainer let inputPanelContainerNode: ChatInputPanelContainer
private let inputPanelOverlayNode: SparseNode private let inputPanelOverlayNode: SparseNode
private let inputPanelClippingNode: SparseNode private let inputPanelClippingNode: SparseNode
private let inputPanelBackgroundNode: NavigationBackgroundNode let inputPanelBackgroundNode: NavigationBackgroundNode
private var navigationBarBackgroundContent: WallpaperBubbleBackgroundNode? private var navigationBarBackgroundContent: WallpaperBubbleBackgroundNode?
private var inputPanelBackgroundContent: WallpaperBubbleBackgroundNode? private var inputPanelBackgroundContent: WallpaperBubbleBackgroundNode?
@ -1880,9 +1880,9 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate {
displayMode = .aspectFit displayMode = .aspectFit
} else if case .compact = layout.metrics.widthClass { } else if case .compact = layout.metrics.widthClass {
if layout.size.width < layout.size.height && layout.size.height < layout.deviceMetrics.screenSize.height { if layout.size.width < layout.size.height && layout.size.height < layout.deviceMetrics.screenSize.height {
wallpaperBounds.size.height = layout.deviceMetrics.screenSize.height wallpaperBounds.size = layout.deviceMetrics.screenSize
} else if layout.size.width > layout.size.height && layout.size.height < layout.deviceMetrics.screenSize.width { } else if layout.size.width > layout.size.height && layout.size.height < layout.deviceMetrics.screenSize.width {
wallpaperBounds.size.height = layout.deviceMetrics.screenSize.width wallpaperBounds.size = layout.deviceMetrics.screenSize
} }
} }
self.backgroundNode.updateLayout(size: wallpaperBounds.size, displayMode: displayMode, transition: transition) self.backgroundNode.updateLayout(size: wallpaperBounds.size, displayMode: displayMode, transition: transition)
@ -2296,13 +2296,21 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate {
self.navigateButtons.update(rect: apparentNavigateButtonsFrame, within: layout.size, transition: transition) self.navigateButtons.update(rect: apparentNavigateButtonsFrame, within: layout.size, transition: transition)
if let titleAccessoryPanelNode = self.titleAccessoryPanelNode, let titleAccessoryPanelFrame, !titleAccessoryPanelNode.frame.equalTo(titleAccessoryPanelFrame) { if let titleAccessoryPanelNode = self.titleAccessoryPanelNode, let titleAccessoryPanelFrame, !titleAccessoryPanelNode.frame.equalTo(titleAccessoryPanelFrame) {
let previousFrame = titleAccessoryPanelNode.frame
titleAccessoryPanelNode.frame = titleAccessoryPanelFrame titleAccessoryPanelNode.frame = titleAccessoryPanelFrame
transition.animatePositionAdditive(node: titleAccessoryPanelNode, offset: CGPoint(x: 0.0, y: -titleAccessoryPanelFrame.height)) if transition.isAnimated && previousFrame.width != titleAccessoryPanelFrame.width {
} else {
transition.animatePositionAdditive(node: titleAccessoryPanelNode, offset: CGPoint(x: 0.0, y: -titleAccessoryPanelFrame.height))
}
} }
if let chatTranslationPanel = self.chatTranslationPanel, let translationPanelFrame, !chatTranslationPanel.frame.equalTo(translationPanelFrame) { if let chatTranslationPanel = self.chatTranslationPanel, let translationPanelFrame, !chatTranslationPanel.frame.equalTo(translationPanelFrame) {
let previousFrame = chatTranslationPanel.frame
chatTranslationPanel.frame = translationPanelFrame chatTranslationPanel.frame = translationPanelFrame
transition.animatePositionAdditive(node: chatTranslationPanel, offset: CGPoint(x: 0.0, y: -translationPanelFrame.height)) if transition.isAnimated && previousFrame.width != translationPanelFrame.width {
} else {
transition.animatePositionAdditive(node: chatTranslationPanel, offset: CGPoint(x: 0.0, y: -translationPanelFrame.height))
}
} }
if let chatImportStatusPanel = self.chatImportStatusPanel, let importStatusPanelFrame, !chatImportStatusPanel.frame.equalTo(importStatusPanelFrame) { if let chatImportStatusPanel = self.chatImportStatusPanel, let importStatusPanelFrame, !chatImportStatusPanel.frame.equalTo(importStatusPanelFrame) {