From 03f19089fccf130652df69deeaf2e63ca844f45c Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Mon, 17 Nov 2025 05:50:33 +0900 Subject: [PATCH] appview: remove use of all fields under `ResolvedRepo` Change-Id: ywstrtnkxznslqpvzmkuollvtvtswwoy Now `ResolvedRepo` is basically same to `models.Repo` so we can safely remove it. (not included in this commit to make change reviewable size.) Signed-off-by: Seongmin Lee --- appview/issues/issues.go | 50 ++++--------------- appview/pipelines/pipelines.go | 4 +- appview/pulls/pulls.go | 50 +++++-------------- appview/repo/artifact.go | 2 +- appview/repo/blob.go | 2 +- appview/repo/branches.go | 2 +- appview/repo/compare.go | 4 +- appview/repo/index.go | 4 +- appview/repo/log.go | 4 +- appview/repo/repo.go | 6 +-- appview/repo/settings.go | 6 +-- appview/repo/tags.go | 2 +- appview/repo/tree.go | 2 +- appview/reporesolver/resolver.go | 86 ++++++++++++++++---------------- 14 files changed, 84 insertions(+), 140 deletions(-) diff --git a/appview/issues/issues.go b/appview/issues/issues.go index 85bb4598..4342a5a5 100644 --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -119,7 +119,7 @@ func (rp *Issues) RepoSingleIssue(w http.ResponseWriter, r *http.Request) { rp.pages.RepoSingleIssue(w, pages.RepoSingleIssueParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, CommentList: issue.CommentList(), OrderedReactionKinds: models.OrderedReactionKinds, @@ -132,11 +132,6 @@ func (rp *Issues) RepoSingleIssue(w http.ResponseWriter, r *http.Request) { func (rp *Issues) EditIssue(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "EditIssue") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -149,7 +144,7 @@ func (rp *Issues) EditIssue(w http.ResponseWriter, r *http.Request) { case http.MethodGet: rp.pages.EditIssueFragment(w, pages.EditIssueParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, }) case http.MethodPost: @@ -470,11 +465,6 @@ func (rp *Issues) NewIssueComment(w http.ResponseWriter, r *http.Request) { func (rp *Issues) IssueComment(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "IssueComment") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -502,7 +492,7 @@ func (rp *Issues) IssueComment(w http.ResponseWriter, r *http.Request) { rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &comment, }) @@ -511,11 +501,6 @@ func (rp *Issues) IssueComment(w http.ResponseWriter, r *http.Request) { func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "EditIssueComment") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -551,7 +536,7 @@ func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { case http.MethodGet: rp.pages.EditIssueCommentFragment(w, pages.EditIssueCommentParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &comment, }) @@ -605,7 +590,7 @@ func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { // return new comment body with htmx rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &newComment, }) @@ -615,11 +600,6 @@ func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { func (rp *Issues) ReplyIssueCommentPlaceholder(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "ReplyIssueCommentPlaceholder") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -647,7 +627,7 @@ func (rp *Issues) ReplyIssueCommentPlaceholder(w http.ResponseWriter, r *http.Re rp.pages.ReplyIssueCommentPlaceholderFragment(w, pages.ReplyIssueCommentPlaceholderParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &comment, }) @@ -656,11 +636,6 @@ func (rp *Issues) ReplyIssueCommentPlaceholder(w http.ResponseWriter, r *http.Re func (rp *Issues) ReplyIssueComment(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "ReplyIssueComment") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -688,7 +663,7 @@ func (rp *Issues) ReplyIssueComment(w http.ResponseWriter, r *http.Request) { rp.pages.ReplyIssueCommentFragment(w, pages.ReplyIssueCommentParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &comment, }) @@ -697,11 +672,6 @@ func (rp *Issues) ReplyIssueComment(w http.ResponseWriter, r *http.Request) { func (rp *Issues) DeleteIssueComment(w http.ResponseWriter, r *http.Request) { l := rp.logger.With("handler", "DeleteIssueComment") user := rp.oauth.GetUser(r) - f, err := rp.repoResolver.Resolve(r) - if err != nil { - l.Error("failed to get repo and knot", "err", err) - return - } issue, ok := r.Context().Value("issue").(*models.Issue) if !ok { @@ -772,7 +742,7 @@ func (rp *Issues) DeleteIssueComment(w http.ResponseWriter, r *http.Request) { // htmx fragment of comment after deletion rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issue: issue, Comment: &comment, }) @@ -873,7 +843,7 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { rp.pages.RepoIssues(w, pages.RepoIssuesParams{ LoggedInUser: rp.oauth.GetUser(r), - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Issues: issues, IssueCount: totalIssues, LabelDefs: defs, @@ -897,7 +867,7 @@ func (rp *Issues) NewIssue(w http.ResponseWriter, r *http.Request) { case http.MethodGet: rp.pages.RepoNewIssue(w, pages.RepoNewIssueParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), }) case http.MethodPost: issue := &models.Issue{ diff --git a/appview/pipelines/pipelines.go b/appview/pipelines/pipelines.go index 44b74753..4e6b3c6e 100644 --- a/appview/pipelines/pipelines.go +++ b/appview/pipelines/pipelines.go @@ -92,7 +92,7 @@ func (p *Pipelines) Index(w http.ResponseWriter, r *http.Request) { p.pages.Pipelines(w, pages.PipelinesParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: p.repoResolver.GetRepoInfo(r, user), Pipelines: ps, }) } @@ -141,7 +141,7 @@ func (p *Pipelines) Workflow(w http.ResponseWriter, r *http.Request) { p.pages.Workflow(w, pages.WorkflowParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: p.repoResolver.GetRepoInfo(r, user), Pipeline: singlePipeline, Workflow: workflow, }) diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 0f8901d1..988b602f 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -124,7 +124,7 @@ func (s *Pulls) PullActions(w http.ResponseWriter, r *http.Request) { s.pages.PullActionsFragment(w, pages.PullActionsParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, RoundNumber: roundNumber, MergeCheck: mergeCheckResponse, @@ -221,7 +221,7 @@ func (s *Pulls) RepoSinglePull(w http.ResponseWriter, r *http.Request) { s.pages.RepoSinglePull(w, pages.RepoSinglePullParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, Stack: stack, AbandonedPulls: abandonedPulls, @@ -421,11 +421,6 @@ func (s *Pulls) resubmitCheck(r *http.Request, repo *models.Repo, pull *models.P func (s *Pulls) RepoPullPatch(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) - f, err := s.repoResolver.Resolve(r) - if err != nil { - log.Println("failed to get repo and knot", err) - return - } var diffOpts types.DiffOpts if d := r.URL.Query().Get("diff"); d == "split" { @@ -454,7 +449,7 @@ func (s *Pulls) RepoPullPatch(w http.ResponseWriter, r *http.Request) { s.pages.RepoPullPatchPage(w, pages.RepoPullPatchParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, Stack: stack, Round: roundIdInt, @@ -468,12 +463,6 @@ func (s *Pulls) RepoPullPatch(w http.ResponseWriter, r *http.Request) { func (s *Pulls) RepoPullInterdiff(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) - f, err := s.repoResolver.Resolve(r) - if err != nil { - log.Println("failed to get repo and knot", err) - return - } - var diffOpts types.DiffOpts if d := r.URL.Query().Get("diff"); d == "split" { diffOpts.Split = true @@ -518,7 +507,7 @@ func (s *Pulls) RepoPullInterdiff(w http.ResponseWriter, r *http.Request) { s.pages.RepoPullInterdiffPage(w, pages.RepoPullInterdiffParams{ LoggedInUser: s.oauth.GetUser(r), - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, Round: roundIdInt, Interdiff: interdiff, @@ -678,7 +667,7 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { s.pages.RepoPulls(w, pages.RepoPullsParams{ LoggedInUser: s.oauth.GetUser(r), - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pulls: pulls, LabelDefs: defs, FilteringBy: state, @@ -716,7 +705,7 @@ func (s *Pulls) PullComment(w http.ResponseWriter, r *http.Request) { case http.MethodGet: s.pages.PullNewCommentFragment(w, pages.PullNewCommentParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, RoundNumber: roundNumber, }) @@ -850,7 +839,7 @@ func (s *Pulls) NewPull(w http.ResponseWriter, r *http.Request) { s.pages.RepoNewPull(w, pages.RepoNewPullParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Branches: result.Branches, Strategy: strategy, SourceBranch: sourceBranch, @@ -1405,14 +1394,9 @@ func (s *Pulls) ValidatePatch(w http.ResponseWriter, r *http.Request) { func (s *Pulls) PatchUploadFragment(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) - f, err := s.repoResolver.Resolve(r) - if err != nil { - log.Println("failed to get repo and knot", err) - return - } s.pages.PullPatchUploadFragment(w, pages.PullPatchUploadParams{ - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), }) } @@ -1466,18 +1450,13 @@ func (s *Pulls) CompareBranchesFragment(w http.ResponseWriter, r *http.Request) } s.pages.PullCompareBranchesFragment(w, pages.PullCompareBranchesParams{ - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Branches: withoutDefault, }) } func (s *Pulls) CompareForksFragment(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) - f, err := s.repoResolver.Resolve(r) - if err != nil { - log.Println("failed to get repo and knot", err) - return - } forks, err := db.GetForksByDid(s.db, user.Did) if err != nil { @@ -1486,7 +1465,7 @@ func (s *Pulls) CompareForksFragment(w http.ResponseWriter, r *http.Request) { } s.pages.PullCompareForkFragment(w, pages.PullCompareForkParams{ - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Forks: forks, Selected: r.URL.Query().Get("fork"), }) @@ -1579,7 +1558,7 @@ func (s *Pulls) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ }) s.pages.PullCompareForkBranchesFragment(w, pages.PullCompareForkBranchesParams{ - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), SourceBranches: sourceBranches.Branches, TargetBranches: targetBranches.Branches, }) @@ -1587,11 +1566,6 @@ func (s *Pulls) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ func (s *Pulls) ResubmitPull(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) - f, err := s.repoResolver.Resolve(r) - if err != nil { - log.Println("failed to get repo and knot", err) - return - } pull, ok := r.Context().Value("pull").(*models.Pull) if !ok { @@ -1603,7 +1577,7 @@ func (s *Pulls) ResubmitPull(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: s.pages.PullResubmitFragment(w, pages.PullResubmitParams{ - RepoInfo: f.RepoInfo(user), + RepoInfo: s.repoResolver.GetRepoInfo(r, user), Pull: pull, }) return diff --git a/appview/repo/artifact.go b/appview/repo/artifact.go index 6d524aae..4f90d995 100644 --- a/appview/repo/artifact.go +++ b/appview/repo/artifact.go @@ -130,7 +130,7 @@ func (rp *Repo) AttachArtifact(w http.ResponseWriter, r *http.Request) { rp.pages.RepoArtifactFragment(w, pages.RepoArtifactParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Artifact: artifact, }) } diff --git a/appview/repo/blob.go b/appview/repo/blob.go index 3ae9fe57..4bea6c6d 100644 --- a/appview/repo/blob.go +++ b/appview/repo/blob.go @@ -80,7 +80,7 @@ func (rp *Repo) Blob(w http.ResponseWriter, r *http.Request) { rp.pages.RepoBlob(w, pages.RepoBlobParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), BreadCrumbs: breadcrumbs, BlobView: blobView, RepoBlob_Output: resp, diff --git a/appview/repo/branches.go b/appview/repo/branches.go index 74c09cae..be74c0de 100644 --- a/appview/repo/branches.go +++ b/appview/repo/branches.go @@ -46,7 +46,7 @@ func (rp *Repo) Branches(w http.ResponseWriter, r *http.Request) { user := rp.oauth.GetUser(r) rp.pages.RepoBranches(w, pages.RepoBranchesParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), RepoBranchesResponse: result, }) } diff --git a/appview/repo/compare.go b/appview/repo/compare.go index 88b6d89e..3d00a6cd 100644 --- a/appview/repo/compare.go +++ b/appview/repo/compare.go @@ -90,7 +90,7 @@ func (rp *Repo) CompareNew(w http.ResponseWriter, r *http.Request) { rp.pages.RepoCompareNew(w, pages.RepoCompareNewParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Branches: branches, Tags: tags.Tags, Base: base, @@ -202,7 +202,7 @@ func (rp *Repo) Compare(w http.ResponseWriter, r *http.Request) { rp.pages.RepoCompare(w, pages.RepoCompareParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Branches: branches.Branches, Tags: tags.Tags, Base: base, diff --git a/appview/repo/index.go b/appview/repo/index.go index b2e5b0d4..cf8ced32 100644 --- a/appview/repo/index.go +++ b/appview/repo/index.go @@ -60,7 +60,7 @@ func (rp *Repo) Index(w http.ResponseWriter, r *http.Request) { rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ LoggedInUser: user, NeedsKnotUpgrade: true, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), }) return } @@ -146,7 +146,7 @@ func (rp *Repo) Index(w http.ResponseWriter, r *http.Request) { rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), TagMap: tagMap, RepoIndexResponse: *result, CommitsTrunc: commitsTrunc, diff --git a/appview/repo/log.go b/appview/repo/log.go index 5d2cea96..20e2d1d4 100644 --- a/appview/repo/log.go +++ b/appview/repo/log.go @@ -134,7 +134,7 @@ func (rp *Repo) Log(w http.ResponseWriter, r *http.Request) { rp.pages.RepoLog(w, pages.RepoLogParams{ LoggedInUser: user, TagMap: tagMap, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), RepoLogResponse: xrpcResp, EmailToDid: emailToDidMap, VerifiedCommits: vc, @@ -210,7 +210,7 @@ func (rp *Repo) Commit(w http.ResponseWriter, r *http.Request) { rp.pages.RepoCommit(w, pages.RepoCommitParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), RepoCommitResponse: result, EmailToDid: emailToDidMap, VerifiedCommit: vc, diff --git a/appview/repo/repo.go b/appview/repo/repo.go index 069f8536..5c8ccbe9 100644 --- a/appview/repo/repo.go +++ b/appview/repo/repo.go @@ -635,7 +635,7 @@ func (rp *Repo) LabelPanel(w http.ResponseWriter, r *http.Request) { user := rp.oauth.GetUser(r) rp.pages.LabelPanel(w, pages.LabelPanelParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Defs: defs, Subject: subject.String(), State: state, @@ -683,7 +683,7 @@ func (rp *Repo) EditLabelPanel(w http.ResponseWriter, r *http.Request) { user := rp.oauth.GetUser(r) rp.pages.EditLabelPanel(w, pages.EditLabelPanelParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Defs: defs, Subject: subject.String(), State: state, @@ -1006,7 +1006,7 @@ func (rp *Repo) ForkRepo(w http.ResponseWriter, r *http.Request) { rp.pages.ForkRepo(w, pages.ForkRepoParams{ LoggedInUser: user, Knots: knots, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), }) case http.MethodPost: diff --git a/appview/repo/settings.go b/appview/repo/settings.go index 60de68b8..646f828f 100644 --- a/appview/repo/settings.go +++ b/appview/repo/settings.go @@ -255,7 +255,7 @@ func (rp *Repo) generalSettings(w http.ResponseWriter, r *http.Request) { rp.pages.RepoGeneralSettings(w, pages.RepoGeneralSettingsParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Branches: result.Branches, Labels: labels, DefaultLabels: defaultLabels, @@ -306,7 +306,7 @@ func (rp *Repo) accessSettings(w http.ResponseWriter, r *http.Request) { rp.pages.RepoAccessSettings(w, pages.RepoAccessSettingsParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Tabs: settingsTabs, Tab: "access", Collaborators: collaborators, @@ -367,7 +367,7 @@ func (rp *Repo) pipelineSettings(w http.ResponseWriter, r *http.Request) { rp.pages.RepoPipelineSettings(w, pages.RepoPipelineSettingsParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), Tabs: settingsTabs, Tab: "pipelines", Spindles: spindles, diff --git a/appview/repo/tags.go b/appview/repo/tags.go index 2737f881..6319795d 100644 --- a/appview/repo/tags.go +++ b/appview/repo/tags.go @@ -71,7 +71,7 @@ func (rp *Repo) Tags(w http.ResponseWriter, r *http.Request) { user := rp.oauth.GetUser(r) rp.pages.RepoTags(w, pages.RepoTagsParams{ LoggedInUser: user, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), RepoTagsResponse: result, ArtifactMap: artifactMap, DanglingArtifacts: danglingArtifacts, diff --git a/appview/repo/tree.go b/appview/repo/tree.go index 17a7bb9a..328dbc78 100644 --- a/appview/repo/tree.go +++ b/appview/repo/tree.go @@ -102,7 +102,7 @@ func (rp *Repo) Tree(w http.ResponseWriter, r *http.Request) { LoggedInUser: user, BreadCrumbs: breadcrumbs, TreePath: treePath, - RepoInfo: f.RepoInfo(user), + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), RepoTreeResponse: result, }) } diff --git a/appview/reporesolver/resolver.go b/appview/reporesolver/resolver.go index 078b8c10..3c017bb2 100644 --- a/appview/reporesolver/resolver.go +++ b/appview/reporesolver/resolver.go @@ -20,11 +20,6 @@ import ( type ResolvedRepo struct { models.Repo - OwnerId identity.Identity - CurrentDir string - Ref string - - rr *RepoResolver } type RepoResolver struct { @@ -49,53 +44,53 @@ func GetBaseRepoPath(r *http.Request, repo *models.Repo) string { return path.Join(user, name) } +// TODO: move this out of `RepoResolver` struct func (rr *RepoResolver) Resolve(r *http.Request) (*ResolvedRepo, error) { repo, ok := r.Context().Value("repo").(*models.Repo) if !ok { log.Println("malformed middleware: `repo` not exist in context") return nil, fmt.Errorf("malformed middleware") } - id, ok := r.Context().Value("resolvedId").(identity.Identity) - if !ok { - log.Println("malformed middleware") - return nil, fmt.Errorf("malformed middleware") - } - - currentDir := path.Dir(extractPathAfterRef(r.URL.EscapedPath())) - ref := chi.URLParam(r, "ref") return &ResolvedRepo{ - Repo: *repo, - OwnerId: id, - CurrentDir: currentDir, - Ref: ref, - - rr: rr, + Repo: *repo, }, nil } -// this function is a bit weird since it now returns RepoInfo from an entirely different -// package. we should refactor this or get rid of RepoInfo entirely. -func (f *ResolvedRepo) RepoInfo(user *oauth.User) repoinfo.RepoInfo { - repoAt := f.RepoAt() +// 1. [x] replace `RepoInfo` to `reporesolver.GetRepoInfo(r *http.Request, repo, user)` +// 2. [x] remove `rr`, `CurrentDir`, `Ref` fields from `ResolvedRepo` +// 3. [ ] remove `ResolvedRepo` +// 4. [ ] replace reporesolver to reposervice +func (rr *RepoResolver) GetRepoInfo(r *http.Request, user *oauth.User) repoinfo.RepoInfo { + ownerId, ook := r.Context().Value("resolvedId").(identity.Identity) + repo, rok := r.Context().Value("repo").(*models.Repo) + if !ook || !rok { + log.Println("malformed request, failed to get repo from context") + } + + // get dir/ref + currentDir := path.Dir(extractPathAfterRef(r.URL.EscapedPath())) + ref := chi.URLParam(r, "ref") + + repoAt := repo.RepoAt() isStarred := false roles := repoinfo.RolesInRepo{} if user != nil { - isStarred = db.GetStarStatus(f.rr.execer, user.Did, repoAt) - roles.Roles = f.rr.enforcer.GetPermissionsInRepo(user.Did, f.Knot, f.DidSlashRepo()) + isStarred = db.GetStarStatus(rr.execer, user.Did, repoAt) + roles.Roles = rr.enforcer.GetPermissionsInRepo(user.Did, repo.Knot, repo.DidSlashRepo()) } - stats := f.RepoStats + stats := repo.RepoStats if stats == nil { - starCount, err := db.GetStarCount(f.rr.execer, repoAt) + starCount, err := db.GetStarCount(rr.execer, repoAt) if err != nil { log.Println("failed to get star count for ", repoAt) } - issueCount, err := db.GetIssueCount(f.rr.execer, repoAt) + issueCount, err := db.GetIssueCount(rr.execer, repoAt) if err != nil { log.Println("failed to get issue count for ", repoAt) } - pullCount, err := db.GetPullCount(f.rr.execer, repoAt) + pullCount, err := db.GetPullCount(rr.execer, repoAt) if err != nil { log.Println("failed to get pull count for ", repoAt) } @@ -106,29 +101,34 @@ func (f *ResolvedRepo) RepoInfo(user *oauth.User) repoinfo.RepoInfo { } } - sourceRepo, err := db.GetRepoSourceRepo(f.rr.execer, repoAt) - if err != nil { - log.Println("failed to get repo by at uri", err) + var sourceRepo *models.Repo + var err error + if repo.Source != "" { + sourceRepo, err = db.GetRepoByAtUri(rr.execer, repo.Source) + if err != nil { + log.Println("failed to get repo by at uri", err) + } } repoInfo := repoinfo.RepoInfo{ // this is basically a models.Repo - OwnerDid: f.OwnerId.DID.String(), - OwnerHandle: f.OwnerId.Handle.String(), - Name: f.Name, - Rkey: f.Rkey, - Description: f.Description, - Website: f.Website, - Topics: f.Topics, - Knot: f.Knot, - Spindle: f.Spindle, + OwnerDid: ownerId.DID.String(), + OwnerHandle: ownerId.Handle.String(), + Name: repo.Name, + Rkey: repo.Rkey, + Description: repo.Description, + Website: repo.Website, + Topics: repo.Topics, + Knot: repo.Knot, + Spindle: repo.Spindle, Stats: *stats, // fork repo upstream Source: sourceRepo, - CurrentDir: f.CurrentDir, - Ref: f.Ref, + // page context + CurrentDir: currentDir, + Ref: ref, // info related to the session IsStarred: isStarred, -- 2.43.0