appview: Update New PR Page #490

The compare forks option dropdown now shows repos in which you are a collaborator on instead of just repos you own.

Changed files
+20 -12
appview
db
pages
templates
repo
pulls
pulls
+8 -5
appview/db/repos.go
··· 467 var repos []Repo 468 469 rows, err := e.Query( 470 - `select did, name, knot, rkey, description, created, at_uri, source 471 - from repos 472 - where did = ? and source is not null and source != '' 473 - order by created desc`, 474 - did, 475 ) 476 if err != nil { 477 return nil, err
··· 467 var repos []Repo 468 469 rows, err := e.Query( 470 + `select distinct r.did, r.name, r.knot, r.rkey, r.description, r.created, r.at_uri, r.source 471 + from repos r 472 + left join collaborators c on r.at_uri = c.repo_at 473 + where (r.did = ? or c.subject_did = ?) 474 + and r.source is not null 475 + and r.source != '' 476 + order by r.created desc`, 477 + did, did, 478 ) 479 if err != nil { 480 return nil, err
+2 -2
appview/pages/templates/repo/pulls/fragments/pullCompareForks.html
··· 19 > 20 <option disabled selected>select a fork</option> 21 {{ range .Forks }} 22 - <option value="{{ .Name }}" {{ if eq .Name $.Selected }}selected{{ end }} class="py-1"> 23 - {{ .Name }} 24 </option> 25 {{ end }} 26 </select>
··· 19 > 20 <option disabled selected>select a fork</option> 21 {{ range .Forks }} 22 + <option value="{{ .Did }}/{{ .Name }}" {{ if eq .Name $.Selected }}selected{{ end }} class="py-1"> 23 + {{ .Did | resolve }}/{{ .Name }} 24 </option> 25 {{ end }} 26 </select>
+10 -5
appview/pulls/pulls.go
··· 852 } 853 854 func (s *Pulls) handleForkBasedPull(w http.ResponseWriter, r *http.Request, f *reporesolver.ResolvedRepo, user *oauth.User, forkRepo string, title, body, targetBranch, sourceBranch string, isStacked bool) { 855 - fork, err := db.GetForkByDid(s.db, user.Did, forkRepo) 856 if errors.Is(err, sql.ErrNoRows) { 857 s.pages.Notice(w, "pull", "No such fork.") 858 return ··· 883 return 884 } 885 886 - resp, err := sc.NewHiddenRef(user.Did, fork.Name, sourceBranch, targetBranch) 887 if err != nil { 888 log.Println("failed to create hidden ref:", err, resp.StatusCode) 889 s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") ··· 903 // hiddenRef: hidden/feature-1/main (on repo-fork) 904 // targetBranch: main (on repo-1) 905 // sourceBranch: feature-1 (on repo-fork) 906 - comparison, err := us.Compare(user.Did, fork.Name, hiddenRef, sourceBranch) 907 if err != nil { 908 log.Println("failed to compare across branches", err) 909 s.pages.Notice(w, "pull", err.Error()) ··· 1269 } 1270 1271 forkVal := r.URL.Query().Get("fork") 1272 - 1273 // fork repo 1274 - repo, err := db.GetRepo(s.db, user.Did, forkVal) 1275 if err != nil { 1276 log.Println("failed to get repo", user.Did, forkVal) 1277 return
··· 852 } 853 854 func (s *Pulls) handleForkBasedPull(w http.ResponseWriter, r *http.Request, f *reporesolver.ResolvedRepo, user *oauth.User, forkRepo string, title, body, targetBranch, sourceBranch string, isStacked bool) { 855 + repoString := strings.SplitN(forkRepo, "/", 2) 856 + forkOwnerDid := repoString[0] 857 + repoName := repoString[1] 858 + fork, err := db.GetForkByDid(s.db, forkOwnerDid, repoName) 859 if errors.Is(err, sql.ErrNoRows) { 860 s.pages.Notice(w, "pull", "No such fork.") 861 return ··· 886 return 887 } 888 889 + resp, err := sc.NewHiddenRef(fork.Did, fork.Name, sourceBranch, targetBranch) 890 if err != nil { 891 log.Println("failed to create hidden ref:", err, resp.StatusCode) 892 s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") ··· 906 // hiddenRef: hidden/feature-1/main (on repo-fork) 907 // targetBranch: main (on repo-1) 908 // sourceBranch: feature-1 (on repo-fork) 909 + comparison, err := us.Compare(fork.Did, fork.Name, hiddenRef, sourceBranch) 910 if err != nil { 911 log.Println("failed to compare across branches", err) 912 s.pages.Notice(w, "pull", err.Error()) ··· 1272 } 1273 1274 forkVal := r.URL.Query().Get("fork") 1275 + repoString := strings.SplitN(forkVal, "/", 2) 1276 + forkOwnerDid := repoString[0] 1277 + forkName := repoString[1] 1278 // fork repo 1279 + repo, err := db.GetRepo(s.db, forkOwnerDid, forkName) 1280 if err != nil { 1281 log.Println("failed to get repo", user.Did, forkVal) 1282 return