summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Repositories')
-rw-r--r--Hutch/Views/Repositories/RepositoryListViewModel.swift5
-rw-r--r--Hutch/Views/Repositories/RepositorySettingsViewModel.swift5
2 files changed, 9 insertions, 1 deletions
diff --git a/Hutch/Views/Repositories/RepositoryListViewModel.swift b/Hutch/Views/Repositories/RepositoryListViewModel.swift
index 695abf8..b3669e6 100644
--- a/Hutch/Views/Repositories/RepositoryListViewModel.swift
+++ b/Hutch/Views/Repositories/RepositoryListViewModel.swift
@@ -189,7 +189,10 @@ final class RepositoryListViewModel {
filteredResults = []
}
} else {
- let repositories = try await fetchAllRepositories(useCache: true)
+ // forceRefresh used to reach only the build statuses, so a pull to
+ // refresh re-served the cached list and a deleted repository stayed
+ // on screen.
+ let repositories = try await fetchAllRepositories(useCache: !forceRefresh)
updateSearchIndex(with: repositories)
filteredResults = repositories
}
diff --git a/Hutch/Views/Repositories/RepositorySettingsViewModel.swift b/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
index dd8d7a1..0b31125 100644
--- a/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
+++ b/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
@@ -231,6 +231,11 @@ final class RepositorySettingsViewModel {
variables: ["id": repositoryId],
responseType: DeleteRepositoryResponse.self
)
+ // The list and Home are both served from cache, so without this the
+ // repository lingers on screen after it no longer exists. Creation
+ // already does this; deletion never did.
+ await client.invalidateCache(prefix: APICacheKeys.prefix(service.rawValue, "repositories"))
+ await client.invalidateCache(prefix: APICacheKeys.prefix("home"))
didDelete = true
} catch {
self.error = error.userFacingMessage