From 5e63048ab6a741ae947f7fe42efcb5206a3f3963 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 13 Apr 2026 14:20:27 -0500 Subject: fix: mercurial parity and graphql handling - implements consistent UX between repo types - ensures centralized services and routes are used between repo types - graphql error handling is centralized - error messages are consistent Implements: https://todo.sr.ht/~ccleberg/hutch/58 Implements: https://todo.sr.ht/~ccleberg/hutch/59 --- .../Repositories/RepositorySummarySupport.swift | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'Hutch/Views/Repositories/RepositorySummarySupport.swift') 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 + } + } +} -- cgit v1.2.3