diff options
Diffstat (limited to 'Hutch/Views/Repositories/RepositoryDetailView.swift')
| -rw-r--r-- | Hutch/Views/Repositories/RepositoryDetailView.swift | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Hutch/Views/Repositories/RepositoryDetailView.swift b/Hutch/Views/Repositories/RepositoryDetailView.swift index 9044e56..39ef912 100644 --- a/Hutch/Views/Repositories/RepositoryDetailView.swift +++ b/Hutch/Views/Repositories/RepositoryDetailView.swift @@ -11,6 +11,11 @@ struct RepositoryDetailView: View { @State private var showSettings = false @State private var displayName: String + private var canManageRepository: Bool { + guard let currentUser = appState.currentUser else { return false } + return normalizedUsername(currentUser.username) == normalizedUsername(repository.owner.canonicalName) + } + init(repository: RepositorySummary, onDeleted: (() -> Void)? = nil) { self.repository = repository self.onDeleted = onDeleted @@ -36,10 +41,12 @@ struct RepositoryDetailView: View { Image(systemName: "square.and.arrow.up") } - Button { - showSettings = true - } label: { - Image(systemName: "gear") + if canManageRepository { + Button { + showSettings = true + } label: { + Image(systemName: "gear") + } } } } @@ -104,4 +111,9 @@ struct RepositoryDetailView: View { set: { viewModel.error = $0 } )) } + + private func normalizedUsername(_ value: String) -> String { + let trimmed = value.trimmingCharacters(in: .whitespacesAndNewlines) + return trimmed.hasPrefix("~") ? String(trimmed.dropFirst()) : trimmed + } } |
