Ivan Valkou 5 лет назад
Родитель
Сommit
e9c4c557c4

+ 3 - 3
FreeAPS.xcodeproj/project.pbxproj

@@ -661,15 +661,15 @@
 			children = (
 				3811DE4525C9D4B800A708ED /* AuthotizedRoot */,
 				3811DE0425C9D32E00A708ED /* Base */,
+				0610F7D6D2EC00E3BA1569F0 /* ConfigEditor */,
 				3811DE2725C9D49500A708ED /* Home */,
 				3811DE7025C9D6D300A708ED /* Login */,
 				3811DE1A25C9D48300A708ED /* Main */,
+				D533BF261CDC1C3F871E7BFD /* NightscoutConfig */,
 				3811DE6325C9D62600A708ED /* Onboarding */,
+				99C01B871ACAB3F32CE755C7 /* PumpConfig */,
 				3811DE8125C9D6DD00A708ED /* RequestPermissions */,
 				3811DE3825C9D4A100A708ED /* Settings */,
-				0610F7D6D2EC00E3BA1569F0 /* ConfigEditor */,
-				D533BF261CDC1C3F871E7BFD /* NightscoutConfig */,
-				99C01B871ACAB3F32CE755C7 /* PumpConfig */,
 			);
 			path = Modules;
 			sourceTree = "<group>";

+ 2 - 1
FreeAPS/Sources/APS/APSManager.swift

@@ -1,4 +1,5 @@
 import Combine
+import LoopKitUI
 import RileyLinkBLEKit
 
 class RileyDisplayState: ObservableObject, Identifiable {
@@ -20,7 +21,7 @@ class RileyDisplayState: ObservableObject, Identifiable {
     }
 }
 
-protocol APSManager {
+protocol APSManager: PumpManagerSetupViewControllerDelegate {
     var rileyDisplayStates: CurrentValueSubject<[RileyDisplayState], Never> { get }
     var deviceProvider: RileyLinkDeviceProvider { get }
     func runTest()

+ 9 - 2
FreeAPS/Sources/APS/BaseAPSManager.swift

@@ -1,5 +1,6 @@
 import Combine
 import LoopKit
+import LoopKitUI
 import MinimedKit
 import RileyLinkBLEKit
 import RileyLinkKit
@@ -16,6 +17,8 @@ final class BaseAPSManager: APSManager, Injectable {
         deviceDataManager.rileyLinkConnectionManager.deviceProvider
     }
 
+    private var pumpManager: PumpManagerUI? { deviceDataManager.pumpManager }
+
     private(set) var devices: [RileyLinkDevice] = [] {
         didSet {
             print("Devices: \(devices)")
@@ -77,7 +80,6 @@ final class BaseAPSManager: APSManager, Injectable {
     }
 
     private func registerNotifications() {
-        // Register for manager notifications
         notificationCenter.addObserver(
             self,
             selector: #selector(reloadDevices),
@@ -85,7 +87,6 @@ final class BaseAPSManager: APSManager, Injectable {
             object: rileyLinkPumpManager.rileyLinkDeviceProvider
         )
 
-        // Register for device notifications
         for name in [.DeviceConnectionStateDidChange, .DeviceRSSIDidChange, .DeviceNameDidChange] as [Notification.Name] {
             notificationCenter.addObserver(self, selector: #selector(deviceDidUpdate(_:)), name: name, object: nil)
         }
@@ -119,3 +120,9 @@ final class BaseAPSManager: APSManager, Injectable {
         openAPS.test()
     }
 }
+
+extension BaseAPSManager: PumpManagerSetupViewControllerDelegate {
+    func pumpManagerSetupViewController(_: PumpManagerSetupViewController, didSetUpPumpManager pumpManager: PumpManagerUI) {
+        deviceDataManager.pumpManager = pumpManager
+    }
+}

+ 1 - 0
FreeAPS/Sources/APS/RileyLink/DeviceDataManager.swift

@@ -13,6 +13,7 @@ import UserNotifications
 
 protocol DeviceDataManager {
     var rileyLinkConnectionManager: RileyLinkConnectionManager! { get }
+    var pumpManager: PumpManagerUI? { get set }
 }
 
 final class BaseDeviceManager: DeviceDataManager {

+ 2 - 0
FreeAPS/Sources/Modules/PumpConfig/PumpConfigDataFlow.swift

@@ -1,4 +1,5 @@
 import Combine
+import LoopKitUI
 
 enum PumpConfig {
     enum Config {}
@@ -11,4 +12,5 @@ enum PumpConfig {
 
 protocol PumpConfigProvider: Provider {
     func rileyDisplayStates() -> AnyPublisher<[RileyDisplayState], Never>
+    var setupDelegate: PumpManagerSetupViewControllerDelegate { get }
 }

+ 2 - 0
FreeAPS/Sources/Modules/PumpConfig/PumpConfigProvider.swift

@@ -1,4 +1,5 @@
 import Combine
+import LoopKitUI
 import RileyLinkBLEKit
 
 extension PumpConfig {
@@ -6,6 +7,7 @@ extension PumpConfig {
         @Injected() var apsManager: APSManager!
 
         var deviceProvider: RileyLinkDeviceProvider { apsManager.deviceProvider }
+        var setupDelegate: PumpManagerSetupViewControllerDelegate { apsManager }
 
         func rileyDisplayStates() -> AnyPublisher<[RileyDisplayState], Never> {
             apsManager.rileyDisplayStates.eraseToAnyPublisher()

+ 6 - 2
FreeAPS/Sources/Modules/PumpConfig/View/PumpConfigRootView.swift

@@ -6,7 +6,11 @@ extension PumpConfig {
 
         var body: some View {
             Form {
-                Section(header: Text("Devices")) {
+                Section(header: HStack {
+                    Text("Devices")
+                    Spacer()
+                    ProgressView()
+                }) {
                     ForEach(viewModel.rileyDisplayStates.indexed(), id: \.1.id) { index, state in
                         Toggle(isOn: self.$viewModel.rileyDisplayStates[index].connected) {
                             HStack {
@@ -31,7 +35,7 @@ extension PumpConfig {
                     pumpType: viewModel.setupPumpType,
                     deviceProvider: viewModel.provider.deviceProvider,
                     completionDelegate: viewModel,
-                    setupDelegate: nil
+                    setupDelegate: viewModel.provider.setupDelegate
                 )
             }
         }