ContactSettingsViewModel.swift 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // ContactSettingsViewModel.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-12-10.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. import Combine
  10. import Foundation
  11. extension Bundle {
  12. var displayName: String {
  13. return object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? "LoopFollow"
  14. }
  15. }
  16. class ContactSettingsViewModel: ObservableObject {
  17. var contactName: String {
  18. "'\(Bundle.main.displayName) - BG'"
  19. }
  20. @Published var contactEnabled: Bool {
  21. didSet {
  22. storage.contactEnabled.value = contactEnabled
  23. }
  24. }
  25. @Published var contactTrend: Bool {
  26. didSet {
  27. if contactTrend {
  28. contactDelta = false
  29. }
  30. storage.contactTrend.value = contactTrend
  31. }
  32. }
  33. @Published var contactDelta: Bool {
  34. didSet {
  35. if contactDelta {
  36. contactTrend = false
  37. }
  38. storage.contactDelta.value = contactDelta
  39. }
  40. }
  41. private let storage = ObservableUserDefaults.shared
  42. private var cancellables = Set<AnyCancellable>()
  43. init() {
  44. self.contactEnabled = storage.contactEnabled.value
  45. self.contactTrend = storage.contactTrend.value
  46. self.contactDelta = storage.contactDelta.value
  47. storage.contactEnabled.$value
  48. .assign(to: &$contactEnabled)
  49. storage.contactTrend.$value
  50. .assign(to: &$contactTrend)
  51. storage.contactDelta.$value
  52. .assign(to: &$contactDelta)
  53. }
  54. }