FreeAPSApp.swift 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. private let mainView = Main.Builder(resolver: FreeAPSApp.resolver).buildView()
  38. var body: some Scene {
  39. WindowGroup {
  40. mainView
  41. }
  42. .onChange(of: scenePhase) { newScenePhase in
  43. switch newScenePhase {
  44. case .active:
  45. debug(.default, "APPLICATION is active")
  46. case .inactive:
  47. debug(.default, "APPLICATION is inactive")
  48. case .background:
  49. debug(.default, "APPLICATION is in background")
  50. @unknown default:
  51. debug(.default, "APPLICATION: Received an unexpected scenePhase.")
  52. }
  53. }
  54. }
  55. }