Screen.swift 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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
  17. case addTempTarget
  18. case bolus(waitForDuggestion: Bool)
  19. case manualTempBasal
  20. case autotuneConfig
  21. case dataTable
  22. case cgm
  23. var id: Int { String(reflecting: self).hashValue }
  24. }
  25. extension Screen {
  26. func view(resolver: Resolver) -> AnyView {
  27. switch self {
  28. case .loading:
  29. return ProgressView().asAny()
  30. case .home:
  31. return Home.Builder(resolver: resolver).buildView()
  32. case .settings:
  33. return Settings.Builder(resolver: resolver).buildView()
  34. case let .configEditor(file):
  35. return ConfigEditor.Builder(resolver: resolver, file: file).buildView()
  36. case .nighscoutConfig:
  37. return NightscoutConfig.Builder(resolver: resolver).buildView()
  38. case .pumpConfig:
  39. return PumpConfig.Builder(resolver: resolver).buildView()
  40. case .pumpSettingsEditor:
  41. return PumpSettingsEditor.Builder(resolver: resolver).buildView()
  42. case .basalProfileEditor:
  43. return BasalProfileEditor.Builder(resolver: resolver).buildView()
  44. case .isfEditor:
  45. return ISFEditor.Builder(resolver: resolver).buildView()
  46. case .crEditor:
  47. return CREditor.Builder(resolver: resolver).buildView()
  48. case .targetsEditor:
  49. return TargetsEditor.Builder(resolver: resolver).buildView()
  50. case .preferencesEditor:
  51. return PreferencesEditor.Builder(resolver: resolver).buildView()
  52. case .addCarbs:
  53. return AddCarbs.Builder(resolver: resolver).buildView()
  54. case .addTempTarget:
  55. return AddTempTarget.Builder(resolver: resolver).buildView()
  56. case let .bolus(waitForSuggestion):
  57. return Bolus.Builder(resolver: resolver, waitForSuggestion: waitForSuggestion).buildView()
  58. case .manualTempBasal:
  59. return ManualTempBasal.Builder(resolver: resolver).buildView()
  60. case .autotuneConfig:
  61. return AutotuneConfig.Builder(resolver: resolver).buildView()
  62. case .dataTable:
  63. return DataTable.Builder(resolver: resolver).buildView()
  64. case .cgm:
  65. return CGM.Builder(resolver: resolver).buildView()
  66. }
  67. }
  68. func modal(resolver: Resolver) -> Main.Modal {
  69. .init(screen: self, view: view(resolver: resolver))
  70. }
  71. }