summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories/RepositoryRowView.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-03-19 15:18:38 -0500
committerChristian Cleberg <[email protected]>2026-03-19 15:18:38 -0500
commit659c76df9ff3926cb68886c16167808c23bd8f75 (patch)
tree572bef546fcca19ad37bc1aa7cfb153eb2bf8eb7 /Hutch/Views/Repositories/RepositoryRowView.swift
parented48e72520c51e4635cd3840dbc569bdd74c950f (diff)
parent6ba4e967d5dfb5d3c7bb97a0f2662f3180595563 (diff)
downloadhutch-1c00bd1fba1478ff0630c0f2588082fc1f708bfa.tar.gz
hutch-1c00bd1fba1478ff0630c0f2588082fc1f708bfa.tar.bz2
hutch-1c00bd1fba1478ff0630c0f2588082fc1f708bfa.zip
v2.0: Merge branch 'dev'v2
Diffstat (limited to 'Hutch/Views/Repositories/RepositoryRowView.swift')
-rw-r--r--Hutch/Views/Repositories/RepositoryRowView.swift45
1 files changed, 45 insertions, 0 deletions
diff --git a/Hutch/Views/Repositories/RepositoryRowView.swift b/Hutch/Views/Repositories/RepositoryRowView.swift
index 9f8cd15..f8fd205 100644
--- a/Hutch/Views/Repositories/RepositoryRowView.swift
+++ b/Hutch/Views/Repositories/RepositoryRowView.swift
@@ -2,6 +2,7 @@ import SwiftUI
struct RepositoryRowView: View {
let repository: RepositorySummary
+ let buildStatus: RepositoryBuildStatus
var body: some View {
VStack(alignment: .leading, spacing: 4) {
@@ -20,6 +21,9 @@ struct RepositoryRowView: View {
.foregroundStyle(.cyan)
}
+ if buildStatus != .none {
+ RepositoryBuildStatusIndicator(status: buildStatus)
+ }
VisibilityBadge(visibility: repository.visibility)
}
@@ -53,6 +57,47 @@ struct RepositoryRowView: View {
}
}
+private struct RepositoryBuildStatusIndicator: View {
+ let status: RepositoryBuildStatus
+
+ var body: some View {
+ Circle()
+ .fill(color)
+ .frame(width: 8, height: 8)
+ .overlay {
+ Circle()
+ .strokeBorder(.primary.opacity(0.08))
+ }
+ .accessibilityLabel(accessibilityLabel)
+ }
+
+ private var color: Color {
+ switch status {
+ case .success:
+ .green
+ case .failed:
+ .red
+ case .running:
+ .orange
+ case .none:
+ .clear
+ }
+ }
+
+ private var accessibilityLabel: String {
+ switch status {
+ case .success:
+ "Latest build succeeded"
+ case .failed:
+ "Latest build failed"
+ case .running:
+ "Latest build is running"
+ case .none:
+ "No recent builds"
+ }
+ }
+}
+
// MARK: - VisibilityBadge
struct VisibilityBadge: View {