DataTableProvider.swift 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import CoreData
  2. import Foundation
  3. extension DataTable {
  4. final class Provider: BaseProvider, DataTableProvider {
  5. @Injected() var nightscoutManager: NightscoutManager!
  6. @Injected() var healthkitManager: HealthKitManager!
  7. @Injected() var tidepoolManager: TidepoolManager!
  8. func pumpSettings() -> PumpSettings {
  9. storage.retrieve(OpenAPS.Settings.settings, as: PumpSettings.self)
  10. ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings))
  11. ?? PumpSettings(insulinActionCurve: 6, maxBolus: 10, maxBasal: 2)
  12. }
  13. func deleteCarbsFromNightscout(withID id: String) {
  14. Task {
  15. await nightscoutManager.deleteCarbs(withID: id)
  16. }
  17. }
  18. func deleteInsulin(with treatmentObjectID: NSManagedObjectID) async {
  19. let taskContext = CoreDataStack.shared.newTaskContext()
  20. await taskContext.perform {
  21. do {
  22. guard let treatmentToDelete = try taskContext.existingObject(with: treatmentObjectID) as? PumpEventStored
  23. else {
  24. debug(.default, "Could not cast the object to PumpEventStored")
  25. return
  26. }
  27. // Delete Insulin from Nightscout
  28. if let id = treatmentToDelete.id {
  29. self.deleteInsulinFromNightscout(withID: id)
  30. }
  31. // TODO: - Rewrite healthkit implementation
  32. // let id = treatmentToDelete.id
  33. // self.healthkitManager.deleteInsulin(syncID: id)
  34. taskContext.delete(treatmentToDelete)
  35. try taskContext.save()
  36. debug(.default, "Successfully deleted the treatment object.")
  37. } catch {
  38. debug(.default, "Failed to delete the treatment object: \(error.localizedDescription)")
  39. }
  40. }
  41. }
  42. func deleteInsulinFromNightscout(withID id: String) {
  43. Task {
  44. await nightscoutManager.deleteInsulin(withID: id)
  45. }
  46. }
  47. func deleteManualGlucose(withID id: String) {
  48. Task {
  49. await nightscoutManager.deleteManualGlucose(withID: id)
  50. }
  51. }
  52. func deleteGlucoseFromHealth(withSyncID id: String) {
  53. Task.detached { [weak self] in
  54. guard let self = self else { return }
  55. await self.healthkitManager.deleteGlucose(syncID: id)
  56. }
  57. }
  58. }
  59. }