From 06b24715cd244475ded5482e926721a57278a3cf Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 13 Apr 2026 13:26:08 -0500 Subject: perf: reduce redundant fetches and improve list render efficiency - Remove no-op per-row task from RepositoryListView; loadMoreIfNeeded is a stub for repos so each row was allocating a Task that did nothing - Fix BuildListView auto-refresh stopping permanently after navigating away; startAutoRefresh now runs unconditionally on task so it restarts on every reappear, not just first load - Add lastRefreshed tracking to HomeViewModel with a needsRefresh(after:) helper; HomeView and WorkView scene-activation handlers now skip loadDashboard() if the data is less than 60 seconds old - Add 120-second TTL to repository build status refresh; statuses are no longer re-fetched on every tab appear, only when stale or when the user explicitly pulls to refresh (forceRefresh: true) Implements: https://todo.sr.ht/~ccleberg/hutch/56 --- Hutch/Views/Repositories/RepositoryListView.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'Hutch/Views/Repositories/RepositoryListView.swift') diff --git a/Hutch/Views/Repositories/RepositoryListView.swift b/Hutch/Views/Repositories/RepositoryListView.swift index 68dd0b0..0258a58 100644 --- a/Hutch/Views/Repositories/RepositoryListView.swift +++ b/Hutch/Views/Repositories/RepositoryListView.swift @@ -88,9 +88,6 @@ struct RepositoryListView: View { ) } .alignmentGuide(.listRowSeparatorLeading) { _ in 0 } - .task { - await viewModel.loadMoreIfNeeded(currentItem: repo) - } } if viewModel.isLoadingMore { @@ -156,7 +153,7 @@ struct RepositoryListView: View { } .srhtErrorBanner(error: $vm.error) .refreshable { - await viewModel.loadRepositories() + await viewModel.loadRepositories(forceRefresh: true) } .task { await viewModel.loadRepositories() -- cgit v1.2.3