BackgroundRefreshSettingsViewModel.swift 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // LoopFollow
  2. // BackgroundRefreshSettingsViewModel.swift
  3. // Created by Jonas Björkert on 2025-01-13.
  4. import Combine
  5. import Foundation
  6. class BackgroundRefreshSettingsViewModel: ObservableObject {
  7. @Published var backgroundRefreshType: BackgroundRefreshType
  8. private var storage = Storage.shared
  9. private var cancellables = Set<AnyCancellable>()
  10. private var isInitialSetup = true // Tracks whether the value is being set initially
  11. init() {
  12. backgroundRefreshType = storage.backgroundRefreshType.value
  13. setupBindings()
  14. }
  15. private func setupBindings() {
  16. $backgroundRefreshType
  17. .dropFirst() // Ignore the initial emission during setup
  18. .sink { [weak self] newValue in
  19. guard let self = self else { return }
  20. self.handleBackgroundRefreshTypeChange(newValue)
  21. // Persist the change
  22. self.storage.backgroundRefreshType.value = newValue
  23. }
  24. .store(in: &cancellables)
  25. }
  26. private func handleBackgroundRefreshTypeChange(_ newValue: BackgroundRefreshType) {
  27. LogManager.shared.log(category: .general, message: "Background refresh type changed to: \(newValue.rawValue)")
  28. BLEManager.shared.disconnect()
  29. }
  30. }