diff options
Diffstat (limited to 'Hutch/Views/Builds')
| -rw-r--r-- | Hutch/Views/Builds/BuildListView.swift | 9 | ||||
| -rw-r--r-- | Hutch/Views/Builds/BuildListViewModel.swift | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Hutch/Views/Builds/BuildListView.swift b/Hutch/Views/Builds/BuildListView.swift index 20414d6..cc31e67 100644 --- a/Hutch/Views/Builds/BuildListView.swift +++ b/Hutch/Views/Builds/BuildListView.swift @@ -124,6 +124,10 @@ struct BuildListView: View { let vm = BuildListViewModel(client: appState.client, defaults: appState.accountDefaults) vm.repoFilter = savedRepoFilter vm.lookbackDays = lookbackDays + if let pendingFilter = appState.pendingBuildListFilter { + vm.filter = pendingFilter + appState.pendingBuildListFilter = nil + } viewModel = vm await vm.loadJobs() } @@ -134,6 +138,11 @@ struct BuildListView: View { .onChange(of: lookbackDays) { _, newValue in viewModel?.lookbackDays = newValue } + .onChange(of: appState.pendingBuildListFilter) { _, newValue in + guard let newValue else { return } + viewModel?.filter = newValue + appState.pendingBuildListFilter = nil + } .onDisappear { viewModel?.stopAutoRefresh() } diff --git a/Hutch/Views/Builds/BuildListViewModel.swift b/Hutch/Views/Builds/BuildListViewModel.swift index 42500a8..eb01d9e 100644 --- a/Hutch/Views/Builds/BuildListViewModel.swift +++ b/Hutch/Views/Builds/BuildListViewModel.swift @@ -21,6 +21,7 @@ private struct SubmittedJob: Decodable, Sendable { enum BuildListFilter: String, CaseIterable, Sendable { case attention = "Attention" + case failed = "Failed" case active = "Active" case all = "All" } @@ -413,6 +414,13 @@ final class BuildListViewModel { case .success, .cancelled: return false } + case .failed: + switch job.status { + case .failed, .timeout: + return true + case .success, .cancelled, .running, .queued, .pending: + return false + } case .active: switch job.status { case .running, .queued, .pending: |
