FreeAPSApp.swift 2.1 KB

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