Screen.swift 3.7 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 pumpConfig
  10. case pumpSettingsEditor
  11. case basalProfileEditor
  12. case isfEditor
  13. case crEditor
  14. case targetsEditor
  15. case preferencesEditor
  16. case addCarbs(editMode: Bool)
  17. case addTempTarget
  18. case bolus(waitForSuggestion: Bool, fetch: Bool)
  19. case manualTempBasal
  20. case autotuneConfig
  21. case dataTable
  22. case cgm
  23. case healthkit
  24. case libreConfig
  25. case calibrations
  26. case notificationsConfig
  27. case fpuConfig
  28. case iconConfig
  29. case overrideProfilesConfig
  30. case snooze
  31. case statistics
  32. case watch
  33. case statisticsConfig
  34. case bolusCalculatorConfig
  35. case dynamicISF
  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)
  51. case .pumpConfig:
  52. PumpConfig.RootView(resolver: resolver)
  53. case .pumpSettingsEditor:
  54. PumpSettingsEditor.RootView(resolver: resolver)
  55. case .basalProfileEditor:
  56. BasalProfileEditor.RootView(resolver: resolver)
  57. case .isfEditor:
  58. ISFEditor.RootView(resolver: resolver)
  59. case .crEditor:
  60. CREditor.RootView(resolver: resolver)
  61. case .targetsEditor:
  62. TargetsEditor.RootView(resolver: resolver)
  63. case .preferencesEditor:
  64. PreferencesEditor.RootView(resolver: resolver)
  65. case let .addCarbs(editMode):
  66. AddCarbs.RootView(resolver: resolver, editMode: editMode)
  67. case .addTempTarget:
  68. AddTempTarget.RootView(resolver: resolver)
  69. case let .bolus(waitForSuggestion, fetch):
  70. Bolus.RootView(resolver: resolver, waitForSuggestion: waitForSuggestion, fetch: fetch)
  71. case .manualTempBasal:
  72. ManualTempBasal.RootView(resolver: resolver)
  73. case .autotuneConfig:
  74. AutotuneConfig.RootView(resolver: resolver)
  75. case .dataTable:
  76. DataTable.RootView(resolver: resolver)
  77. case .cgm:
  78. CGM.RootView(resolver: resolver)
  79. case .healthkit:
  80. AppleHealthKit.RootView(resolver: resolver)
  81. case .libreConfig:
  82. LibreConfig.RootView(resolver: resolver)
  83. case .calibrations:
  84. Calibrations.RootView(resolver: resolver)
  85. case .notificationsConfig:
  86. NotificationsConfig.RootView(resolver: resolver)
  87. case .fpuConfig:
  88. FPUConfig.RootView(resolver: resolver)
  89. case .iconConfig:
  90. IconConfig.RootView(resolver: resolver)
  91. case .overrideProfilesConfig:
  92. OverrideProfilesConfig.RootView(resolver: resolver)
  93. case .snooze:
  94. Snooze.RootView(resolver: resolver)
  95. case .watch:
  96. WatchConfig.RootView(resolver: resolver)
  97. case .statistics:
  98. Stat.RootView(resolver: resolver)
  99. case .statisticsConfig:
  100. StatConfig.RootView(resolver: resolver)
  101. case .bolusCalculatorConfig:
  102. BolusCalculatorConfig.RootView(resolver: resolver)
  103. case .dynamicISF:
  104. Dynamic.RootView(resolver: resolver)
  105. }
  106. }
  107. func modal(resolver: Resolver) -> Main.Modal {
  108. .init(screen: self, view: view(resolver: resolver).asAny())
  109. }
  110. }