@@ -28,6 +28,7 @@ final class MCPServerGalleryViewModel: ObservableObject {
2828 @Published var pendingServer : MCPRegistryServerDetail ?
2929 @Published var infoSheetServer : MCPRegistryServerDetail ?
3030 @Published var mcpRegistryEntry : MCPRegistryEntry ?
31+ @Published private( set) var lastError : Error ?
3132
3233 @AppStorage ( \. mcpRegistryURL) var mcpRegistryURL
3334
@@ -154,11 +155,12 @@ final class MCPServerGalleryViewModel: ObservableObject {
154155 searchText = " "
155156
156157 // Load servers from the base URL
157- await loadServerList ( resetToFirstPage: true )
158+ _ = await loadServerList ( resetToFirstPage: true )
158159 }
159160 }
160161
161- func refreshFromURL( mcpRegistryEntry: MCPRegistryEntry ? = nil ) async {
162+ // Called from Settings view to refresh with optional new registry entry
163+ func refreshFromURL( mcpRegistryEntry: MCPRegistryEntry ? = nil ) async -> Error ? {
162164 isRefreshing = true
163165 defer { isRefreshing = false }
164166
@@ -170,10 +172,12 @@ final class MCPServerGalleryViewModel: ObservableObject {
170172 Logger . client. info ( " Cleared gallery view model data for refresh " )
171173
172174 // Load servers from the base URL
173- await loadServerList ( resetToFirstPage: true )
175+ let error = await loadServerList ( resetToFirstPage: true )
174176
175177 // Reload installed servers after fetching new data
176178 loadInstalledServers ( )
179+
180+ return error
177181 }
178182
179183 func updateData( serverList: MCPRegistryServerList , mcpRegistryEntry: MCPRegistryEntry ? = nil ) {
@@ -214,7 +218,7 @@ final class MCPServerGalleryViewModel: ObservableObject {
214218 }
215219 }
216220
217- private func loadServerList( resetToFirstPage: Bool ) async {
221+ private func loadServerList( resetToFirstPage: Bool ) async -> Error ? {
218222 if resetToFirstPage {
219223 isInitialLoading = true
220224 } else {
@@ -225,6 +229,8 @@ final class MCPServerGalleryViewModel: ObservableObject {
225229 isInitialLoading = false
226230 isLoadingMore = false
227231 }
232+
233+ lastError = nil
228234
229235 do {
230236 let service = try getService ( )
@@ -247,8 +253,12 @@ final class MCPServerGalleryViewModel: ObservableObject {
247253 servers. append ( contentsOf: serverList? . servers ?? [ ] )
248254 registryMetadata = serverList? . metadata
249255 }
256+
257+ return nil
250258 } catch {
251259 Logger . client. error ( " Failed to load MCP servers: \( error) " )
260+ lastError = error
261+ return error
252262 }
253263 }
254264
0 commit comments