summaryrefslogtreecommitdiff
path: root/Hutch/Views/Builds
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Builds')
-rw-r--r--Hutch/Views/Builds/BuildListView.swift9
-rw-r--r--Hutch/Views/Builds/BuildListViewModel.swift8
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: