FreeAPSApp.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import SwiftUI
  2. import Swinject
  3. private let dependencies: [DependeciesContainer.Type] = [
  4. StorageContainer.self,
  5. ServiceContainer.self,
  6. APSContainer.self,
  7. UIContainer.self,
  8. NetworkContainer.self,
  9. SecurityContainer.self
  10. ]
  11. private extension Swinject.Resolver {
  12. func setup() {
  13. for dep in dependencies {
  14. dep.setup()
  15. }
  16. }
  17. }
  18. @main struct FreeAPSApp: App {
  19. @Environment(\.scenePhase) var scenePhase
  20. static let resolver = Container(defaultObjectScope: .container) { container in
  21. for dep in dependencies {
  22. dep.register(container: container)
  23. }
  24. }.synchronize()
  25. private static func loadServices() {
  26. resolver.resolve(AppearanceManager.self)!.setupGlobalAppearance()
  27. _ = resolver.resolve(DeviceDataManager.self)!
  28. _ = resolver.resolve(APSManager.self)!
  29. _ = resolver.resolve(FetchGlucoseManager.self)!
  30. _ = resolver.resolve(FetchTreatmentsManager.self)!
  31. _ = resolver.resolve(FetchAnnouncementsManager.self)!
  32. }
  33. init() {
  34. FreeAPSApp.resolver.setup()
  35. FreeAPSApp.loadServices()
  36. }
  37. var body: some Scene {
  38. WindowGroup {
  39. Main.Builder(resolver: FreeAPSApp.resolver).buildView()
  40. }
  41. .onChange(of: scenePhase) { newScenePhase in
  42. switch newScenePhase {
  43. case .active:
  44. debug(.default, "APPLICATION is active")
  45. case .inactive:
  46. debug(.default, "APPLICATION is inactive")
  47. case .background:
  48. debug(.default, "APPLICATION is in background")
  49. @unknown default:
  50. debug(.default, "APPLICATION: Received an unexpected scenePhase.")
  51. }
  52. }
  53. }
  54. }