summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories/RepositorySummarySupport.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Repositories/RepositorySummarySupport.swift')
-rw-r--r--Hutch/Views/Repositories/RepositorySummarySupport.swift46
1 files changed, 46 insertions, 0 deletions
diff --git a/Hutch/Views/Repositories/RepositorySummarySupport.swift b/Hutch/Views/Repositories/RepositorySummarySupport.swift
index 7861b40..741ff39 100644
--- a/Hutch/Views/Repositories/RepositorySummarySupport.swift
+++ b/Hutch/Views/Repositories/RepositorySummarySupport.swift
@@ -46,6 +46,28 @@ func repositoryVisibilityLabel(_ visibility: Visibility) -> String {
}
}
+func repositoryForgeLabel(_ service: SRHTService) -> String {
+ switch service {
+ case .git:
+ return "GIT"
+ case .hg:
+ return "HG"
+ default:
+ return service.rawValue.uppercased()
+ }
+}
+
+func repositoryPrimaryBranchLabel(for repository: RepositorySummary, hgTipBranch: String? = nil) -> String? {
+ switch repository.service {
+ case .git:
+ return repository.defaultBranchName
+ case .hg:
+ return hgTipBranch ?? repository.defaultBranchName ?? "tip"
+ default:
+ return repository.defaultBranchName
+ }
+}
+
struct SummaryMetadataRow: View {
let icon: String
let title: String
@@ -85,3 +107,27 @@ struct SummaryDetailRow: View {
}
}
}
+
+struct RepositoryForgeBadge: View {
+ let service: SRHTService
+
+ var body: some View {
+ Text(repositoryForgeLabel(service))
+ .font(.caption2.weight(.medium))
+ .padding(.horizontal, 6)
+ .padding(.vertical, 2)
+ .background(color.opacity(0.15), in: Capsule())
+ .foregroundStyle(color)
+ }
+
+ private var color: Color {
+ switch service {
+ case .git:
+ .indigo
+ case .hg:
+ .cyan
+ default:
+ .secondary
+ }
+ }
+}