diff options
| author | Christian Cleberg <[email protected]> | 2026-07-16 10:13:46 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-07-16 10:13:46 -0500 |
| commit | 65412ee9818bf251fd5caac231746b04c7eca23f (patch) | |
| tree | 06a6e5e26d6b00fb4c1e27587682006d21b9fd0b /Hutch/Views/Projects/ProjectsListView.swift | |
| parent | 6a26c6de827e56a57d9a8c600b26354e280df383 (diff) | |
| download | hutch-65412ee9818bf251fd5caac231746b04c7eca23f.tar.gz hutch-65412ee9818bf251fd5caac231746b04c7eca23f.tar.bz2 hutch-65412ee9818bf251fd5caac231746b04c7eca23f.zip | |
fix: honor forceRefresh for projects and system status on the dashboard
loadDashboard(forceRefresh:) fanned the flag out to five loaders, but
loadProjects and loadSystemStatusSnapshot dropped it: they called
fetchProjects() and snapshotResult() with no policy, so pull-to-refresh
returned cached projects and status while the other three sections
refreshed. SonarCloud flagged both params as unused (swift:S1172).
Thread forceRefresh through ProjectService.fetchProjects into the page
policy (refreshIgnoringCache when forced), and pass it to
snapshotResult, which already accepted it. ProjectsListView carried the
same latent bug via its own .refreshable — fixed there too now that
fetchProjects can force.
Diffstat (limited to 'Hutch/Views/Projects/ProjectsListView.swift')
| -rw-r--r-- | Hutch/Views/Projects/ProjectsListView.swift | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Hutch/Views/Projects/ProjectsListView.swift b/Hutch/Views/Projects/ProjectsListView.swift index f6d5766..783417c 100644 --- a/Hutch/Views/Projects/ProjectsListView.swift +++ b/Hutch/Views/Projects/ProjectsListView.swift @@ -25,14 +25,14 @@ final class ProjectsListViewModel { } } - func loadProjects() async { + func loadProjects(forceRefresh: Bool = false) async { guard !isLoading else { return } isLoading = true error = nil defer { isLoading = false } do { - projects = try await service.fetchProjects() + projects = try await service.fetchProjects(forceRefresh: forceRefresh) } catch { if projects.isEmpty { self.error = error.userFacingMessage @@ -115,7 +115,7 @@ struct ProjectsListView: View { ) ) .refreshable { - await viewModel.loadProjects() + await viewModel.loadProjects(forceRefresh: true) } .connectivityOverlay(hasContent: !viewModel.projects.isEmpty) { await viewModel.loadProjects() |
