diff options
| author | Christian Cleberg <[email protected]> | 2026-04-01 23:25:54 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-01 23:25:54 -0500 |
| commit | a83893afa086f0050c825144fa818024db4df056 (patch) | |
| tree | c11c90f50acc633d2388e9a4940a4f3e7662b2a6 /Hutch/Views/Repositories/HgRepositoryDetailView.swift | |
| parent | 7fe5ec3f69211712d39f3a1dff090119340e05d9 (diff) | |
| download | hutch-2.8.0.tar.gz hutch-2.8.0.tar.bz2 hutch-2.8.0.zip | |
feat: add Look Up screen and restrict management actions to ownersv2.8.0
Implements: https://todo.sr.ht/~ccleberg/Hutch/4
Diffstat (limited to 'Hutch/Views/Repositories/HgRepositoryDetailView.swift')
| -rw-r--r-- | Hutch/Views/Repositories/HgRepositoryDetailView.swift | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Hutch/Views/Repositories/HgRepositoryDetailView.swift b/Hutch/Views/Repositories/HgRepositoryDetailView.swift index 6779165..575ce81 100644 --- a/Hutch/Views/Repositories/HgRepositoryDetailView.swift +++ b/Hutch/Views/Repositories/HgRepositoryDetailView.swift @@ -14,6 +14,11 @@ struct HgRepositoryDetailView: View { @State private var isShowingRepositoryDetails = false @State private var showBrowseRefPicker = false + private var canManageRepository: Bool { + guard let currentUser = appState.currentUser else { return false } + return normalizedUsername(currentUser.username) == normalizedUsername(repository.owner.canonicalName) + } + private var shareURL: URL? { guard let viewModel, let selectedFilePath = viewModel.selectedFilePath else { return nil } return SRHTWebURL.file( @@ -51,10 +56,12 @@ struct HgRepositoryDetailView: View { Image(systemName: "square.and.arrow.up") } - Button { - showSettings = true - } label: { - Image(systemName: "gear") + if canManageRepository { + Button { + showSettings = true + } label: { + Image(systemName: "gear") + } } } } @@ -85,6 +92,11 @@ struct HgRepositoryDetailView: View { } } + private func normalizedUsername(_ value: String) -> String { + let trimmed = value.trimmingCharacters(in: .whitespacesAndNewlines) + return trimmed.hasPrefix("~") ? String(trimmed.dropFirst()) : trimmed + } + @ViewBuilder private func content(_ viewModel: HgRepositoryDetailViewModel) -> some View { VStack(spacing: 0) { |
