TrioNightscoutRemoteController.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // LoopFollow
  2. // TrioNightscoutRemoteController.swift
  3. import Foundation
  4. import HealthKit
  5. class TrioNightscoutRemoteController {
  6. func cancelExistingTarget(completion: @escaping (Bool) -> Void) {
  7. Task {
  8. let tempTargetBody: [String: Any] = [
  9. "enteredBy": "LoopFollow",
  10. "eventType": "Temporary Target",
  11. "reason": "Manual",
  12. "duration": 0,
  13. "created_at": ISO8601DateFormatter().string(from: Date()),
  14. ]
  15. do {
  16. let response: [TreatmentCancelResponse] = try await NightscoutUtils.executePostRequest(eventType: .treatments, body: tempTargetBody)
  17. Observable.shared.tempTarget.value = nil
  18. NotificationCenter.default.post(name: NSNotification.Name("refresh"), object: nil)
  19. completion(true)
  20. } catch {
  21. completion(false)
  22. }
  23. }
  24. }
  25. func sendTempTarget(newTarget: HKQuantity, duration: HKQuantity, completion: @escaping (Bool) -> Void) {
  26. let tempTargetBody: [String: Any] = [
  27. "enteredBy": "LoopFollow",
  28. "eventType": "Temporary Target",
  29. "reason": "Manual",
  30. "targetTop": newTarget.doubleValue(for: .milligramsPerDeciliter),
  31. "targetBottom": newTarget.doubleValue(for: .milligramsPerDeciliter),
  32. "duration": Int(duration.doubleValue(for: .minute())),
  33. "created_at": ISO8601DateFormatter().string(from: Date()),
  34. ]
  35. Task {
  36. do {
  37. let response: [TreatmentResponse] = try await NightscoutUtils.executePostRequest(eventType: .treatments, body: tempTargetBody)
  38. Observable.shared.tempTarget.value = newTarget
  39. NotificationCenter.default.post(name: NSNotification.Name("refresh"), object: nil)
  40. completion(true)
  41. } catch {
  42. completion(false)
  43. }
  44. }
  45. }
  46. }