diff --git a/FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift b/FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift index 29a7315c57..69fdbefe71 100644 --- a/FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift +++ b/FreeAPS/Sources/Modules/NightscoutConfig/NightscoutConfigStateModel.swift @@ -13,6 +13,7 @@ extension NightscoutConfig { @Injected() private var healthKitManager: HealthKitManager! @Injected() private var cgmManager: FetchGlucoseManager! @Injected() private var storage: FileStorage! + @Injected() var unlockmanager: UnlockManager! let coredataContext = CoreDataStack.shared.persistentContainer.viewContext @@ -27,6 +28,7 @@ extension NightscoutConfig { @Published var useLocalSource = false @Published var localPort: Decimal = 0 @Published var units: GlucoseUnits = .mmolL + @Published var importedHasRun = false override func subscribe() { url = keychain.getValue(String.self, forKey: Config.urlKey) ?? "" @@ -84,6 +86,16 @@ extension NightscoutConfig { 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() { guard let nightscout = nightscoutAPI else { saveError("Can't access nightscoutAPI") diff --git a/FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift b/FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift index 2e54515a11..66706d29ff 100644 --- a/FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift +++ b/FreeAPS/Sources/Modules/NightscoutConfig/View/NightscoutConfigRootView.swift @@ -8,7 +8,6 @@ extension NightscoutConfig { @StateObject var state = StateModel() @State var importAlert: Alert? @State var isImportAlertPresented = false - @State var importedHasRun = false @FetchRequest( entity: ImportError.entity(), @@ -79,8 +78,7 @@ extension NightscoutConfig { primaryButton: .destructive( Text("Yes, Import"), action: { - state.importSettings() - importedHasRun = true + state.startImport() } ), secondaryButton: .cancel() @@ -90,7 +88,7 @@ extension NightscoutConfig { } header: { Text("Import from Nightscout") } - .alert(isPresented: $importedHasRun) { + .alert(isPresented: $state.importedHasRun) { Alert( title: Text("Settings imported"), message: Text(