Various fixes

This commit is contained in:
Ilya Laktyushin 2025-04-15 00:22:05 +04:00
parent 75d6745372
commit 62e53f8960
4 changed files with 30 additions and 11 deletions

View File

@ -1523,6 +1523,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
if let self, let contextController {
if animateIn {
contextController.statusBar.statusBarStyle = .Ignore
contextController.animateDismissalIfNeeded()
self.present(contextController, in: .window(.root))
return {
contextController.dismissNow()

View File

@ -1365,6 +1365,16 @@ final class ContextControllerNode: ViewControllerTracingNode, ASScrollViewDelega
}
}
func animateDismissalIfNeeded() {
guard let layout = self.validLayout, layout.metrics.isTablet else {
return
}
if let sourceContainer = self.sourceContainer {
sourceContainer.animateOut(result: .dismissWithoutContent, completion: {})
return
}
}
func getActionsMinHeight() -> ContextController.ActionsHeight? {
if !self.actionsContainerNode.bounds.height.isZero {
return ContextController.ActionsHeight(
@ -2784,6 +2794,10 @@ public final class ContextController: ViewController, StandalonePresentableContr
}
}
public func animateDismissalIfNeeded() {
self.controllerNode.animateDismissalIfNeeded()
}
public func cancelReactionAnimation() {
self.controllerNode.cancelReactionAnimation()
}

View File

@ -289,13 +289,6 @@ public final class ChatUserInfoItemNode: ListViewItemNode, ASGestureRecognizerDe
backgroundSize.height += verticalInset
let constrainedWidth = params.width - (horizontalInset + horizontalContentInset) * 2.0
let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.peer.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder) + item.peer.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder) + item.peer.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder), font: Font.semibold(15.0), textColor: primaryTextColor), backgroundColor: nil, maximumNumberOfLines: 2, truncationType: .end, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
backgroundSize.height += titleLayout.size.height
backgroundSize.height += verticalSpacing
let (subtitleLayout, subtitleApply) = makeSubtitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.presentationData.strings.Chat_NonContactUser_Subtitle, font: Font.regular(13.0), textColor: subtitleColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
backgroundSize.height += subtitleLayout.size.height
backgroundSize.height += verticalSpacing + paragraphSpacing
let infoConstrainedSize = CGSize(width: floor(constrainedWidth * 0.7), height: CGFloat.greatestFiniteMagnitude)
@ -389,7 +382,16 @@ public final class ChatUserInfoItemNode: ListViewItemNode, ASGestureRecognizerDe
groupsValueLayoutAndApply = nil
}
backgroundSize.width = horizontalContentInset * 2.0 + max(titleLayout.size.width, maxTitleWidth + attributeSpacing + maxValueWidth)
let titleConstrainedWidth = maxTitleWidth + attributeSpacing + maxValueWidth
let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.peer.displayTitle(strings: item.presentationData.strings, displayOrder: item.presentationData.nameDisplayOrder), font: Font.semibold(15.0), textColor: primaryTextColor), backgroundColor: nil, maximumNumberOfLines: 3, truncationType: .end, constrainedSize: CGSize(width: titleConstrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .center, cutout: nil, insets: UIEdgeInsets()))
backgroundSize.height += titleLayout.size.height
backgroundSize.height += verticalSpacing
let (subtitleLayout, subtitleApply) = makeSubtitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.presentationData.strings.Chat_NonContactUser_Subtitle, font: Font.regular(13.0), textColor: subtitleColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: titleConstrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets()))
backgroundSize.height += subtitleLayout.size.height
backgroundSize.height += verticalSpacing + paragraphSpacing
backgroundSize.width = horizontalContentInset * 2.0 + maxTitleWidth + attributeSpacing + maxValueWidth
let disclaimerText: NSMutableAttributedString
if let verification = item.verification {

View File

@ -7522,8 +7522,10 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
self.view.frame = initialFrame
self.containerLayoutUpdated(initialLayout, transition: .immediate)
self.containerLayoutUpdated(updatedLayout, transition: transition)
if !updatedLayout.metrics.isTablet {
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)