#if os(macOS) import AppKit import SwiftUI @MainActor final class MacChatWindow: NSObject, ObservableObject, NSWindowDelegate { @Published private(set) var isOpen = false let draft = ChatDraft() private var window: NSWindow? func open(call: Call) { if let window { window.makeKeyAndOrderFront(nil) return } let window = NSWindow( contentRect: NSRect(x: 0, y: 0, width: 380, height: 520), styleMask: [.titled, .closable, .miniaturizable, .resizable], backing: .buffered, defer: false) window.title = "Chat — \(call.title)" window.minSize = NSSize(width: 300, height: 300) window.isReleasedWhenClosed = false window.contentView = NSHostingView( rootView: ChatView(call: call, draft: draft) .padding(20).tint(CallsAppearance.accent)) window.delegate = self self.window = window isOpen = true window.center() window.makeKeyAndOrderFront(nil) } func close() { window?.close() } func windowWillClose(_ notification: Notification) { window = nil isOpen = false } } #endif