TrioNightscoutRemoteController.swift 2.1 KB

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