PumpSetupView.swift 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import LoopKit
  2. import LoopKitUI
  3. import MinimedKit
  4. import MinimedKitUI
  5. import MockKit
  6. import MockKitUI
  7. import OmniBLE
  8. import OmniKit
  9. import OmniKitUI
  10. import SwiftUI
  11. import UIKit
  12. extension PumpConfig {
  13. struct PumpSetupView: UIViewControllerRepresentable {
  14. let pumpType: PumpType
  15. let pumpInitialSettings: PumpInitialSettings
  16. let bluetoothManager: BluetoothStateManager
  17. weak var completionDelegate: CompletionDelegate?
  18. weak var setupDelegate: PumpManagerOnboardingDelegate?
  19. func makeUIViewController(context _: UIViewControllerRepresentableContext<PumpSetupView>) -> UIViewController {
  20. // var setupViewController: PumpManagerSetupViewController & UIViewController & CompletionNotifying
  21. var setupViewController: SetupUIResult<
  22. PumpManagerViewController,
  23. PumpManagerUI
  24. >
  25. let initialSettings = PumpManagerSetupSettings(
  26. maxBasalRateUnitsPerHour: pumpInitialSettings.maxBasalRateUnitsPerHour,
  27. maxBolusUnits: pumpInitialSettings.maxBolusUnits,
  28. basalSchedule: pumpInitialSettings.basalSchedule
  29. )
  30. switch pumpType {
  31. case .minimed:
  32. setupViewController = MinimedPumpManager.setupViewController(
  33. initialSettings: initialSettings,
  34. bluetoothProvider: bluetoothManager,
  35. colorPalette: .default,
  36. allowDebugFeatures: true,
  37. prefersToSkipUserInteraction: false,
  38. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  39. )
  40. case .omnipod:
  41. setupViewController = OmnipodPumpManager.setupViewController(
  42. initialSettings: initialSettings,
  43. bluetoothProvider: bluetoothManager,
  44. colorPalette: .default,
  45. allowDebugFeatures: true,
  46. prefersToSkipUserInteraction: false,
  47. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  48. )
  49. case .omnipodBLE:
  50. setupViewController = OmniBLEPumpManager.setupViewController(
  51. initialSettings: initialSettings,
  52. bluetoothProvider: bluetoothManager,
  53. colorPalette: .default,
  54. allowDebugFeatures: true,
  55. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  56. )
  57. case .simulator:
  58. setupViewController = MockPumpManager.setupViewController(
  59. initialSettings: initialSettings,
  60. bluetoothProvider: bluetoothManager,
  61. colorPalette: .default,
  62. allowDebugFeatures: true,
  63. prefersToSkipUserInteraction: false,
  64. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  65. )
  66. }
  67. // setupViewController.setupDelegate = setupDelegate
  68. // setupViewController.completionDelegate = completionDelegate
  69. // return setupViewController
  70. switch setupViewController {
  71. case var .userInteractionRequired(setupViewControllerUI):
  72. setupViewControllerUI.pumpManagerOnboardingDelegate = setupDelegate
  73. setupViewControllerUI.completionDelegate = completionDelegate
  74. return setupViewControllerUI
  75. // show(setupViewController, sender: self)
  76. case let .createdAndOnboarded(pumpManagerUI):
  77. debug(.default, "Pump manager created and onboarded")
  78. setupDelegate?.pumpManagerOnboarding(didCreatePumpManager: pumpManagerUI)
  79. return UIViewController()
  80. }
  81. }
  82. func updateUIViewController(_: UIViewController, context _: UIViewControllerRepresentableContext<PumpSetupView>) {}
  83. }
  84. }