1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-13 13:50:32 +05:30
yattee/Shared/YatteeApp.swift

112 lines
4.2 KiB
Swift
Raw Normal View History

2021-09-25 13:48:22 +05:30
import Defaults
2021-06-10 02:21:23 +05:30
import SwiftUI
@main
2021-11-07 19:02:01 +05:30
struct YatteeApp: App {
2022-01-06 20:32:53 +05:30
static var version: String {
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "unknown"
}
static var build: String {
Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "unknown"
}
2021-10-24 14:46:04 +05:30
#if os(macOS)
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
2021-12-08 04:39:49 +05:30
@StateObject private var updater = UpdaterModel()
#elseif os(iOS)
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
2021-10-24 14:46:04 +05:30
#endif
@StateObject private var accounts = AccountsModel()
@StateObject private var comments = CommentsModel()
@StateObject private var instances = InstancesModel()
2021-11-09 04:44:28 +05:30
@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()
2021-11-09 04:44:28 +05:30
let persistenceController = PersistenceController.shared
2021-06-10 02:21:23 +05:30
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.environmentObject(accounts)
.environmentObject(comments)
.environmentObject(instances)
.environmentObject(navigation)
.environmentObject(player)
.environmentObject(playlists)
.environmentObject(recents)
.environmentObject(subscriptions)
.environmentObject(thumbnails)
2021-11-09 04:44:28 +05:30
.environmentObject(menu)
.environmentObject(search)
#if !os(macOS)
.onReceive(
NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)
) { _ in
player.handleEnterForeground()
}
#endif
2021-12-25 00:50:05 +05:30
#if os(iOS)
.handlesExternalEvents(preferring: Set(["*"]), allowing: Set(["*"]))
#endif
2021-06-10 02:21:23 +05:30
}
2021-12-25 00:50:05 +05:30
#if os(iOS)
.handlesExternalEvents(matching: Set(["*"]))
#endif
2021-07-28 04:10:04 +05:30
#if !os(tvOS)
2021-11-08 21:59:35 +05:30
.commands {
SidebarCommands()
2021-12-08 04:39:49 +05:30
2021-11-08 21:59:35 +05:30
CommandGroup(replacing: .newItem, addition: {})
2021-12-08 04:39:49 +05:30
#if os(macOS)
CommandGroup(after: .appInfo) {
CheckForUpdatesView()
.environmentObject(updater)
}
#endif
2021-11-09 04:44:28 +05:30
MenuCommands(model: Binding<MenuModel>(get: { menu }, set: { _ in }))
2021-11-08 21:59:35 +05:30
}
2021-07-28 04:10:04 +05:30
#endif
2021-09-25 13:48:22 +05:30
#if os(macOS)
WindowGroup(player.windowTitle) {
VideoPlayerView()
.onAppear { player.presentingPlayer = true }
.onDisappear { player.presentingPlayer = false }
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.environment(\.navigationStyle, .sidebar)
.environmentObject(accounts)
.environmentObject(comments)
.environmentObject(instances)
.environmentObject(navigation)
.environmentObject(player)
.environmentObject(playlists)
.environmentObject(recents)
.environmentObject(subscriptions)
.environmentObject(thumbnails)
2021-12-25 00:50:05 +05:30
.handlesExternalEvents(preferring: Set(["player", "*"]), allowing: Set(["player", "*"]))
}
2021-12-25 00:50:05 +05:30
.handlesExternalEvents(matching: Set(["player", "*"]))
2021-09-25 13:48:22 +05:30
Settings {
SettingsView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
2021-12-25 00:50:05 +05:30
.environmentObject(accounts)
.environmentObject(instances)
.environmentObject(player)
2021-12-08 04:39:49 +05:30
.environmentObject(updater)
2021-09-25 13:48:22 +05:30
}
#endif
}
2021-06-10 02:21:23 +05:30
}