From 26bba7d7ee2b3a11e1efbe9e8c210517732cb235 Mon Sep 17 00:00:00 2001 From: Stefan Hausotte Date: Mon, 9 Mar 2026 20:41:34 +0100 Subject: [PATCH] feat: add "mirror" badge for mirrored repos #8 --- Forji/Forji/Views/RepoBadge.swift | 15 +++++++++++++++ Forji/Forji/Views/RepositoryDetailView.swift | 18 ++++++------------ Forji/Forji/Views/RepositoryListView.swift | 18 ++++++------------ Forji/Forji/Views/RepositoryPickerView.swift | 18 ++++++------------ 4 files changed, 33 insertions(+), 36 deletions(-) create mode 100644 Forji/Forji/Views/RepoBadge.swift diff --git a/Forji/Forji/Views/RepoBadge.swift b/Forji/Forji/Views/RepoBadge.swift new file mode 100644 index 0000000..549a71a --- /dev/null +++ b/Forji/Forji/Views/RepoBadge.swift @@ -0,0 +1,15 @@ +import SwiftUI + +struct RepoBadge: View { + let title: String + let systemImage: String + + var body: some View { + Label(title, systemImage: systemImage) + .font(.caption2) + .fontWeight(.medium) + .padding(.horizontal, 8) + .padding(.vertical, 3) + .glassEffect(.regular) + } +} diff --git a/Forji/Forji/Views/RepositoryDetailView.swift b/Forji/Forji/Views/RepositoryDetailView.swift index b28ba18..ec46795 100644 --- a/Forji/Forji/Views/RepositoryDetailView.swift +++ b/Forji/Forji/Views/RepositoryDetailView.swift @@ -61,21 +61,15 @@ struct RepositoryDetailView: View { Spacer() if repository.private ?? false { - Label("Private", systemImage: "lock.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Private", systemImage: "lock.fill") } if repository.archived ?? false { - Label("Archived", systemImage: "archivebox.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Archived", systemImage: "archivebox.fill") + } + + if repository.mirror ?? false { + RepoBadge(title: "Mirror", systemImage: "arrow.triangle.2.circlepath") } } diff --git a/Forji/Forji/Views/RepositoryListView.swift b/Forji/Forji/Views/RepositoryListView.swift index 89901a8..7ff9f07 100644 --- a/Forji/Forji/Views/RepositoryListView.swift +++ b/Forji/Forji/Views/RepositoryListView.swift @@ -279,21 +279,15 @@ struct RepositoryRow: View { Spacer() if repository.private ?? false { - Label("Private", systemImage: "lock.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Private", systemImage: "lock.fill") } if repository.archived ?? false { - Label("Archived", systemImage: "archivebox.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Archived", systemImage: "archivebox.fill") + } + + if repository.mirror ?? false { + RepoBadge(title: "Mirror", systemImage: "arrow.triangle.2.circlepath") } Button { diff --git a/Forji/Forji/Views/RepositoryPickerView.swift b/Forji/Forji/Views/RepositoryPickerView.swift index d3caf49..c53857c 100644 --- a/Forji/Forji/Views/RepositoryPickerView.swift +++ b/Forji/Forji/Views/RepositoryPickerView.swift @@ -164,21 +164,15 @@ private struct RepositoryPickerRow: View { Spacer() if repository.private ?? false { - Label("Private", systemImage: "lock.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Private", systemImage: "lock.fill") } if repository.archived ?? false { - Label("Archived", systemImage: "archivebox.fill") - .font(.caption2) - .fontWeight(.medium) - .padding(.horizontal, 8) - .padding(.vertical, 3) - .glassEffect(.regular) + RepoBadge(title: "Archived", systemImage: "archivebox.fill") + } + + if repository.mirror ?? false { + RepoBadge(title: "Mirror", systemImage: "arrow.triangle.2.circlepath") } } .padding(.vertical, 2)