mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-17 03:40:18 +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 {
|
deinit {
|
||||||
self.context.sharedContext.hasPreloadBlockingContent.set(.single(false))
|
self.context.sharedContext.hasPreloadBlockingContent.set(.single(false))
|
||||||
|
self.focusedItemPromise.set(.single(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
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)
|
let targetController = component.context.sharedContext.makeMyStoriesController(context: component.context, isArchive: false)
|
||||||
|
|
||||||
var viewControllers = navigationController.viewControllers
|
if "".isEmpty {
|
||||||
if let index = viewControllers.firstIndex(where: { $0 === controller }) {
|
navigationController.pushViewController(targetController)
|
||||||
viewControllers.insert(targetController, at: index)
|
|
||||||
} else {
|
} 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) {
|
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 {
|
guard let controller, let navigationController else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var viewControllers = navigationController.viewControllers
|
if "".isEmpty {
|
||||||
if let index = viewControllers.firstIndex(where: { $0 === controller }) {
|
navigationController.pushViewController(chatController)
|
||||||
viewControllers.insert(chatController, at: index)
|
|
||||||
} else {
|
} 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 {
|
} 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 {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var viewControllers = navigationController.viewControllers
|
if "".isEmpty {
|
||||||
if let index = viewControllers.firstIndex(where: { $0 === controller }) {
|
navigationController.pushViewController(chatController)
|
||||||
viewControllers.insert(chatController, at: index)
|
|
||||||
} else {
|
} 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() {
|
private func openStoryEditing() {
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import ChatPresentationInterfaceState
|
|||||||
import AttachmentUI
|
import AttachmentUI
|
||||||
import ForumCreateTopicScreen
|
import ForumCreateTopicScreen
|
||||||
import LegacyInstantVideoController
|
import LegacyInstantVideoController
|
||||||
|
import StoryContainerScreen
|
||||||
|
|
||||||
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
|
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
|
||||||
if case let .peer(peer) = params.chatLocation, case let .channel(channel) = peer, channel.flags.contains(.isForum) {
|
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
|
let resolvedKeepStack: Bool
|
||||||
switch params.keepStack {
|
switch params.keepStack {
|
||||||
case .default:
|
case .default:
|
||||||
resolvedKeepStack = params.context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack
|
if params.navigationController.viewControllers.contains(where: { $0 is StoryContainerScreen }) {
|
||||||
case .always:
|
|
||||||
resolvedKeepStack = true
|
resolvedKeepStack = true
|
||||||
case .never:
|
} else {
|
||||||
resolvedKeepStack = false
|
resolvedKeepStack = params.context.sharedContext.immediateExperimentalUISettings.keepChatNavigationStack
|
||||||
|
}
|
||||||
|
case .always:
|
||||||
|
resolvedKeepStack = true
|
||||||
|
case .never:
|
||||||
|
resolvedKeepStack = false
|
||||||
}
|
}
|
||||||
if resolvedKeepStack {
|
if resolvedKeepStack {
|
||||||
if let pushController = params.pushController {
|
if let pushController = params.pushController {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user