Jelajahi Sumber

Face-ID for import

(cherry picked from commit c31995dd5635b106b56adffae359125bd4fb5624)
Jon Mårtensson 2 tahun lalu
induk
melakukan
ff36ad34cf

+ 12 - 0
FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift

@@ -13,6 +13,7 @@ extension NightscoutConfig {
         @Injected() private var healthKitManager: HealthKitManager!
         @Injected() private var healthKitManager: HealthKitManager!
         @Injected() private var cgmManager: FetchGlucoseManager!
         @Injected() private var cgmManager: FetchGlucoseManager!
         @Injected() private var storage: FileStorage!
         @Injected() private var storage: FileStorage!
+        @Injected() var unlockmanager: UnlockManager!
 
 
         let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
         let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
 
 
@@ -27,6 +28,7 @@ extension NightscoutConfig {
         @Published var useLocalSource = false
         @Published var useLocalSource = false
         @Published var localPort: Decimal = 0
         @Published var localPort: Decimal = 0
         @Published var units: GlucoseUnits = .mmolL
         @Published var units: GlucoseUnits = .mmolL
+        @Published var importedHasRun = false
 
 
         override func subscribe() {
         override func subscribe() {
             url = keychain.getValue(String.self, forKey: Config.urlKey) ?? ""
             url = keychain.getValue(String.self, forKey: Config.urlKey) ?? ""
@@ -84,6 +86,16 @@ extension NightscoutConfig {
             return NightscoutAPI(url: url, secret: secret)
             return NightscoutAPI(url: url, secret: secret)
         }
         }
 
 
+        func startImport() {
+            unlockmanager.unlock()
+                .sink { _ in } receiveValue: { [weak self] _ in
+                    guard let self = self else { return }
+                    importSettings()
+                    importedHasRun = true
+                }
+                .store(in: &lifetime)
+        }
+
         func importSettings() {
         func importSettings() {
             guard let nightscout = nightscoutAPI else {
             guard let nightscout = nightscoutAPI else {
                 saveError("Can't access nightscoutAPI")
                 saveError("Can't access nightscoutAPI")

+ 2 - 4
FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift

@@ -8,7 +8,6 @@ extension NightscoutConfig {
         @StateObject var state = StateModel()
         @StateObject var state = StateModel()
         @State var importAlert: Alert?
         @State var importAlert: Alert?
         @State var isImportAlertPresented = false
         @State var isImportAlertPresented = false
-        @State var importedHasRun = false
 
 
         @FetchRequest(
         @FetchRequest(
             entity: ImportError.entity(),
             entity: ImportError.entity(),
@@ -79,8 +78,7 @@ extension NightscoutConfig {
                             primaryButton: .destructive(
                             primaryButton: .destructive(
                                 Text("Yes, Import"),
                                 Text("Yes, Import"),
                                 action: {
                                 action: {
-                                    state.importSettings()
-                                    importedHasRun = true
+                                    state.startImport()
                                 }
                                 }
                             ),
                             ),
                             secondaryButton: .cancel()
                             secondaryButton: .cancel()
@@ -90,7 +88,7 @@ extension NightscoutConfig {
 
 
                 } header: { Text("Import from Nightscout") }
                 } header: { Text("Import from Nightscout") }
 
 
-                    .alert(isPresented: $importedHasRun) {
+                    .alert(isPresented: $state.importedHasRun) {
                         Alert(
                         Alert(
                             title: Text("Settings imported"),
                             title: Text("Settings imported"),
                             message: Text(
                             message: Text(