Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

appview: remove use of all fields under `ResolvedRepo`

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 <git@boltless.me>

authored by

Seongmin Lee and committed by
Tangled
fe0d3a95 b51677f7

+84 -140
+10 -40
appview/issues/issues.go
··· 119 119 120 120 rp.pages.RepoSingleIssue(w, pages.RepoSingleIssueParams{ 121 121 LoggedInUser: user, 122 - RepoInfo: f.RepoInfo(user), 122 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 123 123 Issue: issue, 124 124 CommentList: issue.CommentList(), 125 125 OrderedReactionKinds: models.OrderedReactionKinds, ··· 132 132 func (rp *Issues) EditIssue(w http.ResponseWriter, r *http.Request) { 133 133 l := rp.logger.With("handler", "EditIssue") 134 134 user := rp.oauth.GetUser(r) 135 - f, err := rp.repoResolver.Resolve(r) 136 - if err != nil { 137 - l.Error("failed to get repo and knot", "err", err) 138 - return 139 - } 140 135 141 136 issue, ok := r.Context().Value("issue").(*models.Issue) 142 137 if !ok { ··· 144 149 case http.MethodGet: 145 150 rp.pages.EditIssueFragment(w, pages.EditIssueParams{ 146 151 LoggedInUser: user, 147 - RepoInfo: f.RepoInfo(user), 152 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 148 153 Issue: issue, 149 154 }) 150 155 case http.MethodPost: ··· 465 470 func (rp *Issues) IssueComment(w http.ResponseWriter, r *http.Request) { 466 471 l := rp.logger.With("handler", "IssueComment") 467 472 user := rp.oauth.GetUser(r) 468 - f, err := rp.repoResolver.Resolve(r) 469 - if err != nil { 470 - l.Error("failed to get repo and knot", "err", err) 471 - return 472 - } 473 473 474 474 issue, ok := r.Context().Value("issue").(*models.Issue) 475 475 if !ok { ··· 492 502 493 503 rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ 494 504 LoggedInUser: user, 495 - RepoInfo: f.RepoInfo(user), 505 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 496 506 Issue: issue, 497 507 Comment: &comment, 498 508 }) ··· 501 511 func (rp *Issues) EditIssueComment(w http.ResponseWriter, r *http.Request) { 502 512 l := rp.logger.With("handler", "EditIssueComment") 503 513 user := rp.oauth.GetUser(r) 504 - f, err := rp.repoResolver.Resolve(r) 505 - if err != nil { 506 - l.Error("failed to get repo and knot", "err", err) 507 - return 508 - } 509 514 510 515 issue, ok := r.Context().Value("issue").(*models.Issue) 511 516 if !ok { ··· 536 551 case http.MethodGet: 537 552 rp.pages.EditIssueCommentFragment(w, pages.EditIssueCommentParams{ 538 553 LoggedInUser: user, 539 - RepoInfo: f.RepoInfo(user), 554 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 540 555 Issue: issue, 541 556 Comment: &comment, 542 557 }) ··· 590 605 // return new comment body with htmx 591 606 rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ 592 607 LoggedInUser: user, 593 - RepoInfo: f.RepoInfo(user), 608 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 594 609 Issue: issue, 595 610 Comment: &newComment, 596 611 }) ··· 600 615 func (rp *Issues) ReplyIssueCommentPlaceholder(w http.ResponseWriter, r *http.Request) { 601 616 l := rp.logger.With("handler", "ReplyIssueCommentPlaceholder") 602 617 user := rp.oauth.GetUser(r) 603 - f, err := rp.repoResolver.Resolve(r) 604 - if err != nil { 605 - l.Error("failed to get repo and knot", "err", err) 606 - return 607 - } 608 618 609 619 issue, ok := r.Context().Value("issue").(*models.Issue) 610 620 if !ok { ··· 627 647 628 648 rp.pages.ReplyIssueCommentPlaceholderFragment(w, pages.ReplyIssueCommentPlaceholderParams{ 629 649 LoggedInUser: user, 630 - RepoInfo: f.RepoInfo(user), 650 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 631 651 Issue: issue, 632 652 Comment: &comment, 633 653 }) ··· 636 656 func (rp *Issues) ReplyIssueComment(w http.ResponseWriter, r *http.Request) { 637 657 l := rp.logger.With("handler", "ReplyIssueComment") 638 658 user := rp.oauth.GetUser(r) 639 - f, err := rp.repoResolver.Resolve(r) 640 - if err != nil { 641 - l.Error("failed to get repo and knot", "err", err) 642 - return 643 - } 644 659 645 660 issue, ok := r.Context().Value("issue").(*models.Issue) 646 661 if !ok { ··· 663 688 664 689 rp.pages.ReplyIssueCommentFragment(w, pages.ReplyIssueCommentParams{ 665 690 LoggedInUser: user, 666 - RepoInfo: f.RepoInfo(user), 691 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 667 692 Issue: issue, 668 693 Comment: &comment, 669 694 }) ··· 672 697 func (rp *Issues) DeleteIssueComment(w http.ResponseWriter, r *http.Request) { 673 698 l := rp.logger.With("handler", "DeleteIssueComment") 674 699 user := rp.oauth.GetUser(r) 675 - f, err := rp.repoResolver.Resolve(r) 676 - if err != nil { 677 - l.Error("failed to get repo and knot", "err", err) 678 - return 679 - } 680 700 681 701 issue, ok := r.Context().Value("issue").(*models.Issue) 682 702 if !ok { ··· 742 772 // htmx fragment of comment after deletion 743 773 rp.pages.IssueCommentBodyFragment(w, pages.IssueCommentBodyParams{ 744 774 LoggedInUser: user, 745 - RepoInfo: f.RepoInfo(user), 775 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 746 776 Issue: issue, 747 777 Comment: &comment, 748 778 }) ··· 843 873 844 874 rp.pages.RepoIssues(w, pages.RepoIssuesParams{ 845 875 LoggedInUser: rp.oauth.GetUser(r), 846 - RepoInfo: f.RepoInfo(user), 876 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 847 877 Issues: issues, 848 878 IssueCount: totalIssues, 849 879 LabelDefs: defs, ··· 867 897 case http.MethodGet: 868 898 rp.pages.RepoNewIssue(w, pages.RepoNewIssueParams{ 869 899 LoggedInUser: user, 870 - RepoInfo: f.RepoInfo(user), 900 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 871 901 }) 872 902 case http.MethodPost: 873 903 issue := &models.Issue{
+2 -2
appview/pipelines/pipelines.go
··· 92 92 93 93 p.pages.Pipelines(w, pages.PipelinesParams{ 94 94 LoggedInUser: user, 95 - RepoInfo: f.RepoInfo(user), 95 + RepoInfo: p.repoResolver.GetRepoInfo(r, user), 96 96 Pipelines: ps, 97 97 }) 98 98 } ··· 141 141 142 142 p.pages.Workflow(w, pages.WorkflowParams{ 143 143 LoggedInUser: user, 144 - RepoInfo: f.RepoInfo(user), 144 + RepoInfo: p.repoResolver.GetRepoInfo(r, user), 145 145 Pipeline: singlePipeline, 146 146 Workflow: workflow, 147 147 })
+12 -38
appview/pulls/pulls.go
··· 124 124 125 125 s.pages.PullActionsFragment(w, pages.PullActionsParams{ 126 126 LoggedInUser: user, 127 - RepoInfo: f.RepoInfo(user), 127 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 128 128 Pull: pull, 129 129 RoundNumber: roundNumber, 130 130 MergeCheck: mergeCheckResponse, ··· 221 221 222 222 s.pages.RepoSinglePull(w, pages.RepoSinglePullParams{ 223 223 LoggedInUser: user, 224 - RepoInfo: f.RepoInfo(user), 224 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 225 225 Pull: pull, 226 226 Stack: stack, 227 227 AbandonedPulls: abandonedPulls, ··· 421 421 422 422 func (s *Pulls) RepoPullPatch(w http.ResponseWriter, r *http.Request) { 423 423 user := s.oauth.GetUser(r) 424 - f, err := s.repoResolver.Resolve(r) 425 - if err != nil { 426 - log.Println("failed to get repo and knot", err) 427 - return 428 - } 429 424 430 425 var diffOpts types.DiffOpts 431 426 if d := r.URL.Query().Get("diff"); d == "split" { ··· 449 454 450 455 s.pages.RepoPullPatchPage(w, pages.RepoPullPatchParams{ 451 456 LoggedInUser: user, 452 - RepoInfo: f.RepoInfo(user), 457 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 453 458 Pull: pull, 454 459 Stack: stack, 455 460 Round: roundIdInt, ··· 462 467 463 468 func (s *Pulls) RepoPullInterdiff(w http.ResponseWriter, r *http.Request) { 464 469 user := s.oauth.GetUser(r) 465 - 466 - f, err := s.repoResolver.Resolve(r) 467 - if err != nil { 468 - log.Println("failed to get repo and knot", err) 469 - return 470 - } 471 470 472 471 var diffOpts types.DiffOpts 473 472 if d := r.URL.Query().Get("diff"); d == "split" { ··· 507 518 508 519 s.pages.RepoPullInterdiffPage(w, pages.RepoPullInterdiffParams{ 509 520 LoggedInUser: s.oauth.GetUser(r), 510 - RepoInfo: f.RepoInfo(user), 521 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 511 522 Pull: pull, 512 523 Round: roundIdInt, 513 524 Interdiff: interdiff, ··· 667 678 668 679 s.pages.RepoPulls(w, pages.RepoPullsParams{ 669 680 LoggedInUser: s.oauth.GetUser(r), 670 - RepoInfo: f.RepoInfo(user), 681 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 671 682 Pulls: pulls, 672 683 LabelDefs: defs, 673 684 FilteringBy: state, ··· 705 716 case http.MethodGet: 706 717 s.pages.PullNewCommentFragment(w, pages.PullNewCommentParams{ 707 718 LoggedInUser: user, 708 - RepoInfo: f.RepoInfo(user), 719 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 709 720 Pull: pull, 710 721 RoundNumber: roundNumber, 711 722 }) ··· 839 850 840 851 s.pages.RepoNewPull(w, pages.RepoNewPullParams{ 841 852 LoggedInUser: user, 842 - RepoInfo: f.RepoInfo(user), 853 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 843 854 Branches: result.Branches, 844 855 Strategy: strategy, 845 856 SourceBranch: sourceBranch, ··· 1394 1405 1395 1406 func (s *Pulls) PatchUploadFragment(w http.ResponseWriter, r *http.Request) { 1396 1407 user := s.oauth.GetUser(r) 1397 - f, err := s.repoResolver.Resolve(r) 1398 - if err != nil { 1399 - log.Println("failed to get repo and knot", err) 1400 - return 1401 - } 1402 1408 1403 1409 s.pages.PullPatchUploadFragment(w, pages.PullPatchUploadParams{ 1404 - RepoInfo: f.RepoInfo(user), 1410 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 1405 1411 }) 1406 1412 } 1407 1413 ··· 1450 1466 } 1451 1467 1452 1468 s.pages.PullCompareBranchesFragment(w, pages.PullCompareBranchesParams{ 1453 - RepoInfo: f.RepoInfo(user), 1469 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 1454 1470 Branches: withoutDefault, 1455 1471 }) 1456 1472 } 1457 1473 1458 1474 func (s *Pulls) CompareForksFragment(w http.ResponseWriter, r *http.Request) { 1459 1475 user := s.oauth.GetUser(r) 1460 - f, err := s.repoResolver.Resolve(r) 1461 - if err != nil { 1462 - log.Println("failed to get repo and knot", err) 1463 - return 1464 - } 1465 1476 1466 1477 forks, err := db.GetForksByDid(s.db, user.Did) 1467 1478 if err != nil { ··· 1465 1486 } 1466 1487 1467 1488 s.pages.PullCompareForkFragment(w, pages.PullCompareForkParams{ 1468 - RepoInfo: f.RepoInfo(user), 1489 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 1469 1490 Forks: forks, 1470 1491 Selected: r.URL.Query().Get("fork"), 1471 1492 }) ··· 1558 1579 }) 1559 1580 1560 1581 s.pages.PullCompareForkBranchesFragment(w, pages.PullCompareForkBranchesParams{ 1561 - RepoInfo: f.RepoInfo(user), 1582 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 1562 1583 SourceBranches: sourceBranches.Branches, 1563 1584 TargetBranches: targetBranches.Branches, 1564 1585 }) ··· 1566 1587 1567 1588 func (s *Pulls) ResubmitPull(w http.ResponseWriter, r *http.Request) { 1568 1589 user := s.oauth.GetUser(r) 1569 - f, err := s.repoResolver.Resolve(r) 1570 - if err != nil { 1571 - log.Println("failed to get repo and knot", err) 1572 - return 1573 - } 1574 1590 1575 1591 pull, ok := r.Context().Value("pull").(*models.Pull) 1576 1592 if !ok { ··· 1577 1603 switch r.Method { 1578 1604 case http.MethodGet: 1579 1605 s.pages.PullResubmitFragment(w, pages.PullResubmitParams{ 1580 - RepoInfo: f.RepoInfo(user), 1606 + RepoInfo: s.repoResolver.GetRepoInfo(r, user), 1581 1607 Pull: pull, 1582 1608 }) 1583 1609 return
+1 -1
appview/repo/artifact.go
··· 130 130 131 131 rp.pages.RepoArtifactFragment(w, pages.RepoArtifactParams{ 132 132 LoggedInUser: user, 133 - RepoInfo: f.RepoInfo(user), 133 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 134 134 Artifact: artifact, 135 135 }) 136 136 }
+1 -1
appview/repo/blob.go
··· 80 80 81 81 rp.pages.RepoBlob(w, pages.RepoBlobParams{ 82 82 LoggedInUser: user, 83 - RepoInfo: f.RepoInfo(user), 83 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 84 84 BreadCrumbs: breadcrumbs, 85 85 BlobView: blobView, 86 86 RepoBlob_Output: resp,
+1 -1
appview/repo/branches.go
··· 46 46 user := rp.oauth.GetUser(r) 47 47 rp.pages.RepoBranches(w, pages.RepoBranchesParams{ 48 48 LoggedInUser: user, 49 - RepoInfo: f.RepoInfo(user), 49 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 50 50 RepoBranchesResponse: result, 51 51 }) 52 52 }
+2 -2
appview/repo/compare.go
··· 90 90 91 91 rp.pages.RepoCompareNew(w, pages.RepoCompareNewParams{ 92 92 LoggedInUser: user, 93 - RepoInfo: f.RepoInfo(user), 93 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 94 94 Branches: branches, 95 95 Tags: tags.Tags, 96 96 Base: base, ··· 202 202 203 203 rp.pages.RepoCompare(w, pages.RepoCompareParams{ 204 204 LoggedInUser: user, 205 - RepoInfo: f.RepoInfo(user), 205 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 206 206 Branches: branches.Branches, 207 207 Tags: tags.Tags, 208 208 Base: base,
+2 -2
appview/repo/index.go
··· 60 60 rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ 61 61 LoggedInUser: user, 62 62 NeedsKnotUpgrade: true, 63 - RepoInfo: f.RepoInfo(user), 63 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 64 64 }) 65 65 return 66 66 } ··· 146 146 147 147 rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ 148 148 LoggedInUser: user, 149 - RepoInfo: f.RepoInfo(user), 149 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 150 150 TagMap: tagMap, 151 151 RepoIndexResponse: *result, 152 152 CommitsTrunc: commitsTrunc,
+2 -2
appview/repo/log.go
··· 134 134 rp.pages.RepoLog(w, pages.RepoLogParams{ 135 135 LoggedInUser: user, 136 136 TagMap: tagMap, 137 - RepoInfo: f.RepoInfo(user), 137 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 138 138 RepoLogResponse: xrpcResp, 139 139 EmailToDid: emailToDidMap, 140 140 VerifiedCommits: vc, ··· 210 210 211 211 rp.pages.RepoCommit(w, pages.RepoCommitParams{ 212 212 LoggedInUser: user, 213 - RepoInfo: f.RepoInfo(user), 213 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 214 214 RepoCommitResponse: result, 215 215 EmailToDid: emailToDidMap, 216 216 VerifiedCommit: vc,
+3 -3
appview/repo/repo.go
··· 635 635 user := rp.oauth.GetUser(r) 636 636 rp.pages.LabelPanel(w, pages.LabelPanelParams{ 637 637 LoggedInUser: user, 638 - RepoInfo: f.RepoInfo(user), 638 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 639 639 Defs: defs, 640 640 Subject: subject.String(), 641 641 State: state, ··· 683 683 user := rp.oauth.GetUser(r) 684 684 rp.pages.EditLabelPanel(w, pages.EditLabelPanelParams{ 685 685 LoggedInUser: user, 686 - RepoInfo: f.RepoInfo(user), 686 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 687 687 Defs: defs, 688 688 Subject: subject.String(), 689 689 State: state, ··· 1006 1006 rp.pages.ForkRepo(w, pages.ForkRepoParams{ 1007 1007 LoggedInUser: user, 1008 1008 Knots: knots, 1009 - RepoInfo: f.RepoInfo(user), 1009 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 1010 1010 }) 1011 1011 1012 1012 case http.MethodPost:
+3 -3
appview/repo/settings.go
··· 255 255 256 256 rp.pages.RepoGeneralSettings(w, pages.RepoGeneralSettingsParams{ 257 257 LoggedInUser: user, 258 - RepoInfo: f.RepoInfo(user), 258 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 259 259 Branches: result.Branches, 260 260 Labels: labels, 261 261 DefaultLabels: defaultLabels, ··· 306 306 307 307 rp.pages.RepoAccessSettings(w, pages.RepoAccessSettingsParams{ 308 308 LoggedInUser: user, 309 - RepoInfo: f.RepoInfo(user), 309 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 310 310 Tabs: settingsTabs, 311 311 Tab: "access", 312 312 Collaborators: collaborators, ··· 367 367 368 368 rp.pages.RepoPipelineSettings(w, pages.RepoPipelineSettingsParams{ 369 369 LoggedInUser: user, 370 - RepoInfo: f.RepoInfo(user), 370 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 371 371 Tabs: settingsTabs, 372 372 Tab: "pipelines", 373 373 Spindles: spindles,
+1 -1
appview/repo/tags.go
··· 71 71 user := rp.oauth.GetUser(r) 72 72 rp.pages.RepoTags(w, pages.RepoTagsParams{ 73 73 LoggedInUser: user, 74 - RepoInfo: f.RepoInfo(user), 74 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 75 75 RepoTagsResponse: result, 76 76 ArtifactMap: artifactMap, 77 77 DanglingArtifacts: danglingArtifacts,
+1 -1
appview/repo/tree.go
··· 102 102 LoggedInUser: user, 103 103 BreadCrumbs: breadcrumbs, 104 104 TreePath: treePath, 105 - RepoInfo: f.RepoInfo(user), 105 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 106 106 RepoTreeResponse: result, 107 107 }) 108 108 }
+43 -43
appview/reporesolver/resolver.go
··· 20 20 21 21 type ResolvedRepo struct { 22 22 models.Repo 23 - OwnerId identity.Identity 24 - CurrentDir string 25 - Ref string 26 - 27 - rr *RepoResolver 28 23 } 29 24 30 25 type RepoResolver struct { ··· 44 49 return path.Join(user, name) 45 50 } 46 51 52 + // TODO: move this out of `RepoResolver` struct 47 53 func (rr *RepoResolver) Resolve(r *http.Request) (*ResolvedRepo, error) { 48 54 repo, ok := r.Context().Value("repo").(*models.Repo) 49 55 if !ok { 50 56 log.Println("malformed middleware: `repo` not exist in context") 51 57 return nil, fmt.Errorf("malformed middleware") 52 58 } 53 - id, ok := r.Context().Value("resolvedId").(identity.Identity) 54 - if !ok { 55 - log.Println("malformed middleware") 56 - return nil, fmt.Errorf("malformed middleware") 57 - } 58 - 59 - currentDir := path.Dir(extractPathAfterRef(r.URL.EscapedPath())) 60 - ref := chi.URLParam(r, "ref") 61 59 62 60 return &ResolvedRepo{ 63 - Repo: *repo, 64 - OwnerId: id, 65 - CurrentDir: currentDir, 66 - Ref: ref, 67 - 68 - rr: rr, 61 + Repo: *repo, 69 62 }, nil 70 63 } 71 64 72 - // this function is a bit weird since it now returns RepoInfo from an entirely different 73 - // package. we should refactor this or get rid of RepoInfo entirely. 74 - func (f *ResolvedRepo) RepoInfo(user *oauth.User) repoinfo.RepoInfo { 75 - repoAt := f.RepoAt() 65 + // 1. [x] replace `RepoInfo` to `reporesolver.GetRepoInfo(r *http.Request, repo, user)` 66 + // 2. [x] remove `rr`, `CurrentDir`, `Ref` fields from `ResolvedRepo` 67 + // 3. [ ] remove `ResolvedRepo` 68 + // 4. [ ] replace reporesolver to reposervice 69 + func (rr *RepoResolver) GetRepoInfo(r *http.Request, user *oauth.User) repoinfo.RepoInfo { 70 + ownerId, ook := r.Context().Value("resolvedId").(identity.Identity) 71 + repo, rok := r.Context().Value("repo").(*models.Repo) 72 + if !ook || !rok { 73 + log.Println("malformed request, failed to get repo from context") 74 + } 75 + 76 + // get dir/ref 77 + currentDir := path.Dir(extractPathAfterRef(r.URL.EscapedPath())) 78 + ref := chi.URLParam(r, "ref") 79 + 80 + repoAt := repo.RepoAt() 76 81 isStarred := false 77 82 roles := repoinfo.RolesInRepo{} 78 83 if user != nil { 79 - isStarred = db.GetStarStatus(f.rr.execer, user.Did, repoAt) 80 - roles.Roles = f.rr.enforcer.GetPermissionsInRepo(user.Did, f.Knot, f.DidSlashRepo()) 84 + isStarred = db.GetStarStatus(rr.execer, user.Did, repoAt) 85 + roles.Roles = rr.enforcer.GetPermissionsInRepo(user.Did, repo.Knot, repo.DidSlashRepo()) 81 86 } 82 87 83 - stats := f.RepoStats 88 + stats := repo.RepoStats 84 89 if stats == nil { 85 - starCount, err := db.GetStarCount(f.rr.execer, repoAt) 90 + starCount, err := db.GetStarCount(rr.execer, repoAt) 86 91 if err != nil { 87 92 log.Println("failed to get star count for ", repoAt) 88 93 } 89 - issueCount, err := db.GetIssueCount(f.rr.execer, repoAt) 94 + issueCount, err := db.GetIssueCount(rr.execer, repoAt) 90 95 if err != nil { 91 96 log.Println("failed to get issue count for ", repoAt) 92 97 } 93 - pullCount, err := db.GetPullCount(f.rr.execer, repoAt) 98 + pullCount, err := db.GetPullCount(rr.execer, repoAt) 94 99 if err != nil { 95 100 log.Println("failed to get pull count for ", repoAt) 96 101 } ··· 101 106 } 102 107 } 103 108 104 - sourceRepo, err := db.GetRepoSourceRepo(f.rr.execer, repoAt) 105 - if err != nil { 106 - log.Println("failed to get repo by at uri", err) 109 + var sourceRepo *models.Repo 110 + var err error 111 + if repo.Source != "" { 112 + sourceRepo, err = db.GetRepoByAtUri(rr.execer, repo.Source) 113 + if err != nil { 114 + log.Println("failed to get repo by at uri", err) 115 + } 107 116 } 108 117 109 118 repoInfo := repoinfo.RepoInfo{ 110 119 // this is basically a models.Repo 111 - OwnerDid: f.OwnerId.DID.String(), 112 - OwnerHandle: f.OwnerId.Handle.String(), 113 - Name: f.Name, 114 - Rkey: f.Rkey, 115 - Description: f.Description, 116 - Website: f.Website, 117 - Topics: f.Topics, 118 - Knot: f.Knot, 119 - Spindle: f.Spindle, 120 + OwnerDid: ownerId.DID.String(), 121 + OwnerHandle: ownerId.Handle.String(), 122 + Name: repo.Name, 123 + Rkey: repo.Rkey, 124 + Description: repo.Description, 125 + Website: repo.Website, 126 + Topics: repo.Topics, 127 + Knot: repo.Knot, 128 + Spindle: repo.Spindle, 120 129 Stats: *stats, 121 130 122 131 // fork repo upstream 123 132 Source: sourceRepo, 124 133 125 - CurrentDir: f.CurrentDir, 126 - Ref: f.Ref, 134 + // page context 135 + CurrentDir: currentDir, 136 + Ref: ref, 127 137 128 138 // info related to the session 129 139 IsStarred: isStarred,