DataTableProvider.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. <<<<<<< HEAD
  14. func deleteCarbsFromNightscout(withID id: String) {
  15. Task {
  16. await nightscoutManager.deleteCarbs(withID: id)
  17. =======
  18. func pumpSettings() -> PumpSettings {
  19. storage.retrieve(OpenAPS.Settings.settings, as: PumpSettings.self)
  20. ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings))
  21. ?? PumpSettings(insulinActionCurve: 6, maxBolus: 10, maxBasal: 2)
  22. }
  23. func tempTargets() -> [TempTarget] {
  24. tempTargetsStorage.recent()
  25. }
  26. func carbs() -> [CarbsEntry] {
  27. carbsStorage.recent()
  28. }
  29. func fpus() -> [CarbsEntry] {
  30. carbsStorage.recent()
  31. }
  32. func deleteCarbs(_ treatement: Treatment) {
  33. // need to start with tidepool because Nightscout delete data
  34. // probably to revise the logic
  35. // TODO:
  36. tidepoolManager.deleteCarbs(
  37. at: treatement.date,
  38. isFPU: treatement.isFPU,
  39. fpuID: treatement.fpuID,
  40. syncID: treatement.id
  41. )
  42. nightscoutManager.deleteCarbs(
  43. at: treatement.date,
  44. isFPU: treatement.isFPU,
  45. fpuID: treatement.fpuID,
  46. syncID: treatement.id
  47. )
  48. }
  49. func deleteInsulin(_ treatement: Treatment) {
  50. // delete tidepoolManager before NS - TODO
  51. tidepoolManager.deleteInsulin(at: treatement.date)
  52. nightscoutManager.deleteInsulin(at: treatement.date)
  53. if let id = treatement.idPumpEvent {
  54. healthkitManager.deleteInsulin(syncID: id)
  55. >>>>>>> 9672da256c317a314acc76d6e4f6e82cc174d133
  56. }
  57. }
  58. func deleteInsulin(with treatmentObjectID: NSManagedObjectID) async {
  59. let taskContext = CoreDataStack.shared.newTaskContext()
  60. await taskContext.perform {
  61. do {
  62. guard let treatmentToDelete = try taskContext.existingObject(with: treatmentObjectID) as? PumpEventStored
  63. else {
  64. debug(.default, "Could not cast the object to PumpEventStored")
  65. return
  66. }
  67. // Delete Insulin from Nightscout
  68. if let id = treatmentToDelete.id {
  69. self.deleteInsulinFromNightscout(withID: id)
  70. }
  71. // TODO: - Rewrite healthkit implementation
  72. // let id = treatmentToDelete.id
  73. // self.healthkitManager.deleteInsulin(syncID: id)
  74. taskContext.delete(treatmentToDelete)
  75. try taskContext.save()
  76. debug(.default, "Successfully deleted the treatment object.")
  77. } catch {
  78. debug(.default, "Failed to delete the treatment object: \(error.localizedDescription)")
  79. }
  80. }
  81. }
  82. func deleteInsulinFromNightscout(withID id: String) {
  83. Task {
  84. await nightscoutManager.deleteInsulin(withID: id)
  85. }
  86. }
  87. func deleteManualGlucose(withID id: String) {
  88. Task {
  89. await nightscoutManager.deleteManualGlucose(withID: id)
  90. }
  91. }
  92. }
  93. }