[anisette-servers]: Fix: List was not updated since data was published from a non UI thread

This commit is contained in:
Magesh K
2024-12-14 07:54:11 +05:30
parent 7353a1f28b
commit 59a5495ec0

View File

@@ -39,7 +39,12 @@ class AnisetteViewModel: ObservableObject {
func getDefaultListOfServers() { func getDefaultListOfServers() {
// initiate fetch but do not wait in blocking manner // initiate fetch but do not wait in blocking manner
Task{ Task{
self.servers = await AnisetteViewModel.getListOfServers(serverSource: self.source) let anisetteServers = await AnisetteViewModel.getListOfServers(serverSource: self.source)
// always update on main thread for Observables
DispatchQueue.main.async {
self.servers = anisetteServers
}
} }
} }
@@ -61,11 +66,9 @@ class AnisetteViewModel: ObservableObject {
do { do {
let decoder = Foundation.JSONDecoder() let decoder = Foundation.JSONDecoder()
let servers = try decoder.decode(AnisetteServerData.self, from: data) let servers = try decoder.decode(AnisetteServerData.self, from: data)
DispatchQueue.main.async { aniServers.append(contentsOf: servers.servers)
aniServers.append(contentsOf: servers.servers) // store server addresses as list
// store server addresses as list UserDefaults.standard.menuAnisetteServersList = aniServers.map(\.self.address)
UserDefaults.standard.menuAnisetteServersList = aniServers.map(\.self.address)
}
} catch { } catch {
// Handle decoding error // Handle decoding error
print("Failed to decode JSON: \(error)") print("Failed to decode JSON: \(error)")