diff --git a/appview/pages/pages.go b/appview/pages/pages.go
index 8ef90bbe..5a625d3e 100644
--- a/appview/pages/pages.go
+++ b/appview/pages/pages.go
@@ -672,6 +672,7 @@ func (p *Pages) ProfileOverview(w io.Writer, params ProfileOverviewParams) error
type ProfileReposParams struct {
LoggedInUser *oauth.MultiAccountUser
Repos []models.Repo
+ StarStatuses map[string]bool
Card *ProfileCard
Active string
Page pagination.Page
diff --git a/appview/pages/templates/user/repos.html b/appview/pages/templates/user/repos.html
index 1edc6db4..9ae8ffd1 100644
--- a/appview/pages/templates/user/repos.html
+++ b/appview/pages/templates/user/repos.html
@@ -48,7 +48,11 @@
{{ range .Repos }}
- {{ template "user/fragments/repoCard" (list $ . false) }}
+ {{ template "user/fragments/repoCard" (list $ . false true (dict
+ "SubjectAt" .RepoAt
+ "IsStarred" (index $.StarStatuses .RepoDid)
+ "StarCount" .RepoStats.StarCount
+ "RepoName" .Slug)) }}
{{ else }}
diff --git a/appview/state/profile.go b/appview/state/profile.go
index a90ff7c4..5519f54e 100644
--- a/appview/state/profile.go
+++ b/appview/state/profile.go
@@ -263,6 +263,7 @@ func (s *State) reposPage(w http.ResponseWriter, r *http.Request) {
var repos []models.Repo
var totalRepos int64
+ loggedInUser := s.oauth.GetMultiAccountUser(r)
if searchOpts.HasSearchFilters() {
res, err := s.indexer.Repos.Search(r.Context(), searchOpts)
@@ -316,9 +317,27 @@ func (s *State) reposPage(w http.ResponseWriter, r *http.Request) {
}
}
+ starStatuses := map[string]bool{}
+ if loggedInUser != nil {
+ repoDids := make([]string, 0, len(repos))
+ for _, repo := range repos {
+ if repo.RepoDid != "" {
+ repoDids = append(repoDids, repo.RepoDid)
+ }
+ }
+
+ starStatuses, err = db.GetStarStatuses(s.db, loggedInUser.Did, repoDids)
+ if err != nil {
+ l.Error("failed to get repo star statuses", "err", err)
+ s.pages.Error500(w)
+ return
+ }
+ }
+
err = s.pages.ProfileRepos(w, pages.ProfileReposParams{
- LoggedInUser: s.oauth.GetMultiAccountUser(r),
+ LoggedInUser: loggedInUser,
Repos: repos,
+ StarStatuses: starStatuses,
Card: profile,
Page: page,
RepoCount: int(totalRepos),