| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import SwiftUI
- import Swinject
- @main struct FreeAPSApp: App {
- @Environment(\.scenePhase) var scenePhase
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
- // Dependencies Assembler
- // contain all dependencies Assemblies
- // TODO: Remove static key after update "Use Dependencies" logic
- private static var assembler = Assembler([
- StorageAssembly(),
- ServiceAssembly(),
- APSAssembly(),
- NetworkAssembly(),
- UIAssembly(),
- SecurityAssembly()
- ], parent: nil, defaultObjectScope: .container)
- var resolver: Resolver {
- FreeAPSApp.assembler.resolver
- }
- // Temp static var
- // Use to backward compatibility with old Dependencies logic on Logger
- // TODO: Remove var after update "Use Dependencies" logic in Logger
- static var resolver: Resolver {
- FreeAPSApp.assembler.resolver
- }
- private func loadServices() {
- resolver.resolve(AppearanceManager.self)!.setupGlobalAppearance()
- _ = resolver.resolve(DeviceDataManager.self)!
- _ = resolver.resolve(APSManager.self)!
- _ = resolver.resolve(FetchGlucoseManager.self)!
- _ = resolver.resolve(FetchTreatmentsManager.self)!
- _ = resolver.resolve(FetchAnnouncementsManager.self)!
- _ = resolver.resolve(CalendarManager.self)!
- _ = resolver.resolve(UserNotificationsManager.self)!
- _ = resolver.resolve(WatchManager.self)!
- _ = resolver.resolve(HealthKitManager.self)!
- _ = resolver.resolve(BluetoothStateManager.self)!
- }
- init() {
- debug(
- .default,
- "FreeAPS X Started: v\(Bundle.main.releaseVersionNumber ?? "")(\(Bundle.main.buildVersionNumber ?? "")) [buildDate: \(Bundle.main.buildDate)]"
- )
- loadServices()
- }
- var body: some Scene {
- WindowGroup {
- Main.RootView(resolver: resolver)
- }
- .onChange(of: scenePhase) { newScenePhase in
- debug(.default, "APPLICATION PHASE: \(newScenePhase)")
- }
- }
- }
- extension Bundle {
- var releaseVersionNumber: String? {
- infoDictionary?["CFBundleShortVersionString"] as? String
- }
- var buildVersionNumber: String? {
- infoDictionary?["CFBundleVersion"] as? String
- }
- var buildDate: Date {
- if let infoPath = Bundle.main.path(forResource: "Info", ofType: "plist"),
- let infoAttr = try? FileManager.default.attributesOfItem(atPath: infoPath),
- let infoDate = infoAttr[.modificationDate] as? Date
- {
- return infoDate
- }
- return Date()
- }
- }
|