PumpSetupView.swift 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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: false,
  37. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  38. )
  39. case .omnipod:
  40. setupViewController = OmnipodPumpManager.setupViewController(
  41. initialSettings: initialSettings,
  42. bluetoothProvider: bluetoothManager,
  43. colorPalette: .default,
  44. allowDebugFeatures: false,
  45. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  46. )
  47. case .omnipodBLE:
  48. setupViewController = OmniBLEPumpManager.setupViewController(
  49. initialSettings: initialSettings,
  50. bluetoothProvider: bluetoothManager,
  51. colorPalette: .default,
  52. allowDebugFeatures: false,
  53. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  54. )
  55. case .simulator:
  56. setupViewController = MockPumpManager.setupViewController(
  57. initialSettings: initialSettings,
  58. bluetoothProvider: bluetoothManager,
  59. colorPalette: .default,
  60. allowDebugFeatures: false,
  61. allowedInsulinTypes: [.apidra, .humalog, .novolog, .fiasp, .lyumjev]
  62. )
  63. }
  64. // setupViewController.setupDelegate = setupDelegate
  65. // setupViewController.completionDelegate = completionDelegate
  66. // return setupViewController
  67. switch setupViewController {
  68. case var .userInteractionRequired(setupViewControllerUI):
  69. setupViewControllerUI.pumpManagerOnboardingDelegate = setupDelegate
  70. setupViewControllerUI.completionDelegate = completionDelegate
  71. return setupViewControllerUI
  72. // show(setupViewController, sender: self)
  73. case let .createdAndOnboarded(pumpManagerUI):
  74. debug(.default, "Pump manager created and onboarded")
  75. setupDelegate?.pumpManagerOnboarding(didCreatePumpManager: pumpManagerUI)
  76. return UIViewController()
  77. }
  78. }
  79. func updateUIViewController(_: UIViewController, context _: UIViewControllerRepresentableContext<PumpSetupView>) {}
  80. }
  81. }