TidePoolConfigView.swift 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import Foundation
  2. import LoopKit
  3. import LoopKitUI
  4. import SwiftUI
  5. struct TidePoolSetupView: UIViewControllerRepresentable {
  6. let serviceUIType: ServiceUI.Type
  7. let pluginHost: PluginHost
  8. let serviceOnBoardDelegate: ServiceOnboardingDelegate
  9. let serviceDelegate: CompletionDelegate
  10. func makeUIViewController(context _: UIViewControllerRepresentableContext<TidePoolSetupView>) -> UIViewController {
  11. let result = serviceUIType.setupViewController(
  12. colorPalette: .default,
  13. pluginHost: pluginHost
  14. )
  15. switch result {
  16. case let .createdAndOnboarded(serviceUI):
  17. serviceOnBoardDelegate.serviceOnboarding(didCreateService: serviceUI)
  18. serviceOnBoardDelegate.serviceOnboarding(didOnboardService: serviceUI)
  19. return UIViewController()
  20. case var .userInteractionRequired(setupViewControllerUI):
  21. setupViewControllerUI.serviceOnboardingDelegate = serviceOnBoardDelegate
  22. setupViewControllerUI.completionDelegate = serviceDelegate
  23. return setupViewControllerUI
  24. }
  25. }
  26. func updateUIViewController(_: UIViewController, context _: UIViewControllerRepresentableContext<TidePoolSetupView>) {}
  27. }
  28. struct TidePoolSettingsView: UIViewControllerRepresentable {
  29. let serviceUI: ServiceUI
  30. let serviceOnBoardDelegate: ServiceOnboardingDelegate
  31. let serviceDelegate: CompletionDelegate?
  32. func makeUIViewController(context _: UIViewControllerRepresentableContext<TidePoolSettingsView>) -> UIViewController {
  33. var vc = serviceUI.settingsViewController(colorPalette: .default)
  34. vc.completionDelegate = serviceDelegate
  35. vc.serviceOnboardingDelegate = serviceOnBoardDelegate
  36. return vc
  37. }
  38. func updateUIViewController(_: UIViewController, context _: UIViewControllerRepresentableContext<TidePoolSettingsView>) {}
  39. }