From fca4c5e7af90c7023559cef31d2526a60515277a Mon Sep 17 00:00:00 2001 From: tjh Date: Wed, 21 May 2025 12:22:58 +0100 Subject: [PATCH] appview: repo/index: show fork-sync button only to owners & collaborators Also skips getForkInfo for non owners/collaborators. --- appview/pages/templates/repo/index.html | 4 +++- appview/state/repo.go | 11 +++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/appview/pages/templates/repo/index.html b/appview/pages/templates/repo/index.html index 99866f96..ff5403a6 100644 --- a/appview/pages/templates/repo/index.html +++ b/appview/pages/templates/repo/index.html @@ -66,7 +66,9 @@ {{ end }} - {{ if and .ForkInfo .ForkInfo.IsFork }} + {{ $isOwner := and .LoggedInUser .RepoInfo.Roles.IsOwner }} + {{ $isCollaborator := and .LoggedInUser .RepoInfo.Roles.IsCollaborator }} + {{ if and (or $isOwner $isCollaborator) .ForkInfo .ForkInfo.IsFork }} {{ $disabled := "" }} {{ $title := "" }} {{ if eq .ForkInfo.Status 0 }} diff --git a/appview/state/repo.go b/appview/state/repo.go index 080e6286..5555b622 100644 --- a/appview/state/repo.go +++ b/appview/state/repo.go @@ -124,10 +124,13 @@ func (s *State) RepoIndex(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) repoInfo := f.RepoInfo(s, user) - forkInfo, err := getForkInfo(repoInfo, s, f, w, user) - if err != nil { - log.Printf("Failed to fetch fork information: %v", err) - return + var forkInfo *types.ForkInfo + if user != nil && (repoInfo.Roles.IsOwner() || repoInfo.Roles.IsCollaborator()) { + forkInfo, err = getForkInfo(repoInfo, s, f, w, user) + if err != nil { + log.Printf("Failed to fetch fork information: %v", err) + return + } } s.pages.RepoIndexPage(w, pages.RepoIndexParams{ -- 2.51.2