|
@@ -38,5 +38,46 @@ extension BasalProfileEditor {
|
|
|
}
|
|
}
|
|
|
}.eraseToAnyPublisher()
|
|
}.eraseToAnyPublisher()
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ func readProfile() -> AnyPublisher<Void, Error> {
|
|
|
|
|
+ guard let pump = deviceManager?.pumpManager else {
|
|
|
|
|
+ // storage.save(profile, as: OpenAPS.Settings.basalProfile)
|
|
|
|
|
+ return Just(()).setFailureType(to: Error.self).eraseToAnyPublisher()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // let syncValues = profile.map {
|
|
|
|
|
+ // RepeatingScheduleValue(startTime: TimeInterval($0.minutes * 60), value: Double($0.rate))
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ return Future { promise in
|
|
|
|
|
+ pump.getBasalRateSchedule { result in
|
|
|
|
|
+ switch result {
|
|
|
|
|
+ case let .success(scheduleItems):
|
|
|
|
|
+ var newProfile: [BasalProfileEntry] = []
|
|
|
|
|
+ for item in scheduleItems.items {
|
|
|
|
|
+ NSLog("getBasalRateSchedule \(item.startTime) \(item.value)")
|
|
|
|
|
+ let startMinutes = Int(item.startTime / 60) // seconds to minutes
|
|
|
|
|
+ let start = String(format: "%2d:%2d", startMinutes / 60, startMinutes % 60)
|
|
|
|
|
+ let rate = Decimal(item.value)
|
|
|
|
|
+ newProfile.append(BasalProfileEntry(
|
|
|
|
|
+ start: start,
|
|
|
|
|
+ minutes: startMinutes,
|
|
|
|
|
+ rate: rate
|
|
|
|
|
+ ))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for p in newProfile {
|
|
|
|
|
+ NSLog("getBasalRateSchedule \(p.start) \(p.minutes) \(p.rate)")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ self.storage.save(newProfile, as: OpenAPS.Settings.basalProfile)
|
|
|
|
|
+ // self.profile = newProfile
|
|
|
|
|
+ promise(.success(()))
|
|
|
|
|
+ case let .failure(error):
|
|
|
|
|
+ promise(.failure(error))
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }.eraseToAnyPublisher()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|