Screen.swift 2.6 KB

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