diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift index b6765eeeb0..6374cbad5e 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryContainerScreen.swift @@ -1320,6 +1320,7 @@ public class StoryContainerScreen: ViewControllerComponentContainer { deinit { self.context.sharedContext.hasPreloadBlockingContent.set(.single(false)) + self.focusedItemPromise.set(.single(nil)) } override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift index 6082823f43..da303c0161 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift @@ -2973,13 +2973,17 @@ public final class StoryItemSetContainerComponent: Component { let targetController = component.context.sharedContext.makeMyStoriesController(context: component.context, isArchive: false) - var viewControllers = navigationController.viewControllers - if let index = viewControllers.firstIndex(where: { $0 === controller }) { - viewControllers.insert(targetController, at: index) + if "".isEmpty { + navigationController.pushViewController(targetController) } else { - viewControllers.append(targetController) + var viewControllers = navigationController.viewControllers + if let index = viewControllers.firstIndex(where: { $0 === controller }) { + viewControllers.insert(targetController, at: index) + } else { + viewControllers.append(targetController) + } + navigationController.setViewControllers(viewControllers, animated: true) } - navigationController.setViewControllers(viewControllers, animated: true) } func navigateToPeer(peer: EnginePeer, chat: Bool, messageId: EngineMessage.Id? = nil) { @@ -3001,29 +3005,35 @@ public final class StoryItemSetContainerComponent: Component { guard let controller, let navigationController else { return } - var viewControllers = navigationController.viewControllers - if let index = viewControllers.firstIndex(where: { $0 === controller }) { - viewControllers.insert(chatController, at: index) + if "".isEmpty { + navigationController.pushViewController(chatController) } else { - viewControllers.append(chatController) + var viewControllers = navigationController.viewControllers + if let index = viewControllers.firstIndex(where: { $0 === controller }) { + viewControllers.insert(chatController, at: index) + } else { + viewControllers.append(chatController) + } + navigationController.setViewControllers(viewControllers, animated: animated) } - navigationController.setViewControllers(viewControllers, animated: animated) })) } else { guard let chatController = component.context.sharedContext.makePeerInfoController(context: component.context, updatedPresentationData: nil, peer: peer._asPeer(), mode: .generic, avatarInitiallyExpanded: false, fromChat: false, requestsContext: nil) else { return } - var viewControllers = navigationController.viewControllers - if let index = viewControllers.firstIndex(where: { $0 === controller }) { - viewControllers.insert(chatController, at: index) + if "".isEmpty { + navigationController.pushViewController(chatController) } else { - viewControllers.append(chatController) + var viewControllers = navigationController.viewControllers + if let index = viewControllers.firstIndex(where: { $0 === controller }) { + viewControllers.insert(chatController, at: index) + } else { + viewControllers.append(chatController) + } + navigationController.setViewControllers(viewControllers, animated: true) } - navigationController.setViewControllers(viewControllers, animated: true) } - - controller.dismissWithoutTransitionOut() } private func openStoryEditing() { diff --git a/submodules/TelegramUI/Sources/NavigateToChatController.swift b/submodules/TelegramUI/Sources/NavigateToChatController.swift index 45887387ca..5eb4115e02 100644 --- a/submodules/TelegramUI/Sources/NavigateToChatController.swift +++ b/submodules/TelegramUI/Sources/NavigateToChatController.swift @@ -14,6 +14,7 @@ import ChatPresentationInterfaceState import AttachmentUI import ForumCreateTopicScreen import LegacyInstantVideoController +import StoryContainerScreen public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) { if case let .peer(peer) = params.chatLocation, case let .channel(channel) = peer, channel.flags.contains(.isForum) { @@ -149,12 +150,16 @@ public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParam } let resolvedKeepStack: Bool switch params.keepStack { - case .default: - resolvedKeepStack = params.context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack - case .always: + case .default: + if params.navigationController.viewControllers.contains(where: { $0 is StoryContainerScreen }) { resolvedKeepStack = true - case .never: - resolvedKeepStack = false + } else { + resolvedKeepStack = params.context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack + } + case .always: + resolvedKeepStack = true + case .never: + resolvedKeepStack = false } if resolvedKeepStack { if let pushController = params.pushController {