Screen.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import SwiftUI
  2. import Swinject
  3. enum Screen: Identifiable, Hashable {
  4. case loading
  5. case home
  6. case settings
  7. case configEditor(file: String)
  8. case nighscoutConfig
  9. case nighscoutConfigDirect
  10. case pumpConfig
  11. case pumpConfigDirect
  12. case pumpSettingsEditor
  13. case basalProfileEditor
  14. case isfEditor
  15. case crEditor
  16. case targetsEditor
  17. case preferencesEditor
  18. case addCarbs
  19. case addTempTarget
  20. case bolus(waitForSuggestion: Bool)
  21. case manualTempBasal
  22. case autotuneConfig
  23. case dataTable
  24. case cgm
  25. case cgmDirect
  26. case healthkit
  27. case notificationsConfig
  28. case fpuConfig
  29. case iconConfig
  30. case overrideProfilesConfig
  31. case snooze
  32. case statistics
  33. case watch
  34. case statisticsConfig
  35. case calibrations
  36. var id: Int { String(reflecting: self).hashValue }
  37. }
  38. extension Screen {
  39. @ViewBuilder func view(resolver: Resolver) -> some View {
  40. switch self {
  41. case .loading:
  42. ProgressView()
  43. case .home:
  44. Home.RootView(resolver: resolver)
  45. case .settings:
  46. Settings.RootView(resolver: resolver)
  47. case let .configEditor(file):
  48. ConfigEditor.RootView(resolver: resolver, file: file)
  49. case .nighscoutConfig:
  50. NightscoutConfig.RootView(resolver: resolver, displayClose: false)
  51. case .nighscoutConfigDirect:
  52. NightscoutConfig.RootView(resolver: resolver, displayClose: true)
  53. case .pumpConfig:
  54. PumpConfig.RootView(resolver: resolver, displayClose: false)
  55. case .pumpConfigDirect:
  56. PumpConfig.RootView(resolver: resolver, displayClose: true)
  57. case .pumpSettingsEditor:
  58. PumpSettingsEditor.RootView(resolver: resolver)
  59. case .basalProfileEditor:
  60. BasalProfileEditor.RootView(resolver: resolver)
  61. case .isfEditor:
  62. ISFEditor.RootView(resolver: resolver)
  63. case .crEditor:
  64. CREditor.RootView(resolver: resolver)
  65. case .targetsEditor:
  66. TargetsEditor.RootView(resolver: resolver)
  67. case .preferencesEditor:
  68. PreferencesEditor.RootView(resolver: resolver)
  69. case .addCarbs:
  70. AddCarbs.RootView(resolver: resolver)
  71. case .addTempTarget:
  72. AddTempTarget.RootView(resolver: resolver)
  73. case let .bolus(waitForSuggestion):
  74. Bolus.RootView(resolver: resolver, waitForSuggestion: waitForSuggestion)
  75. case .manualTempBasal:
  76. ManualTempBasal.RootView(resolver: resolver)
  77. case .autotuneConfig:
  78. AutotuneConfig.RootView(resolver: resolver)
  79. case .dataTable:
  80. DataTable.RootView(resolver: resolver)
  81. case .cgm:
  82. CGM.RootView(resolver: resolver, displayClose: false)
  83. case .cgmDirect:
  84. CGM.RootView(resolver: resolver, displayClose: true)
  85. case .healthkit:
  86. AppleHealthKit.RootView(resolver: resolver)
  87. case .notificationsConfig:
  88. NotificationsConfig.RootView(resolver: resolver)
  89. case .fpuConfig:
  90. FPUConfig.RootView(resolver: resolver)
  91. case .iconConfig:
  92. IconConfig.RootView(resolver: resolver)
  93. case .overrideProfilesConfig:
  94. OverrideProfilesConfig.RootView(resolver: resolver)
  95. case .snooze:
  96. Snooze.RootView(resolver: resolver)
  97. case .watch:
  98. WatchConfig.RootView(resolver: resolver)
  99. case .statistics:
  100. Stat.RootView(resolver: resolver)
  101. case .statisticsConfig:
  102. StatConfig.RootView(resolver: resolver)
  103. case .calibrations:
  104. Calibrations.RootView(resolver: resolver)
  105. }
  106. }
  107. func modal(resolver: Resolver) -> Main.Modal {
  108. .init(screen: self, view: view(resolver: resolver).asAny())
  109. }
  110. }