diff --git a/dns/ViewModel.swift b/dns/ViewModel.swift index 72497bd..c5f8b3b 100644 --- a/dns/ViewModel.swift +++ b/dns/ViewModel.swift @@ -36,6 +36,40 @@ class ViewModel: NSObject, ObservableObject { private let log = Logger(subsystem: String(describing: ViewModel.self), category: String(describing: ViewModel.self)) + override init() { + super.init() + + isProgrammaticChange = true + blocklist = Settings.blocklist + + Task { + do { + try await manager.loadFromPreferences() + } + catch { + log.error("Error loading preferences: \(error)") + + return + } + + if let settings = manager.dnsSettings { + for dnsServer in BlocklistOption.allCases { + if settings.servers.contains(dnsServer.ipv4) { + await MainActor.run { + isProgrammaticChange = true + blocklist = dnsServer + isProgrammaticChange = true + isDnsEnabled = true + } + + break + } + } + } + } + } + + func toggleDns() { guard !isProgrammaticChange else { // Reset, so next one is recognized as coming from the user again.