Issue #6: Always reflect current state of NEDNSSettingsManager.

This commit is contained in:
Benjamin Erhart 2026-05-29 16:16:20 +02:00
parent 178a625050
commit 3aee0db9e9
2 changed files with 38 additions and 24 deletions

View file

@ -53,30 +53,7 @@ class ViewModel: NSObject, ObservableObject {
super.init()
Task {
do {
try await manager.loadFromPreferences()
}
catch {
log.error("Error loading preferences: \(error)")
}
isDnsEnabled = manager.isEnabled
if let settings = manager.dnsSettings {
for dnsServer in BlocklistOption.allCases {
if settings.servers.contains(dnsServer.ipv4) {
await MainActor.run {
blocklist = dnsServer
}
break
}
}
}
else {
// Trigger `blocklist.didSet` to store right away, so user has something to select.
blocklist = blocklist
}
await refreshConfig()
}
Task {
@ -87,6 +64,33 @@ class ViewModel: NSObject, ObservableObject {
// MARK: Public Methods
func refreshConfig() async {
do {
try await manager.loadFromPreferences()
}
catch {
log.error("Error loading preferences: \(error)")
}
isDnsEnabled = manager.isEnabled
if let settings = manager.dnsSettings {
for dnsServer in BlocklistOption.allCases {
if settings.servers.contains(dnsServer.ipv4) {
await MainActor.run {
blocklist = dnsServer
}
break
}
}
}
else {
// Trigger `blocklist.didSet` to store right away, so user has something to select.
blocklist = blocklist
}
}
func fetchServerStatus() async {
do {
let (data, _) = try await URLSession.shared.data(for: .init(url: .init(string: "https://status.sr2.uk/index.json")!))