Screen.swift 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import SwiftUI
  2. import Swinject
  3. enum Screen: Identifiable {
  4. case loading
  5. case home
  6. case settings
  7. case onboarding
  8. case authorizedRoot
  9. case login
  10. case requestPermissions
  11. case configEditor(file: String)
  12. case nighscoutConfig
  13. case pumpConfig
  14. case pumpSettingsEditor
  15. case basalProfileEditor
  16. case isfEditor
  17. case crEditor
  18. case targetsEditor
  19. case preferencesEditor
  20. case addCarbs
  21. case addTempTarget
  22. case bolus(waitForDuggestion: Bool)
  23. case manualTempBasal
  24. case autotuneConfig
  25. case dataTable
  26. var id: Int { String(reflecting: self).hashValue }
  27. }
  28. extension Screen {
  29. func view(resolver: Resolver) -> AnyView {
  30. switch self {
  31. case .loading:
  32. return ProgressView().asAny()
  33. case .home:
  34. return Home.Builder(resolver: resolver).buildView()
  35. case .settings:
  36. return Settings.Builder(resolver: resolver).buildView()
  37. case .onboarding:
  38. return Onboarding.Builder(resolver: resolver).buildView()
  39. case .authorizedRoot:
  40. return AuthorizedRoot.Builder(resolver: resolver).buildView()
  41. case .login:
  42. return Login.Builder(resolver: resolver).buildView()
  43. case .requestPermissions:
  44. return RequestPermissions.Builder(resolver: resolver).buildView()
  45. case let .configEditor(file):
  46. return ConfigEditor.Builder(resolver: resolver, file: file).buildView()
  47. case .nighscoutConfig:
  48. return NightscoutConfig.Builder(resolver: resolver).buildView()
  49. case .pumpConfig:
  50. return PumpConfig.Builder(resolver: resolver).buildView()
  51. case .pumpSettingsEditor:
  52. return PumpSettingsEditor.Builder(resolver: resolver).buildView()
  53. case .basalProfileEditor:
  54. return BasalProfileEditor.Builder(resolver: resolver).buildView()
  55. case .isfEditor:
  56. return ISFEditor.Builder(resolver: resolver).buildView()
  57. case .crEditor:
  58. return CREditor.Builder(resolver: resolver).buildView()
  59. case .targetsEditor:
  60. return TargetsEditor.Builder(resolver: resolver).buildView()
  61. case .preferencesEditor:
  62. return PreferencesEditor.Builder(resolver: resolver).buildView()
  63. case .addCarbs:
  64. return AddCarbs.Builder(resolver: resolver).buildView()
  65. case .addTempTarget:
  66. return AddTempTarget.Builder(resolver: resolver).buildView()
  67. case let .bolus(waitForSuggestion):
  68. return Bolus.Builder(resolver: resolver, waitForSuggestion: waitForSuggestion).buildView()
  69. case .manualTempBasal:
  70. return ManualTempBasal.Builder(resolver: resolver).buildView()
  71. case .autotuneConfig:
  72. return AutotuneConfig.Builder(resolver: resolver).buildView()
  73. case .dataTable:
  74. return DataTable.Builder(resolver: resolver).buildView()
  75. }
  76. }
  77. func modal(resolver: Resolver) -> Main.Modal {
  78. .init(screen: self, view: view(resolver: resolver))
  79. }
  80. }