mirror of https://github.com/oxen-io/session-ios
WIP: show media details full screen
parent
16db56572b
commit
1adfc9cfbe
@ -0,0 +1,37 @@
|
||||
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
||||
|
||||
import SwiftUI
|
||||
import UIKit
|
||||
import SessionUtilitiesKit
|
||||
|
||||
struct ViewControllerHolder {
|
||||
weak var value: UIViewController?
|
||||
}
|
||||
|
||||
struct ViewControllerKey: EnvironmentKey {
|
||||
static var defaultValue: ViewControllerHolder {
|
||||
return ViewControllerHolder(value: CurrentAppContext().mainWindow?.rootViewController)
|
||||
}
|
||||
}
|
||||
|
||||
extension EnvironmentValues {
|
||||
public var viewController: UIViewController? {
|
||||
get { return self[ViewControllerKey.self].value }
|
||||
set { self[ViewControllerKey.self].value = newValue }
|
||||
}
|
||||
}
|
||||
|
||||
extension UIViewController {
|
||||
public func present<Content: View>(style: UIModalPresentationStyle = .automatic, @ViewBuilder builder: () -> Content) {
|
||||
let toPresent = UIHostingController(rootView: AnyView(EmptyView()))
|
||||
toPresent.modalPresentationStyle = style
|
||||
toPresent.rootView = AnyView(
|
||||
builder()
|
||||
.environment(\.viewController, toPresent)
|
||||
)
|
||||
NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "dismissModal"), object: nil, queue: nil) { [weak toPresent] _ in
|
||||
toPresent?.dismiss(animated: true, completion: nil)
|
||||
}
|
||||
self.present(toPresent, animated: true, completion: nil)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue