Explorar el Código

PumpSettingsView

Ivan Valkou hace 5 años
padre
commit
8c781b66a0

+ 4 - 0
FreeAPS.xcodeproj/project.pbxproj

@@ -129,6 +129,7 @@
 		38B4F3CD25E5031100E76A18 /* Broadcaster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4F3CC25E5031100E76A18 /* Broadcaster.swift */; };
 		38B4F3CF25E5041600E76A18 /* APSContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4F3CE25E5041600E76A18 /* APSContainer.swift */; };
 		38BF021725E7CBBC00579895 /* PumpManagerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38BF021625E7CBBC00579895 /* PumpManagerExtensions.swift */; };
+		38BF021B25E7D06400579895 /* PumpSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38BF021A25E7D06400579895 /* PumpSettingsView.swift */; };
 		38FE826A25CC82DB001FF17A /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FE826925CC82DB001FF17A /* NetworkService.swift */; };
 		38FE826D25CC8461001FF17A /* NightscoutAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38FE826C25CC8461001FF17A /* NightscoutAPI.swift */; };
 		45252C95D220E796FDB3B022 /* ConfigEditorDataFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8A87AA037BD079BA3528BA /* ConfigEditorDataFlow.swift */; };
@@ -601,6 +602,7 @@
 		38B4F3CC25E5031100E76A18 /* Broadcaster.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Broadcaster.swift; sourceTree = "<group>"; };
 		38B4F3CE25E5041600E76A18 /* APSContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APSContainer.swift; sourceTree = "<group>"; };
 		38BF021625E7CBBC00579895 /* PumpManagerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerExtensions.swift; sourceTree = "<group>"; };
+		38BF021A25E7D06400579895 /* PumpSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpSettingsView.swift; sourceTree = "<group>"; };
 		38FE826925CC82DB001FF17A /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
 		38FE826C25CC8461001FF17A /* NightscoutAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutAPI.swift; sourceTree = "<group>"; };
 		3BF768BD6264FF7D71D66767 /* NightscoutConfigProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NightscoutConfigProvider.swift; sourceTree = "<group>"; };
@@ -1173,6 +1175,7 @@
 			children = (
 				2AD22C985B79A2F0D2EA3D9D /* PumpConfigRootView.swift */,
 				38B4F3C225E2A20B00E76A18 /* PumpSetupView.swift */,
+				38BF021A25E7D06400579895 /* PumpSettingsView.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -1632,6 +1635,7 @@
 				3811DE7925C9D6D300A708ED /* LoginViewModel.swift in Sources */,
 				3811DEAB25C9D88300A708ED /* HTTPResponseStatus.swift in Sources */,
 				3811DE5F25C9D4D500A708ED /* ProgressBar.swift in Sources */,
+				38BF021B25E7D06400579895 /* PumpSettingsView.swift in Sources */,
 				3811DEEA25CA063400A708ED /* SyncAccess.swift in Sources */,
 				3811DE4F25C9D4B800A708ED /* AuthotizedRootDataFlow.swift in Sources */,
 				3811DE5025C9D4B800A708ED /* AuthotizedRootProvider.swift in Sources */,

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

@@ -3,6 +3,6 @@ import LoopKitUI
 
 protocol APSManager {
     func runTest()
-    func setPumpManager(_: PumpManagerUI)
+    var pumpManager: PumpManagerUI? { get set }
     var pumpDisplayState: CurrentValueSubject<PumpDisplayState?, Never> { get }
 }

+ 0 - 4
FreeAPS/Sources/APS/BaseAPSManager.swift

@@ -55,10 +55,6 @@ final class BaseAPSManager: APSManager, Injectable {
         openAPS.test()
     }
 
-    func setPumpManager(_ manager: PumpManagerUI) {
-        pumpManager = manager
-    }
-
     private func pumpManagerFromRawValue(_ rawValue: [String: Any]) -> PumpManagerUI? {
         guard let rawState = rawValue["state"] as? PumpManager.RawStateValue,
               let Manager = pumpManagerTypeFromRawValue(rawValue)

+ 5 - 1
FreeAPS/Sources/APS/Extensions/PumpManagerExtensions.swift

@@ -19,7 +19,7 @@ extension PumpManagerUI {
         )
     }
 
-    func settingsViewController() -> UIViewController {
+    func settingsViewController() -> UIViewController & CompletionNotifying {
         settingsViewController(
             insulinTintColor: .accentColor,
             guidanceColors: GuidanceColors(acceptable: .green, warning: .orange, critical: .red),
@@ -27,3 +27,7 @@ extension PumpManagerUI {
         )
     }
 }
+
+protocol PumpSettingsBuilder {
+    func settingsViewController() -> UIViewController & CompletionNotifying
+}

+ 1 - 1
FreeAPS/Sources/Modules/PumpConfig/PumpConfigProvider.swift

@@ -7,7 +7,7 @@ extension PumpConfig {
         @Injected() var apsManager: APSManager!
 
         func setPumpManager(_ manager: PumpManagerUI) {
-            apsManager.setPumpManager(manager)
+            apsManager.pumpManager = manager
         }
 
         var pumpDisplayState: AnyPublisher<PumpDisplayState?, Never> {

+ 17 - 9
FreeAPS/Sources/Modules/PumpConfig/View/PumpConfigRootView.swift

@@ -8,9 +8,13 @@ extension PumpConfig {
             Form {
                 Section(header: Text("Pump")) {
                     if let pumpState = viewModel.pumpState {
-                        HStack {
-                            Image(uiImage: pumpState.image ?? UIImage()).padding()
-                            Text(pumpState.name)
+                        Button {
+                            viewModel.setupPump = true
+                        } label: {
+                            HStack {
+                                Image(uiImage: pumpState.image ?? UIImage()).padding()
+                                Text(pumpState.name)
+                            }
                         }
                     } else {
                         Button("Add Medtronic") { viewModel.addPump(.minimed) }
@@ -22,12 +26,16 @@ extension PumpConfig {
             .navigationBarItems(leading: Button("Close", action: viewModel.hideModal))
             .navigationBarTitleDisplayMode(.inline)
             .popover(isPresented: $viewModel.setupPump) {
-                PumpSetupView(
-                    pumpType: viewModel.setupPumpType,
-                    pumpInitialSettings: .default,
-                    completionDelegate: viewModel,
-                    setupDelegate: viewModel
-                )
+                if let pumpManager = viewModel.provider.apsManager.pumpManager {
+                    PumpSettingsView(pumpManager: pumpManager, completionDelegate: viewModel)
+                } else {
+                    PumpSetupView(
+                        pumpType: viewModel.setupPumpType,
+                        pumpInitialSettings: .default,
+                        completionDelegate: viewModel,
+                        setupDelegate: viewModel
+                    )
+                }
             }
         }
     }

+ 26 - 0
FreeAPS/Sources/Modules/PumpConfig/View/PumpSettingsView.swift

@@ -0,0 +1,26 @@
+import LoopKit
+import LoopKitUI
+import MinimedKit
+import MinimedKitUI
+import OmniKit
+import OmniKitUI
+import RileyLinkBLEKit
+import RileyLinkKit
+import RileyLinkKitUI
+import SwiftUI
+import UIKit
+
+extension PumpConfig {
+    struct PumpSettingsView: UIViewControllerRepresentable {
+        let pumpManager: PumpManagerUI
+        weak var completionDelegate: CompletionDelegate?
+
+        func makeUIViewController(context _: UIViewControllerRepresentableContext<PumpSettingsView>) -> UIViewController {
+            var vc = pumpManager.settingsViewController()
+            vc.completionDelegate = completionDelegate
+            return vc
+        }
+
+        func updateUIViewController(_: UIViewController, context _: UIViewControllerRepresentableContext<PumpSettingsView>) {}
+    }
+}