diff --git a/submodules/ChatListUI/Sources/ChatListController.swift b/submodules/ChatListUI/Sources/ChatListController.swift index d78b5e341e..0a7bd78635 100644 --- a/submodules/ChatListUI/Sources/ChatListController.swift +++ b/submodules/ChatListUI/Sources/ChatListController.swift @@ -1933,8 +1933,13 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController backTitle = self.presentationData.strings.Common_Close } } + var navigationBackTitle: String? + if case .chatList(.archive) = self.location { + navigationBackTitle = self.presentationData.strings.Common_Back + } primaryContent = ChatListHeaderComponent.Content( title: self.plainTitle, + navigationBackTitle: navigationBackTitle, titleComponent: primaryContext.chatTitleComponent.flatMap { AnyComponent($0) }, chatListTitle: primaryContext.chatListTitle, leftButton: primaryContext.leftButton, @@ -1952,6 +1957,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController if let secondaryContext = self.secondaryContext { secondaryContent = ChatListHeaderComponent.Content( title: self.plainTitle, + navigationBackTitle: nil, titleComponent: secondaryContext.chatTitleComponent.flatMap { AnyComponent($0) }, chatListTitle: secondaryContext.chatListTitle, leftButton: secondaryContext.leftButton, diff --git a/submodules/ChatListUI/Sources/ChatListControllerNode.swift b/submodules/ChatListUI/Sources/ChatListControllerNode.swift index 8eed927a5d..8c204d2569 100644 --- a/submodules/ChatListUI/Sources/ChatListControllerNode.swift +++ b/submodules/ChatListUI/Sources/ChatListControllerNode.swift @@ -313,7 +313,7 @@ private final class ChatListContainerItemNode: ASDisplayNode { private var shimmerNodeOffset: CGFloat = 0.0 let listNode: ChatListNode - private var validLayout: (CGSize, UIEdgeInsets, CGFloat, CGFloat, ChatListControllerLocation?, CGFloat)? + private(set) var validLayout: (size: CGSize, insets: UIEdgeInsets, visualNavigationHeight: CGFloat, originalNavigationHeight: CGFloat, inlineNavigationLocation: ChatListControllerLocation?, inlineNavigationTransitionFraction: CGFloat)? init(context: AccountContext, location: ChatListControllerLocation, filter: ChatListFilter?, previewing: Bool, isInlineMode: Bool, controlsHistoryPreload: Bool, presentationData: PresentationData, animationCache: AnimationCache, animationRenderer: MultiAnimationRenderer, becameEmpty: @escaping (ChatListFilter?) -> Void, emptyAction: @escaping (ChatListFilter?) -> Void, secondaryEmptyAction: @escaping () -> Void) { self.context = context @@ -1129,7 +1129,14 @@ final class ChatListContainerNode: ASDisplayNode, UIGestureRecognizerDelegate { nodeTransition.updateFrame(node: itemNode, frame: itemFrame, completion: { _ in }) - itemNode.updateLayout(size: layout.size, insets: insets, visualNavigationHeight: visualNavigationHeight, originalNavigationHeight: originalNavigationHeight, inlineNavigationLocation: inlineNavigationLocation, inlineNavigationTransitionFraction: inlineNavigationTransitionFraction, transition: nodeTransition) + var itemInlineNavigationTransitionFraction = inlineNavigationTransitionFraction + if indexDistance != 0 { + if itemInlineNavigationTransitionFraction != 0.0 || itemInlineNavigationTransitionFraction != 1.0 { + itemInlineNavigationTransitionFraction = itemNode.validLayout?.inlineNavigationTransitionFraction ?? 0.0 + } + } + + itemNode.updateLayout(size: layout.size, insets: insets, visualNavigationHeight: visualNavigationHeight, originalNavigationHeight: originalNavigationHeight, inlineNavigationLocation: inlineNavigationLocation, inlineNavigationTransitionFraction: itemInlineNavigationTransitionFraction, transition: nodeTransition) if wasAdded, case .animated = transition { animateSlidingIds.append(id) diff --git a/submodules/TelegramUI/Components/ChatListHeaderComponent/Sources/ChatListHeaderComponent.swift b/submodules/TelegramUI/Components/ChatListHeaderComponent/Sources/ChatListHeaderComponent.swift index 7a955b7d3d..8cb273a622 100644 --- a/submodules/TelegramUI/Components/ChatListHeaderComponent/Sources/ChatListHeaderComponent.swift +++ b/submodules/TelegramUI/Components/ChatListHeaderComponent/Sources/ChatListHeaderComponent.swift @@ -71,6 +71,7 @@ public final class HeaderNetworkStatusComponent: Component { public final class ChatListHeaderComponent: Component { public final class Content: Equatable { public let title: String + public let navigationBackTitle: String? public let titleComponent: AnyComponent? public let chatListTitle: NetworkStatusTitle? public let leftButton: AnyComponentWithIdentity? @@ -80,6 +81,7 @@ public final class ChatListHeaderComponent: Component { public init( title: String, + navigationBackTitle: String?, titleComponent: AnyComponent?, chatListTitle: NetworkStatusTitle?, leftButton: AnyComponentWithIdentity?, @@ -88,6 +90,7 @@ public final class ChatListHeaderComponent: Component { backPressed: (() -> Void)? ) { self.title = title + self.navigationBackTitle = navigationBackTitle self.titleComponent = titleComponent self.chatListTitle = chatListTitle self.leftButton = leftButton @@ -100,6 +103,9 @@ public final class ChatListHeaderComponent: Component { if lhs.title != rhs.title { return false } + if lhs.navigationBackTitle != rhs.navigationBackTitle { + return false + } if lhs.titleComponent != rhs.titleComponent { return false } @@ -339,7 +345,7 @@ public final class ChatListHeaderComponent: Component { let totalOffset = titleFrame.minX - backButtonTitleFrame.minX transition.setBounds(view: self.titleOffsetContainer, bounds: CGRect(origin: CGPoint(x: totalOffset * fraction, y: 0.0), size: self.titleOffsetContainer.bounds.size)) - transition.setAlpha(view: self.titleOffsetContainer, alpha: (1.0 - fraction)) + transition.setAlpha(view: self.titleOffsetContainer, alpha: pow(1.0 - fraction, 2.0)) } } @@ -359,7 +365,7 @@ public final class ChatListHeaderComponent: Component { let totalOffset = previousTitleFrame.minX - backButtonTitleFrame.minX transition.setBounds(view: backButtonView.titleOffsetContainer, bounds: CGRect(origin: CGPoint(x: -totalOffset * (1.0 - fraction), y: 0.0), size: backButtonView.titleOffsetContainer.bounds.size)) - transition.setAlpha(view: backButtonView.titleOffsetContainer, alpha: fraction) + transition.setAlpha(view: backButtonView.titleOffsetContainer, alpha: pow(fraction, 2.0)) } } } @@ -664,7 +670,7 @@ public final class ChatListHeaderComponent: Component { self.secondaryContentView = secondaryContentView self.addSubview(secondaryContentView) } - secondaryContentView.update(context: component.context, theme: component.theme, strings: component.strings, content: secondaryContent, backTitle: component.primaryContent?.title, sideInset: component.sideInset, size: availableSize, transition: secondaryContentTransition) + secondaryContentView.update(context: component.context, theme: component.theme, strings: component.strings, content: secondaryContent, backTitle: component.primaryContent?.navigationBackTitle ?? component.primaryContent?.title, sideInset: component.sideInset, size: availableSize, transition: secondaryContentTransition) secondaryContentTransition.setFrame(view: secondaryContentView, frame: CGRect(origin: CGPoint(), size: availableSize)) if let primaryContentView = self.primaryContentView {