mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 03:09:56 +00:00
Chat navigation from story screen
This commit is contained in:
parent
9c2d44a24c
commit
9ed09e2f1a
@ -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) {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user