StateModel.swift 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //
  2. // StateModel.swift
  3. // LibreTramsmitterExample
  4. //
  5. // Created by Ivan Valkou on 09.11.2021.
  6. //
  7. import SwiftUI
  8. import LibreTransmitter
  9. final class StateModel: ObservableObject {
  10. private let delegateQueue = DispatchQueue(label: "StateModel.delegateQueue")
  11. @Published var currentGlucose: LibreGlucose?
  12. @Published var trend: GlucoseTrend = .flat
  13. }
  14. extension StateModel: LibreTransmitterManagerDelegate {
  15. var queue: DispatchQueue {
  16. delegateQueue
  17. }
  18. func startDateToFilterNewData(for: LibreTransmitterManager) -> Date? {
  19. Date().addingTimeInterval(-3600)
  20. }
  21. func cgmManager(_ manager: LibreTransmitterManager, hasNew result: Result<[LibreGlucose], Error>) {
  22. switch result {
  23. case let .success(data):
  24. print("New data: \(data)")
  25. DispatchQueue.main.async {
  26. self.trend = manager.glucoseDisplay?.trendType ?? .flat
  27. self.currentGlucose = data.first
  28. }
  29. case let .failure(error):
  30. print("Error: \(error.localizedDescription)")
  31. }
  32. }
  33. func overcalibration(for: LibreTransmitterManager) -> ((Double) -> (Double))? {
  34. nil
  35. }
  36. }