BackgroundRefreshSettingsViewModel.swift 1.3 KB

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