From edbf649706ae643621be04ffc0f42fe963ca20f3 Mon Sep 17 00:00:00 2001 From: Samuel Shuert Date: Tue, 12 Aug 2025 07:58:42 +0000 Subject: [PATCH] appview: db: update GetForksByDid function Change-Id: zkmkprovpuursmppkoukvtooyykpkotk Co-Authored-By: oppiliappan Signed-off-by: Samuel Shuert --- appview/db/repos.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/appview/db/repos.go b/appview/db/repos.go index dfd0c25..14ffac3 100644 --- a/appview/db/repos.go +++ b/appview/db/repos.go @@ -466,11 +466,14 @@ func GetForksByDid(e Execer, did string) ([]Repo, error) { var repos []Repo rows, err := e.Query( - `select did, name, knot, rkey, description, created, source - from repos - where did = ? and source is not null and source != '' - order by created desc`, - did, + `select distinct r.did, r.name, r.knot, r.rkey, r.description, r.created, r.source + from repos r + left join collaborators c on r.at_uri = c.repo_at + where (r.did = ? or c.subject_did = ?) + and r.source is not null + and r.source != '' + order by r.created desc`, + did, did, ) if err != nil { return nil, err -- 2.43.0 From ce723f81f20b39da9773fa18be771f4187951148 Mon Sep 17 00:00:00 2001 From: Samuel Shuert Date: Tue, 12 Aug 2025 07:58:42 +0000 Subject: [PATCH] appview: pages: update pr compare fork page Change-Id: nvwonuuosssxmnwvnuvnkolkmlwytmon Show fork titles in owner/repo format, otherwise if you have collaborator access to multiple forks of the same repo (in which the forks have the same title) it may be hard to differentiate Also update the underlying logic to use the option value instead of checking against the currently logged in users DID Co-Authored-By: oppiliappan Signed-off-by: Samuel Shuert --- .../repo/pulls/fragments/pullCompareForks.html | 4 ++-- appview/pulls/pulls.go | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/appview/pages/templates/repo/pulls/fragments/pullCompareForks.html b/appview/pages/templates/repo/pulls/fragments/pullCompareForks.html index 3dd7903..e48cd4e 100644 --- a/appview/pages/templates/repo/pulls/fragments/pullCompareForks.html +++ b/appview/pages/templates/repo/pulls/fragments/pullCompareForks.html @@ -19,8 +19,8 @@ > {{ range .Forks }} - {{ end }} diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 30ed20a..bf581c5 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -857,7 +857,10 @@ func (s *Pulls) handlePatchBasedPull(w http.ResponseWriter, r *http.Request, f * } 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) { - fork, err := db.GetForkByDid(s.db, user.Did, forkRepo) + repoString := strings.SplitN(forkRepo, "/", 2) + forkOwnerDid := repoString[0] + repoName := repoString[1] + fork, err := db.GetForkByDid(s.db, forkOwnerDid, repoName) if errors.Is(err, sql.ErrNoRows) { s.pages.Notice(w, "pull", "No such fork.") return @@ -888,7 +891,7 @@ func (s *Pulls) handleForkBasedPull(w http.ResponseWriter, r *http.Request, f *r return } - resp, err := sc.NewHiddenRef(user.Did, fork.Name, sourceBranch, targetBranch) + resp, err := sc.NewHiddenRef(fork.Did, fork.Name, sourceBranch, targetBranch) if err != nil { log.Println("failed to create hidden ref:", err, resp.StatusCode) s.pages.Notice(w, "pull", "Failed to create pull request. Try again later.") @@ -908,7 +911,7 @@ func (s *Pulls) handleForkBasedPull(w http.ResponseWriter, r *http.Request, f *r // hiddenRef: hidden/feature-1/main (on repo-fork) // targetBranch: main (on repo-1) // sourceBranch: feature-1 (on repo-fork) - comparison, err := us.Compare(user.Did, fork.Name, hiddenRef, sourceBranch) + comparison, err := us.Compare(fork.Did, fork.Name, hiddenRef, sourceBranch) if err != nil { log.Println("failed to compare across branches", err) s.pages.Notice(w, "pull", err.Error()) @@ -1270,9 +1273,11 @@ func (s *Pulls) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ } forkVal := r.URL.Query().Get("fork") - + repoString := strings.SplitN(forkVal, "/", 2) + forkOwnerDid := repoString[0] + forkName := repoString[1] // fork repo - repo, err := db.GetRepo(s.db, user.Did, forkVal) + repo, err := db.GetRepo(s.db, forkOwnerDid, forkName) if err != nil { log.Println("failed to get repo", user.Did, forkVal) return @@ -1285,7 +1290,7 @@ func (s *Pulls) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ return } - sourceResult, err := sourceBranchesClient.Branches(user.Did, repo.Name) + sourceResult, err := sourceBranchesClient.Branches(forkOwnerDid, repo.Name) if err != nil { log.Println("failed to reach knotserver for source branches", err) return -- 2.43.0