Monorepo for Tangled tangled.org
6

Configure Feed

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

appview: add star button to user repo cards

Implementation of [issue #579](https://tangled.org/tangled.org/core/issues/579).

Adds the repo star button to each repository card on a user's repos page

+26 -2
+1
appview/pages/pages.go
··· 672 672 type ProfileReposParams struct { 673 673 LoggedInUser *oauth.MultiAccountUser 674 674 Repos []models.Repo 675 + StarStatuses map[string]bool 675 676 Card *ProfileCard 676 677 Active string 677 678 Page pagination.Page
+5 -1
appview/pages/templates/user/repos.html
··· 48 48 <div id="repos" class="grid grid-cols-1 gap-4 mb-6"> 49 49 {{ range .Repos }} 50 50 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> 51 - {{ template "user/fragments/repoCard" (list $ . false) }} 51 + {{ template "user/fragments/repoCard" (list $ . false true (dict 52 + "SubjectAt" .RepoAt 53 + "IsStarred" (index $.StarStatuses .RepoDid) 54 + "StarCount" .RepoStats.StarCount 55 + "RepoName" .Slug)) }} 52 56 </div> 53 57 {{ else }} 54 58 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded">
+20 -1
appview/state/profile.go
··· 263 263 264 264 var repos []models.Repo 265 265 var totalRepos int64 266 + loggedInUser := s.oauth.GetMultiAccountUser(r) 266 267 267 268 if searchOpts.HasSearchFilters() { 268 269 res, err := s.indexer.Repos.Search(r.Context(), searchOpts) ··· 316 317 } 317 318 } 318 319 320 + starStatuses := map[string]bool{} 321 + if loggedInUser != nil { 322 + repoDids := make([]string, 0, len(repos)) 323 + for _, repo := range repos { 324 + if repo.RepoDid != "" { 325 + repoDids = append(repoDids, repo.RepoDid) 326 + } 327 + } 328 + 329 + starStatuses, err = db.GetStarStatuses(s.db, loggedInUser.Did, repoDids) 330 + if err != nil { 331 + l.Error("failed to get repo star statuses", "err", err) 332 + s.pages.Error500(w) 333 + return 334 + } 335 + } 336 + 319 337 err = s.pages.ProfileRepos(w, pages.ProfileReposParams{ 320 - LoggedInUser: s.oauth.GetMultiAccountUser(r), 338 + LoggedInUser: loggedInUser, 321 339 Repos: repos, 340 + StarStatuses: starStatuses, 322 341 Card: profile, 323 342 Page: page, 324 343 RepoCount: int(totalRepos),