TempTargetPresetManager.swift 1.3 KB

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