From 59a5495ec07d76c779be010f9338f8010f51623a Mon Sep 17 00:00:00 2001 From: Magesh K <47920326+mahee96@users.noreply.github.com> Date: Sat, 14 Dec 2024 07:54:11 +0530 Subject: [PATCH] [anisette-servers]: Fix: List was not updated since data was published from a non UI thread --- AltStore/Settings/AnisetteServerList.swift | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/AltStore/Settings/AnisetteServerList.swift b/AltStore/Settings/AnisetteServerList.swift index e18cec30..2b62d81e 100644 --- a/AltStore/Settings/AnisetteServerList.swift +++ b/AltStore/Settings/AnisetteServerList.swift @@ -39,7 +39,12 @@ class AnisetteViewModel: ObservableObject { func getDefaultListOfServers() { // initiate fetch but do not wait in blocking manner 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 { let decoder = Foundation.JSONDecoder() let servers = try decoder.decode(AnisetteServerData.self, from: data) - DispatchQueue.main.async { - aniServers.append(contentsOf: servers.servers) - // store server addresses as list - UserDefaults.standard.menuAnisetteServersList = aniServers.map(\.self.address) - } + aniServers.append(contentsOf: servers.servers) + // store server addresses as list + UserDefaults.standard.menuAnisetteServersList = aniServers.map(\.self.address) } catch { // Handle decoding error print("Failed to decode JSON: \(error)")