| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // LoopFollow
- // ContactSettingsViewModel.swift
- // Created by Jonas Björkert on 2024-12-10.
- import Combine
- import Foundation
- extension Bundle {
- var displayName: String {
- return object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? "LoopFollow"
- }
- }
- class ContactSettingsViewModel: ObservableObject {
- var contactName: String {
- "\(Bundle.main.displayName) - BG"
- }
- @Published var contactEnabled: Bool {
- didSet {
- Storage.shared.contactEnabled.value = contactEnabled
- triggerRefresh()
- }
- }
- @Published var contactTrend: ContactIncludeOption {
- didSet {
- if contactTrend == .include && contactDelta == .include {
- contactDelta = .off
- }
- Storage.shared.contactTrend.value = contactTrend
- triggerRefresh()
- }
- }
- @Published var contactDelta: ContactIncludeOption {
- didSet {
- if contactDelta == .include && contactTrend == .include {
- contactTrend = .off
- }
- Storage.shared.contactDelta.value = contactDelta
- triggerRefresh()
- }
- }
- @Published var contactBackgroundColor: String {
- didSet {
- Storage.shared.contactBackgroundColor.value = contactBackgroundColor
- triggerRefresh()
- }
- }
- @Published var contactTextColor: String {
- didSet {
- Storage.shared.contactTextColor.value = contactTextColor
- triggerRefresh()
- }
- }
- private let storage = ObservableUserDefaults.shared
- private var cancellables = Set<AnyCancellable>()
- init() {
- contactEnabled = Storage.shared.contactEnabled.value
- contactTrend = Storage.shared.contactTrend.value
- contactDelta = Storage.shared.contactDelta.value
- contactBackgroundColor = Storage.shared.contactBackgroundColor.value
- contactTextColor = Storage.shared.contactTextColor.value
- Storage.shared.contactEnabled.$value
- .assign(to: &$contactEnabled)
- Storage.shared.contactTrend.$value
- .assign(to: &$contactTrend)
- Storage.shared.contactDelta.$value
- .assign(to: &$contactDelta)
- Storage.shared.contactBackgroundColor.$value
- .assign(to: &$contactBackgroundColor)
- Storage.shared.contactTextColor.$value
- .assign(to: &$contactTextColor)
- }
- private func triggerRefresh() {
- NotificationCenter.default.post(name: NSNotification.Name("refresh"), object: nil)
- }
- }
|