TrioNightscoutRemoteController.swift 2.0 KB

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