From cdc4ebf7cb59e2b75b15405606137a6989115262 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Mon, 17 Nov 2025 19:43:42 +0900 Subject: [PATCH] appview: remove `ResolvedRepo` for eternity Change-Id: wwunnkuoxvqpkmuzxpyppqxquovnxknm Signed-off-by: Seongmin Lee --- appview/issues/issues.go | 16 +++++++------- appview/issues/opengraph.go | 6 +++--- appview/middleware/middleware.go | 2 +- appview/pulls/opengraph.go | 2 +- appview/pulls/pulls.go | 36 ++++++++++++++++---------------- appview/repo/artifact.go | 4 ++-- appview/repo/blob.go | 8 +++---- appview/repo/feed.go | 2 +- appview/repo/index.go | 6 +++--- appview/repo/log.go | 4 ++-- appview/repo/opengraph.go | 2 +- appview/repo/repo.go | 22 +++++++++---------- appview/repo/settings.go | 8 +++---- appview/repo/tree.go | 2 +- appview/reporesolver/resolver.go | 12 +++-------- 15 files changed, 63 insertions(+), 69 deletions(-) diff --git a/appview/issues/issues.go b/appview/issues/issues.go index 4342a5a5..79eadffd 100644 --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -103,7 +103,7 @@ func (rp *Issues) RepoSingleIssue(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( rp.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", tangled.RepoIssueNSID), ) if err != nil { @@ -264,7 +264,7 @@ func (rp *Issues) DeleteIssue(w http.ResponseWriter, r *http.Request) { rp.notifier.DeleteIssue(r.Context(), issue) // return to all issues page - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) rp.pages.HxRedirect(w, "/"+ownerSlashRepo+"/issues") } @@ -306,7 +306,7 @@ func (rp *Issues) CloseIssue(w http.ResponseWriter, r *http.Request) { // notify about the issue closure rp.notifier.NewIssueState(r.Context(), syntax.DID(user.Did), issue) - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) rp.pages.HxLocation(w, fmt.Sprintf("/%s/issues/%d", ownerSlashRepo, issue.IssueId)) return } else { @@ -353,7 +353,7 @@ func (rp *Issues) ReopenIssue(w http.ResponseWriter, r *http.Request) { // notify about the issue reopen rp.notifier.NewIssueState(r.Context(), syntax.DID(user.Did), issue) - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) rp.pages.HxLocation(w, fmt.Sprintf("/%s/issues/%d", ownerSlashRepo, issue.IssueId)) return } else { @@ -458,7 +458,7 @@ func (rp *Issues) NewIssueComment(w http.ResponseWriter, r *http.Request) { } rp.notifier.NewIssueComment(r.Context(), &comment, mentions) - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) rp.pages.HxLocation(w, fmt.Sprintf("/%s/issues/%d#comment-%d", ownerSlashRepo, issue.IssueId, commentId)) } @@ -827,7 +827,7 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( rp.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", tangled.RepoIssueNSID), ) if err != nil { @@ -878,7 +878,7 @@ func (rp *Issues) NewIssue(w http.ResponseWriter, r *http.Request) { Open: true, Did: user.Did, Created: time.Now(), - Repo: &f.Repo, + Repo: f, } if err := rp.validator.ValidateIssue(issue); err != nil { @@ -957,7 +957,7 @@ func (rp *Issues) NewIssue(w http.ResponseWriter, r *http.Request) { } rp.notifier.NewIssue(r.Context(), issue, mentions) - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) rp.pages.HxLocation(w, fmt.Sprintf("/%s/issues/%d", ownerSlashRepo, issue.IssueId)) return } diff --git a/appview/issues/opengraph.go b/appview/issues/opengraph.go index 315cad2c..a23cea80 100644 --- a/appview/issues/opengraph.go +++ b/appview/issues/opengraph.go @@ -232,14 +232,14 @@ func (rp *Issues) IssueOpenGraphSummary(w http.ResponseWriter, r *http.Request) // Get owner handle for avatar var ownerHandle string - owner, err := rp.idResolver.ResolveIdent(r.Context(), f.Repo.Did) + owner, err := rp.idResolver.ResolveIdent(r.Context(), f.Did) if err != nil { - ownerHandle = f.Repo.Did + ownerHandle = f.Did } else { ownerHandle = "@" + owner.Handle.String() } - card, err := rp.drawIssueSummaryCard(issue, &f.Repo, commentCount, ownerHandle) + card, err := rp.drawIssueSummaryCard(issue, f, commentCount, ownerHandle) if err != nil { log.Println("failed to draw issue summary card", err) http.Error(w, "failed to draw issue summary card", http.StatusInternalServerError) diff --git a/appview/middleware/middleware.go b/appview/middleware/middleware.go index f4866abd..41b6a05c 100644 --- a/appview/middleware/middleware.go +++ b/appview/middleware/middleware.go @@ -327,7 +327,7 @@ func (mw Middleware) GoImport() middlewareFunc { return } - fullName := reporesolver.GetBaseRepoPath(r, &f.Repo) + fullName := reporesolver.GetBaseRepoPath(r, f) if r.Header.Get("User-Agent") == "Go-http-client/1.1" { if r.URL.Query().Get("go-get") == "1" { diff --git a/appview/pulls/opengraph.go b/appview/pulls/opengraph.go index c05619ae..c0b4bdd2 100644 --- a/appview/pulls/opengraph.go +++ b/appview/pulls/opengraph.go @@ -293,7 +293,7 @@ func (s *Pulls) PullOpenGraphSummary(w http.ResponseWriter, r *http.Request) { filesChanged = niceDiff.Stat.FilesChanged } - card, err := s.drawPullSummaryCard(pull, &f.Repo, commentCount, diffStats, filesChanged) + card, err := s.drawPullSummaryCard(pull, f, commentCount, diffStats, filesChanged) if err != nil { log.Println("failed to draw pull summary card", err) http.Error(w, "failed to draw pull summary card", http.StatusInternalServerError) diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 988b602f..cceaf908 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -115,11 +115,11 @@ func (s *Pulls) PullActions(w http.ResponseWriter, r *http.Request) { return } - mergeCheckResponse := s.mergeCheck(r, &f.Repo, pull, stack) - branchDeleteStatus := s.branchDeleteStatus(r, &f.Repo, pull) + mergeCheckResponse := s.mergeCheck(r, f, pull, stack) + branchDeleteStatus := s.branchDeleteStatus(r, f, pull) resubmitResult := pages.Unknown if user.Did == pull.OwnerDid { - resubmitResult = s.resubmitCheck(r, &f.Repo, pull, stack) + resubmitResult = s.resubmitCheck(r, f, pull, stack) } s.pages.PullActionsFragment(w, pages.PullActionsParams{ @@ -155,11 +155,11 @@ func (s *Pulls) RepoSinglePull(w http.ResponseWriter, r *http.Request) { stack, _ := r.Context().Value("stack").(models.Stack) abandonedPulls, _ := r.Context().Value("abandonedPulls").([]*models.Pull) - mergeCheckResponse := s.mergeCheck(r, &f.Repo, pull, stack) - branchDeleteStatus := s.branchDeleteStatus(r, &f.Repo, pull) + mergeCheckResponse := s.mergeCheck(r, f, pull, stack) + branchDeleteStatus := s.branchDeleteStatus(r, f, pull) resubmitResult := pages.Unknown if user != nil && user.Did == pull.OwnerDid { - resubmitResult = s.resubmitCheck(r, &f.Repo, pull, stack) + resubmitResult = s.resubmitCheck(r, f, pull, stack) } m := make(map[string]models.Pipeline) @@ -205,7 +205,7 @@ func (s *Pulls) RepoSinglePull(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( s.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", tangled.RepoPullNSID), ) if err != nil { @@ -651,7 +651,7 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( s.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", tangled.RepoPullNSID), ) if err != nil { @@ -787,7 +787,7 @@ func (s *Pulls) PullComment(w http.ResponseWriter, r *http.Request) { } s.notifier.NewPullComment(r.Context(), comment, mentions) - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) s.pages.HxLocation(w, fmt.Sprintf("/%s/pulls/%d#comment-%d", ownerSlashRepo, pull.PullId, commentId)) return } @@ -940,19 +940,19 @@ func (s *Pulls) NewPull(w http.ResponseWriter, r *http.Request) { s.pages.Notice(w, "pull", "This knot doesn't support branch-based pull requests. Try another way?") return } - s.handleBranchBasedPull(w, r, &f.Repo, user, title, body, targetBranch, sourceBranch, isStacked) + s.handleBranchBasedPull(w, r, f, user, title, body, targetBranch, sourceBranch, isStacked) } else if isForkBased { if !caps.PullRequests.ForkSubmissions { s.pages.Notice(w, "pull", "This knot doesn't support fork-based pull requests. Try another way?") return } - s.handleForkBasedPull(w, r, &f.Repo, user, fromFork, title, body, targetBranch, sourceBranch, isStacked) + s.handleForkBasedPull(w, r, f, user, fromFork, title, body, targetBranch, sourceBranch, isStacked) } else if isPatchBased { if !caps.PullRequests.PatchSubmissions { s.pages.Notice(w, "pull", "This knot doesn't support patch-based pull requests. Send your patch over email.") return } - s.handlePatchBasedPull(w, r, &f.Repo, user, title, body, targetBranch, patch, isStacked) + s.handlePatchBasedPull(w, r, f, user, title, body, targetBranch, patch, isStacked) } return } @@ -1619,7 +1619,7 @@ func (s *Pulls) resubmitPatch(w http.ResponseWriter, r *http.Request) { patch := r.FormValue("patch") - s.resubmitPullHelper(w, r, &f.Repo, user, pull, patch, "", "") + s.resubmitPullHelper(w, r, f, user, pull, patch, "", "") } func (s *Pulls) resubmitBranch(w http.ResponseWriter, r *http.Request) { @@ -1684,7 +1684,7 @@ func (s *Pulls) resubmitBranch(w http.ResponseWriter, r *http.Request) { patch := comparison.FormatPatchRaw combined := comparison.CombinedPatchRaw - s.resubmitPullHelper(w, r, &f.Repo, user, pull, patch, combined, sourceRev) + s.resubmitPullHelper(w, r, f, user, pull, patch, combined, sourceRev) } func (s *Pulls) resubmitFork(w http.ResponseWriter, r *http.Request) { @@ -1781,7 +1781,7 @@ func (s *Pulls) resubmitFork(w http.ResponseWriter, r *http.Request) { patch := comparison.FormatPatchRaw combined := comparison.CombinedPatchRaw - s.resubmitPullHelper(w, r, &f.Repo, user, pull, patch, combined, sourceRev) + s.resubmitPullHelper(w, r, f, user, pull, patch, combined, sourceRev) } func (s *Pulls) resubmitPullHelper( @@ -2210,7 +2210,7 @@ func (s *Pulls) MergePull(w http.ResponseWriter, r *http.Request) { s.notifier.NewPullState(r.Context(), syntax.DID(user.Did), p) } - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) s.pages.HxLocation(w, fmt.Sprintf("/%s/pulls/%d", ownerSlashRepo, pull.PullId)) } @@ -2283,7 +2283,7 @@ func (s *Pulls) ClosePull(w http.ResponseWriter, r *http.Request) { s.notifier.NewPullState(r.Context(), syntax.DID(user.Did), p) } - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) s.pages.HxLocation(w, fmt.Sprintf("/%s/pulls/%d", ownerSlashRepo, pull.PullId)) } @@ -2357,7 +2357,7 @@ func (s *Pulls) ReopenPull(w http.ResponseWriter, r *http.Request) { s.notifier.NewPullState(r.Context(), syntax.DID(user.Did), p) } - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) s.pages.HxLocation(w, fmt.Sprintf("/%s/pulls/%d", ownerSlashRepo, pull.PullId)) } diff --git a/appview/repo/artifact.go b/appview/repo/artifact.go index 4f90d995..00d2ca56 100644 --- a/appview/repo/artifact.go +++ b/appview/repo/artifact.go @@ -38,7 +38,7 @@ func (rp *Repo) AttachArtifact(w http.ResponseWriter, r *http.Request) { return } - tag, err := rp.resolveTag(r.Context(), &f.Repo, tagParam) + tag, err := rp.resolveTag(r.Context(), f, tagParam) if err != nil { log.Println("failed to resolve tag", err) rp.pages.Notice(w, "upload", "failed to upload artifact, error in tag resolution") @@ -146,7 +146,7 @@ func (rp *Repo) DownloadArtifact(w http.ResponseWriter, r *http.Request) { tagParam := chi.URLParam(r, "tag") filename := chi.URLParam(r, "file") - tag, err := rp.resolveTag(r.Context(), &f.Repo, tagParam) + tag, err := rp.resolveTag(r.Context(), f, tagParam) if err != nil { log.Println("failed to resolve tag", err) rp.pages.Notice(w, "upload", "failed to upload artifact, error in tag resolution") diff --git a/appview/repo/blob.go b/appview/repo/blob.go index 4bea6c6d..c4b15806 100644 --- a/appview/repo/blob.go +++ b/appview/repo/blob.go @@ -54,7 +54,7 @@ func (rp *Repo) Blob(w http.ResponseWriter, r *http.Request) { xrpcc := &indigoxrpc.Client{ Host: host, } - repo := fmt.Sprintf("%s/%s", f.Did, f.Repo.Name) + repo := fmt.Sprintf("%s/%s", f.Did, f.Name) resp, err := tangled.RepoBlob(r.Context(), xrpcc, filePath, false, ref, repo) if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { l.Error("failed to call XRPC repo.blob", "err", xrpcerr) @@ -62,7 +62,7 @@ func (rp *Repo) Blob(w http.ResponseWriter, r *http.Request) { return } - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) // Use XRPC response directly instead of converting to internal types var breadcrumbs [][]string @@ -74,7 +74,7 @@ func (rp *Repo) Blob(w http.ResponseWriter, r *http.Request) { } // Create the blob view - blobView := NewBlobView(resp, rp.config, &f.Repo, ref, filePath, r.URL.Query()) + blobView := NewBlobView(resp, rp.config, f, ref, filePath, r.URL.Query()) user := rp.oauth.GetUser(r) @@ -107,7 +107,7 @@ func (rp *Repo) RepoBlobRaw(w http.ResponseWriter, r *http.Request) { if !rp.config.Core.Dev { scheme = "https" } - repo := fmt.Sprintf("%s/%s", f.Did, f.Repo.Name) + repo := f.DidSlashRepo() baseURL := &url.URL{ Scheme: scheme, Host: f.Knot, diff --git a/appview/repo/feed.go b/appview/repo/feed.go index 90de0f14..5a6a124b 100644 --- a/appview/repo/feed.go +++ b/appview/repo/feed.go @@ -159,7 +159,7 @@ func (rp *Repo) AtomFeed(w http.ResponseWriter, r *http.Request) { } ownerSlashRepo := repoOwnerId.Handle.String() + "/" + f.Name - feed, err := rp.getRepoFeed(r.Context(), &f.Repo, ownerSlashRepo) + feed, err := rp.getRepoFeed(r.Context(), f, ownerSlashRepo) if err != nil { log.Println("failed to get repo feed:", err) rp.pages.Error500(w) diff --git a/appview/repo/index.go b/appview/repo/index.go index cf8ced32..8954494f 100644 --- a/appview/repo/index.go +++ b/appview/repo/index.go @@ -53,7 +53,7 @@ func (rp *Repo) Index(w http.ResponseWriter, r *http.Request) { user := rp.oauth.GetUser(r) // Build index response from multiple XRPC calls - result, err := rp.buildIndexResponse(r.Context(), xrpcc, &f.Repo, ref) + result, err := rp.buildIndexResponse(r.Context(), xrpcc, f, ref) if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil { if errors.Is(xrpcerr, xrpcclient.ErrXrpcUnsupported) { l.Error("failed to call XRPC repo.index", "err", err) @@ -128,7 +128,7 @@ func (rp *Repo) Index(w http.ResponseWriter, r *http.Request) { } // TODO: a bit dirty - languageInfo, err := rp.getLanguageInfo(r.Context(), l, &f.Repo, xrpcc, result.Ref, ref == "") + languageInfo, err := rp.getLanguageInfo(r.Context(), l, f, xrpcc, result.Ref, ref == "") if err != nil { l.Warn("failed to compute language percentages", "err", err) // non-fatal @@ -138,7 +138,7 @@ func (rp *Repo) Index(w http.ResponseWriter, r *http.Request) { for _, c := range commitsTrunc { shas = append(shas, c.Hash.String()) } - pipelines, err := getPipelineStatuses(rp.db, &f.Repo, shas) + pipelines, err := getPipelineStatuses(rp.db, f, shas) if err != nil { l.Error("failed to fetch pipeline statuses", "err", err) // non-fatal diff --git a/appview/repo/log.go b/appview/repo/log.go index 20e2d1d4..9607a902 100644 --- a/appview/repo/log.go +++ b/appview/repo/log.go @@ -125,7 +125,7 @@ func (rp *Repo) Log(w http.ResponseWriter, r *http.Request) { for _, c := range xrpcResp.Commits { shas = append(shas, c.Hash.String()) } - pipelines, err := getPipelineStatuses(rp.db, &f.Repo, shas) + pipelines, err := getPipelineStatuses(rp.db, f, shas) if err != nil { l.Error("failed to getPipelineStatuses", "err", err) // non-fatal @@ -198,7 +198,7 @@ func (rp *Repo) Commit(w http.ResponseWriter, r *http.Request) { } user := rp.oauth.GetUser(r) - pipelines, err := getPipelineStatuses(rp.db, &f.Repo, []string{result.Diff.Commit.This}) + pipelines, err := getPipelineStatuses(rp.db, f, []string{result.Diff.Commit.This}) if err != nil { l.Error("failed to getPipelineStatuses", "err", err) // non-fatal diff --git a/appview/repo/opengraph.go b/appview/repo/opengraph.go index 37871344..9e766208 100644 --- a/appview/repo/opengraph.go +++ b/appview/repo/opengraph.go @@ -374,7 +374,7 @@ func (rp *Repo) Opengraph(w http.ResponseWriter, r *http.Request) { }) } - card, err := rp.drawRepoSummaryCard(&f.Repo, languageStats) + card, err := rp.drawRepoSummaryCard(f, languageStats) if err != nil { log.Println("failed to draw repo summary card", err) http.Error(w, "failed to draw repo summary card", http.StatusInternalServerError) diff --git a/appview/repo/repo.go b/appview/repo/repo.go index 5c8ccbe9..eb83fdbc 100644 --- a/appview/repo/repo.go +++ b/appview/repo/repo.go @@ -118,7 +118,7 @@ func (rp *Repo) EditSpindle(w http.ResponseWriter, r *http.Request) { } } - newRepo := f.Repo + newRepo := *f newRepo.Spindle = newSpindle record := newRepo.AsRecord() @@ -257,7 +257,7 @@ func (rp *Repo) AddLabelDef(w http.ResponseWriter, r *http.Request) { l.Info("wrote label record to PDS") // update the repo to subscribe to this label - newRepo := f.Repo + newRepo := *f newRepo.Labels = append(newRepo.Labels, aturi) repoRecord := newRepo.AsRecord() @@ -369,7 +369,7 @@ func (rp *Repo) DeleteLabelDef(w http.ResponseWriter, r *http.Request) { } // update repo record to remove the label reference - newRepo := f.Repo + newRepo := *f var updated []string removedAt := label.AtUri().String() for _, l := range newRepo.Labels { @@ -462,7 +462,7 @@ func (rp *Repo) SubscribeLabel(w http.ResponseWriter, r *http.Request) { return } - newRepo := f.Repo + newRepo := *f newRepo.Labels = append(newRepo.Labels, labelAts...) // dedup @@ -477,7 +477,7 @@ func (rp *Repo) SubscribeLabel(w http.ResponseWriter, r *http.Request) { return } - ex, err := comatproto.RepoGetRecord(r.Context(), client, "", tangled.RepoNSID, f.Repo.Did, f.Repo.Rkey) + ex, err := comatproto.RepoGetRecord(r.Context(), client, "", tangled.RepoNSID, f.Did, f.Rkey) if err != nil { fail("Failed to update labels, no record found on PDS.", err) return @@ -549,7 +549,7 @@ func (rp *Repo) UnsubscribeLabel(w http.ResponseWriter, r *http.Request) { } // update repo record to remove the label reference - newRepo := f.Repo + newRepo := *f var updated []string for _, l := range newRepo.Labels { if !slices.Contains(labelAts, l) { @@ -565,7 +565,7 @@ func (rp *Repo) UnsubscribeLabel(w http.ResponseWriter, r *http.Request) { return } - ex, err := comatproto.RepoGetRecord(r.Context(), client, "", tangled.RepoNSID, f.Repo.Did, f.Repo.Rkey) + ex, err := comatproto.RepoGetRecord(r.Context(), client, "", tangled.RepoNSID, f.Did, f.Rkey) if err != nil { fail("Failed to update labels, no record found on PDS.", err) return @@ -612,7 +612,7 @@ func (rp *Repo) LabelPanel(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( rp.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", subject.Collection().String()), ) if err != nil { @@ -660,7 +660,7 @@ func (rp *Repo) EditLabelPanel(w http.ResponseWriter, r *http.Request) { labelDefs, err := db.GetLabelDefinitions( rp.db, - db.FilterIn("at_uri", f.Repo.Labels), + db.FilterIn("at_uri", f.Labels), db.FilterContains("scope", subject.Collection().String()), ) if err != nil { @@ -1057,7 +1057,7 @@ func (rp *Repo) ForkRepo(w http.ResponseWriter, r *http.Request) { uri = "http" } - forkSourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, f.Knot, f.Did, f.Repo.Name) + forkSourceUrl := fmt.Sprintf("%s://%s/%s/%s", uri, f.Knot, f.Did, f.Name) l = l.With("cloneUrl", forkSourceUrl) sourceAt := f.RepoAt().String() @@ -1070,7 +1070,7 @@ func (rp *Repo) ForkRepo(w http.ResponseWriter, r *http.Request) { Knot: targetKnot, Rkey: rkey, Source: sourceAt, - Description: f.Repo.Description, + Description: f.Description, Created: time.Now(), Labels: rp.config.Label.DefaultLabelDefs, } diff --git a/appview/repo/settings.go b/appview/repo/settings.go index 646f828f..3d8dc410 100644 --- a/appview/repo/settings.go +++ b/appview/repo/settings.go @@ -217,7 +217,7 @@ func (rp *Repo) generalSettings(w http.ResponseWriter, r *http.Request) { return } - labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels)) + labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Labels)) if err != nil { l.Error("failed to fetch labels", "err", err) rp.pages.Error503(w) @@ -238,7 +238,7 @@ func (rp *Repo) generalSettings(w http.ResponseWriter, r *http.Request) { labels = labels[:n] subscribedLabels := make(map[string]struct{}) - for _, l := range f.Repo.Labels { + for _, l := range f.Labels { subscribedLabels[l] = struct{}{} } @@ -299,7 +299,7 @@ func (rp *Repo) accessSettings(w http.ResponseWriter, r *http.Request) { collaborators = append(collaborators, c) } return collaborators, nil - }(&f.Repo) + }(f) if err != nil { l.Error("failed to get collaborators", "err", err) } @@ -416,7 +416,7 @@ func (rp *Repo) EditBaseSettings(w http.ResponseWriter, r *http.Request) { } l.Debug("got", "topicsStr", topicStr, "topics", topics) - newRepo := f.Repo + newRepo := *f newRepo.Description = description newRepo.Website = website newRepo.Topics = topics diff --git a/appview/repo/tree.go b/appview/repo/tree.go index 328dbc78..b9fc910a 100644 --- a/appview/repo/tree.go +++ b/appview/repo/tree.go @@ -80,7 +80,7 @@ func (rp *Repo) Tree(w http.ResponseWriter, r *http.Request) { result.ReadmeFileName = xrpcResp.Readme.Filename result.Readme = xrpcResp.Readme.Contents } - ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, f) // redirects tree paths trying to access a blob; in this case the result.Files is unpopulated, // so we can safely redirect to the "parent" (which is the same file). if len(result.Files) == 0 && result.Parent == treePath { diff --git a/appview/reporesolver/resolver.go b/appview/reporesolver/resolver.go index 3c017bb2..2a924cb9 100644 --- a/appview/reporesolver/resolver.go +++ b/appview/reporesolver/resolver.go @@ -18,10 +18,6 @@ import ( "tangled.org/core/rbac" ) -type ResolvedRepo struct { - models.Repo -} - type RepoResolver struct { config *config.Config enforcer *rbac.Enforcer @@ -45,21 +41,19 @@ func GetBaseRepoPath(r *http.Request, repo *models.Repo) string { } // TODO: move this out of `RepoResolver` struct -func (rr *RepoResolver) Resolve(r *http.Request) (*ResolvedRepo, error) { +func (rr *RepoResolver) Resolve(r *http.Request) (*models.Repo, 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") } - return &ResolvedRepo{ - Repo: *repo, - }, nil + return repo, nil } // 1. [x] replace `RepoInfo` to `reporesolver.GetRepoInfo(r *http.Request, repo, user)` // 2. [x] remove `rr`, `CurrentDir`, `Ref` fields from `ResolvedRepo` -// 3. [ ] remove `ResolvedRepo` +// 3. [x] 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) -- 2.43.0