TempTargetPresetManager.swift 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // TempTargetPresetManager.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-07-31.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import HealthKit
  10. import Combine
  11. class TempTargetPresetManager: ObservableObject {
  12. static let shared = TempTargetPresetManager()
  13. @Published var presets: [TempTargetPreset] = []
  14. private let presetsKey = "tempTargetPresets"
  15. private init() {
  16. loadPresets()
  17. }
  18. func loadPresets() {
  19. if let data = UserDefaults.standard.data(forKey: presetsKey) {
  20. if let decodedPresets = try? JSONDecoder().decode([TempTargetPreset].self, from: data) {
  21. self.presets = decodedPresets
  22. }
  23. }
  24. }
  25. func savePresets() {
  26. if let encodedData = try? JSONEncoder().encode(presets) {
  27. UserDefaults.standard.set(encodedData, forKey: presetsKey)
  28. }
  29. }
  30. func addPreset(name: String, target: HKQuantity, duration: HKQuantity) {
  31. if let index = presets.firstIndex(where: { $0.name == name }) {
  32. presets[index] = TempTargetPreset(name: name, target: target, duration: duration)
  33. } else {
  34. presets.append(TempTargetPreset(name: name, target: target, duration: duration))
  35. }
  36. savePresets()
  37. }
  38. func deletePreset(at index: Int) {
  39. presets.remove(at: index)
  40. savePresets()
  41. }
  42. }