From 8dd98a01f9ad5c8295db5b471ca095d3fb7f1b4c Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Fri, 7 Mar 2025 21:53:00 +0100 Subject: [PATCH] Fix return to stream --- .../Sources/SharedAccountContext.swift | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/submodules/TelegramUI/Sources/SharedAccountContext.swift b/submodules/TelegramUI/Sources/SharedAccountContext.swift index 753e8f3c60..e8b79259a2 100644 --- a/submodules/TelegramUI/Sources/SharedAccountContext.swift +++ b/submodules/TelegramUI/Sources/SharedAccountContext.swift @@ -971,6 +971,11 @@ public final class SharedAccountContextImpl: SharedAccountContext { if groupCallController.view.superview == nil { (mainWindow.viewController as? NavigationController)?.pushViewController(groupCallController) } + } else if let streamController = self.streamController { + mainWindow.hostView.containerView.endEditing(true) + if streamController.view.superview == nil { + (mainWindow.viewController as? NavigationController)?.pushViewController(streamController) + } } } } else { @@ -1357,8 +1362,23 @@ public final class SharedAccountContextImpl: SharedAccountContext { let streamController = MediaStreamComponentController(call: group) streamController.navigationPresentation = .flatModal streamController.parentNavigationController = navigationController + + let thisCallIsOnScreenPromise = ValuePromise(false, ignoreRepeated: true) + streamController.onViewDidAppear = { + thisCallIsOnScreenPromise.set(true) + } + streamController.onViewDidDisappear = { + thisCallIsOnScreenPromise.set(false) + } + self.streamController = streamController + self.mainWindow?.hostView.containerView.endEditing(true) + + thisCallIsOnScreenPromise.set(true) + self.hasGroupCallOnScreenPromise.set(thisCallIsOnScreenPromise.get()) + beginDisplayingCallStatusBar.set(.single(Void())) + navigationController.pushViewController(streamController) } } @@ -1786,6 +1806,11 @@ public final class SharedAccountContextImpl: SharedAccountContext { mainWindow.hostView.containerView.endEditing(true) (mainWindow.viewController as? NavigationController)?.pushViewController(groupCallController) } + } else if let streamController = self.streamController { + if streamController.isNodeLoaded && streamController.view.superview == nil { + mainWindow.hostView.containerView.endEditing(true) + (mainWindow.viewController as? NavigationController)?.pushViewController(streamController) + } } }