mirror of
				https://github.com/yattee/yattee.git
				synced 2025-10-31 04:31:54 +00:00 
			
		
		
		
	 61a4951831
			
		
	
	61a4951831
	
	
	
		
			
			- player is now a separate window on macOS - add setting to disable pause when player is closed (fixes #40) - add PiP settings: * Close PiP when starting playing other video * Close PiP when player is opened * Close PiP and open player when application enters foreground (iOS/tvOS) (fixes #37) - new player placeholder when in PiP, context menu with exit option
		
			
				
	
	
		
			94 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
| import Defaults
 | |
| import SwiftUI
 | |
| 
 | |
| @main
 | |
| struct YatteeApp: App {
 | |
|     #if os(macOS)
 | |
|         @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
 | |
|         @StateObject private var updater = UpdaterModel()
 | |
|     #endif
 | |
| 
 | |
|     @StateObject private var accounts = AccountsModel()
 | |
|     @StateObject private var comments = CommentsModel()
 | |
|     @StateObject private var instances = InstancesModel()
 | |
|     @StateObject private var menu = MenuModel()
 | |
|     @StateObject private var navigation = NavigationModel()
 | |
|     @StateObject private var player = PlayerModel()
 | |
|     @StateObject private var playlists = PlaylistsModel()
 | |
|     @StateObject private var recents = RecentsModel()
 | |
|     @StateObject private var search = SearchModel()
 | |
|     @StateObject private var subscriptions = SubscriptionsModel()
 | |
|     @StateObject private var thumbnails = ThumbnailsModel()
 | |
| 
 | |
|     var body: some Scene {
 | |
|         WindowGroup {
 | |
|             ContentView()
 | |
|                 .environmentObject(accounts)
 | |
|                 .environmentObject(comments)
 | |
|                 .environmentObject(instances)
 | |
|                 .environmentObject(navigation)
 | |
|                 .environmentObject(player)
 | |
|                 .environmentObject(playlists)
 | |
|                 .environmentObject(recents)
 | |
|                 .environmentObject(subscriptions)
 | |
|                 .environmentObject(thumbnails)
 | |
|                 .environmentObject(menu)
 | |
|                 .environmentObject(search)
 | |
|             #if !os(macOS)
 | |
|                 .onReceive(
 | |
|                     NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)
 | |
|                 ) { _ in
 | |
|                     player.handleEnterForeground()
 | |
|                 }
 | |
|             #endif
 | |
|             #if !os(tvOS)
 | |
|             .handlesExternalEvents(preferring: Set(["watch"]), allowing: Set(["watch"]))
 | |
|             #endif
 | |
|         }
 | |
|         #if !os(tvOS)
 | |
|         .handlesExternalEvents(matching: Set(arrayLiteral: "watch"))
 | |
|         .commands {
 | |
|             SidebarCommands()
 | |
| 
 | |
|             CommandGroup(replacing: .newItem, addition: {})
 | |
| 
 | |
|             #if os(macOS)
 | |
|                 CommandGroup(after: .appInfo) {
 | |
|                     CheckForUpdatesView()
 | |
|                         .environmentObject(updater)
 | |
|                 }
 | |
|             #endif
 | |
| 
 | |
|             MenuCommands(model: Binding<MenuModel>(get: { menu }, set: { _ in }))
 | |
|         }
 | |
|         #endif
 | |
| 
 | |
|         #if os(macOS)
 | |
|             WindowGroup(player.windowTitle) {
 | |
|                 VideoPlayerView()
 | |
|                     .onAppear { player.presentingPlayer = true }
 | |
|                     .onDisappear { player.presentingPlayer = false }
 | |
|                     .environment(\.navigationStyle, .sidebar)
 | |
|                     .environmentObject(accounts)
 | |
|                     .environmentObject(comments)
 | |
|                     .environmentObject(instances)
 | |
|                     .environmentObject(navigation)
 | |
|                     .environmentObject(player)
 | |
|                     .environmentObject(playlists)
 | |
|                     .environmentObject(recents)
 | |
|                     .environmentObject(subscriptions)
 | |
|                     .environmentObject(thumbnails)
 | |
|                     .handlesExternalEvents(preferring: Set(["player"]), allowing: Set(["player"]))
 | |
|             }
 | |
|             .handlesExternalEvents(matching: Set(["player"]))
 | |
| 
 | |
|             Settings {
 | |
|                 SettingsView()
 | |
|                     .environmentObject(AccountsModel())
 | |
|                     .environmentObject(InstancesModel())
 | |
|                     .environmentObject(updater)
 | |
|             }
 | |
|         #endif
 | |
|     }
 | |
| }
 |