CAge.swift 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // LoopFollow
  2. // CAge.swift
  3. // Created by Jonas Björkert on 2023-10-05.
  4. import Foundation
  5. extension MainViewController {
  6. // NS Cage Web Call
  7. func webLoadNSCage() {
  8. let currentTimeString = dateTimeUtils.getDateTimeString()
  9. let parameters: [String: String] = [
  10. "find[eventType]": NightscoutUtils.EventType.cage.rawValue,
  11. "find[created_at][$lte]": currentTimeString,
  12. "count": "1",
  13. ]
  14. NightscoutUtils.executeRequest(eventType: .cage, parameters: parameters) { (result: Result<[cageData], Error>) in
  15. switch result {
  16. case let .success(data):
  17. self.updateCage(data: data)
  18. case let .failure(error):
  19. LogManager.shared.log(category: .nightscout, message: "webLoadNSCage, error: \(error.localizedDescription)")
  20. }
  21. }
  22. }
  23. // NS Cage Response Processor
  24. func updateCage(data: [cageData]) {
  25. infoManager.clearInfoData(type: .cage)
  26. if data.count == 0 {
  27. return
  28. }
  29. currentCage = data[0]
  30. let lastCageString = data[0].created_at
  31. let formatter = ISO8601DateFormatter()
  32. formatter.formatOptions = [.withFullDate,
  33. .withTime,
  34. .withDashSeparatorInDate,
  35. .withColonSeparatorInTime]
  36. UserDefaultsRepository.alertCageInsertTime.value = formatter.date(from: lastCageString)?.timeIntervalSince1970 as! TimeInterval
  37. if let cageTime = formatter.date(from: lastCageString)?.timeIntervalSince1970 {
  38. let now = dateTimeUtils.getNowTimeIntervalUTC()
  39. let secondsAgo = now - cageTime
  40. // let days = 24 * 60 * 60
  41. let formatter = DateComponentsFormatter()
  42. formatter.unitsStyle = .positional // Use the appropriate positioning for the current locale
  43. formatter.allowedUnits = [.day, .hour] // Units to display in the formatted string
  44. formatter.zeroFormattingBehavior = [.pad] // Pad with zeroes where appropriate for the locale
  45. if let formattedDuration = formatter.string(from: secondsAgo) {
  46. infoManager.updateInfoData(type: .cage, value: formattedDuration)
  47. }
  48. }
  49. }
  50. }