FreeAPSApp.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import SwiftUI
  2. import Swinject
  3. @main struct FreeAPSApp: App {
  4. @Environment(\.scenePhase) var scenePhase
  5. @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
  6. // Dependencies Assembler
  7. // contain all dependencies Assemblies
  8. // TODO: Remove static key after update "Use Dependencies" logic
  9. private static var assembler = Assembler([
  10. StorageAssembly(),
  11. ServiceAssembly(),
  12. APSAssembly(),
  13. NetworkAssembly(),
  14. UIAssembly(),
  15. SecurityAssembly()
  16. ], parent: nil, defaultObjectScope: .container)
  17. var resolver: Resolver {
  18. FreeAPSApp.assembler.resolver
  19. }
  20. // Temp static var
  21. // Use to backward compatibility with old Dependencies logic on Logger
  22. // TODO: Remove var after update "Use Dependencies" logic in Logger
  23. static var resolver: Resolver {
  24. FreeAPSApp.assembler.resolver
  25. }
  26. private func loadServices() {
  27. resolver.resolve(AppearanceManager.self)!.setupGlobalAppearance()
  28. _ = resolver.resolve(DeviceDataManager.self)!
  29. _ = resolver.resolve(APSManager.self)!
  30. _ = resolver.resolve(FetchGlucoseManager.self)!
  31. _ = resolver.resolve(FetchTreatmentsManager.self)!
  32. _ = resolver.resolve(FetchAnnouncementsManager.self)!
  33. _ = resolver.resolve(CalendarManager.self)!
  34. _ = resolver.resolve(UserNotificationsManager.self)!
  35. _ = resolver.resolve(WatchManager.self)!
  36. _ = resolver.resolve(HealthKitManager.self)!
  37. _ = resolver.resolve(BluetoothStateManager.self)!
  38. }
  39. init() {
  40. debug(
  41. .default,
  42. "FreeAPS X Started: v\(Bundle.main.releaseVersionNumber ?? "")(\(Bundle.main.buildVersionNumber ?? "")) [buildDate: \(Bundle.main.buildDate)]"
  43. )
  44. loadServices()
  45. }
  46. var body: some Scene {
  47. WindowGroup {
  48. Main.RootView(resolver: resolver)
  49. }
  50. .onChange(of: scenePhase) { newScenePhase in
  51. debug(.default, "APPLICATION PHASE: \(newScenePhase)")
  52. }
  53. }
  54. }