diff options
| author | Christian Cleberg <[email protected]> | 2026-04-23 17:39:13 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-23 17:39:13 -0500 |
| commit | 66601a8091a73f3e31f4fb534c38b3eca4756e93 (patch) | |
| tree | f85cd883e63177d25dfe5993a4d545efa4812923 /Hutch/Views/Builds/BuildListView.swift | |
| parent | 380fb866d090c5f13b2ad3f88f1fe23c4ade4801 (diff) | |
| download | hutch-3.2.1.tar.gz hutch-3.2.1.tar.bz2 hutch-3.2.1.zip | |
fix: profile loading error and user-timeline prefs updatev3.2.1
Diffstat (limited to 'Hutch/Views/Builds/BuildListView.swift')
| -rw-r--r-- | Hutch/Views/Builds/BuildListView.swift | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Hutch/Views/Builds/BuildListView.swift b/Hutch/Views/Builds/BuildListView.swift index 8de2220..20414d6 100644 --- a/Hutch/Views/Builds/BuildListView.swift +++ b/Hutch/Views/Builds/BuildListView.swift @@ -4,6 +4,8 @@ struct BuildListView: View { @AppStorage(AppStorageKeys.swipeActionsEnabled, store: .standard) private var swipeActionsEnabled = true @AppStorage(AppStorageKeys.buildsAutoRefreshInterval) private var autoRefreshRawValue = 0 @AppStorage(AppStorageKeys.buildsRepoFilter) private var savedRepoFilter = "" + @AppStorage(AppStorageKeys.buildsLookbackDays, store: .standard) + private var lookbackDays = BuildListViewModel.defaultLookbackDays @Environment(AppState.self) private var appState @Environment(\.isAMOLEDTheme) private var isAMOLED @State private var viewModel: BuildListViewModel? @@ -65,6 +67,20 @@ struct BuildListView: View { } } } + Section("Timeframe") { + ForEach(HomeViewModel.allowedFailedBuildLookbackDays, id: \.self) { days in + Button { + lookbackDays = days + viewModel.lookbackDays = days + } label: { + if lookbackDays == days { + Label(HomeViewModel.failedBuildLookbackLabel(days: days), systemImage: "checkmark") + } else { + Text(HomeViewModel.failedBuildLookbackLabel(days: days)) + } + } + } + } } label: { Image(systemName: "line.3.horizontal.decrease.circle") } @@ -107,6 +123,7 @@ struct BuildListView: View { if viewModel == nil { let vm = BuildListViewModel(client: appState.client, defaults: appState.accountDefaults) vm.repoFilter = savedRepoFilter + vm.lookbackDays = lookbackDays viewModel = vm await vm.loadJobs() } @@ -114,6 +131,9 @@ struct BuildListView: View { // onDisappear stops it when navigating away. viewModel?.startAutoRefresh(interval: autoRefreshInterval) } + .onChange(of: lookbackDays) { _, newValue in + viewModel?.lookbackDays = newValue + } .onDisappear { viewModel?.stopAutoRefresh() } @@ -236,6 +256,12 @@ struct BuildListView: View { systemImage: "magnifyingglass", description: Text("No builds matched “\(viewModel.searchText)”.") ) + } else if !viewModel.jobs.isEmpty, viewModel.filteredJobs.isEmpty { + ContentUnavailableView( + "No Builds In Timeframe", + systemImage: "calendar.badge.clock", + description: Text("No builds were updated \(HomeViewModel.failedBuildLookbackLabel(days: lookbackDays)).") + ) } else if viewModel.jobs.isEmpty, viewModel.error == nil { ContentUnavailableView( "No Builds", |
