forked from tangled.org/core
this repo has no description

appview: disable forking empty repos

anirudh.fi 4fcda1a7 adc78693

verified
Changed files
+36
appview
pages
templates
fragments
state
+1
appview/pages/pages.go
··· 233 233 Roles RolesInRepo 234 234 Source *db.Repo 235 235 SourceHandle string 236 + DisableFork bool 236 237 } 237 238 238 239 type RolesInRepo struct {
+7
appview/pages/templates/fragments/repoActions.html
··· 25 25 </span> 26 26 </div> 27 27 </button> 28 + {{ if .DisableFork }} 29 + <button class="btn no-underline hover:no-underline flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed" disabled title="Empty repositories cannot be forked"> 30 + {{ i "git-fork" "w-4 h-4"}} 31 + fork 32 + </button> 33 + {{ else }} 28 34 <a class="btn no-underline hover:no-underline flex items-center gap-2" href="/{{ .FullName }}/fork"> 29 35 {{ i "git-fork" "w-4 h-4"}} 30 36 fork 31 37 </a> 38 + {{ end }} 32 39 </div> 33 40 {{ end }} 34 41
+28
appview/state/repo.go
··· 831 831 knot = "tangled.sh" 832 832 } 833 833 834 + var disableFork bool 835 + us, err := NewUnsignedClient(knot, s.config.Dev) 836 + if err != nil { 837 + log.Printf("failed to create unsigned client for %s: %v", knot, err) 838 + } else { 839 + resp, err := us.Branches(f.OwnerDid(), f.RepoName) 840 + if err != nil { 841 + log.Printf("failed to get branches for %s/%s: %v", f.OwnerDid(), f.RepoName, err) 842 + } else { 843 + defer resp.Body.Close() 844 + body, err := io.ReadAll(resp.Body) 845 + if err != nil { 846 + log.Printf("error reading branch response body: %v", err) 847 + } else { 848 + var branchesResp types.RepoBranchesResponse 849 + if err := json.Unmarshal(body, &branchesResp); err != nil { 850 + log.Printf("error parsing branch response: %v", err) 851 + } else { 852 + disableFork = false 853 + } 854 + 855 + if len(branchesResp.Branches) == 0 { 856 + disableFork = true 857 + } 858 + } 859 + } 860 + } 834 861 repoInfo := pages.RepoInfo{ 835 862 OwnerDid: f.OwnerDid(), 836 863 OwnerHandle: f.OwnerHandle(), ··· 845 872 IssueCount: issueCount, 846 873 PullCount: pullCount, 847 874 }, 875 + DisableFork: disableFork, 848 876 } 849 877 850 878 if sourceRepo != nil {