TempTargetPresetManager.swift 1.3 KB

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