Notes.swift 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // CarbsToday.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2023-10-04.
  6. // Copyright © 2023 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import UIKit
  10. extension MainViewController {
  11. // NS Note Response Processor
  12. func processNotes(entries: [[String:AnyObject]]) {
  13. // because it's a small array, we're going to destroy and reload every time.
  14. noteGraphData.removeAll()
  15. var lastFoundIndex = 0
  16. entries.reversed().forEach { currentEntry in
  17. guard let currentEntry = currentEntry as? [String: AnyObject] else { return }
  18. var date: String
  19. if currentEntry["timestamp"] != nil {
  20. date = currentEntry["timestamp"] as! String
  21. } else if currentEntry["created_at"] != nil {
  22. date = currentEntry["created_at"] as! String
  23. } else {
  24. return
  25. }
  26. if let parsedDate = NightscoutUtils.parseDate(date) {
  27. let dateTimeStamp = parsedDate.timeIntervalSince1970
  28. let sgv = findNearestBGbyTime(needle: dateTimeStamp, haystack: bgData, startingIndex: lastFoundIndex)
  29. lastFoundIndex = sgv.foundIndex
  30. guard let thisNote = currentEntry["notes"] as? String else { return }
  31. if dateTimeStamp < (dateTimeUtils.getNowTimeIntervalUTC() + (60 * 60)) {
  32. let dot = DataStructs.noteStruct(date: Double(dateTimeStamp), sgv: Int(sgv.sgv), note: thisNote)
  33. noteGraphData.append(dot)
  34. }
  35. } else {
  36. print("Failed to parse date")
  37. }
  38. }
  39. if UserDefaultsRepository.graphOtherTreatments.value {
  40. updateNotes()
  41. }
  42. }
  43. }