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/{db,pages}: show star/unstar buttons on star events

Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.sh>

+53 -27
+49 -24
appview/db/timeline.go
··· 37 37 return nil, err 38 38 } 39 39 40 - stars, err := getTimelineStars(e, limit) 40 + stars, err := getTimelineStars(e, limit, loggedInUserDid) 41 41 if err != nil { 42 42 return nil, err 43 43 } ··· 61 61 } 62 62 63 63 return events, nil 64 + } 65 + 66 + func fetchStarStatuses(e Execer, loggedInUserDid string, repos []Repo) (map[string]bool, error) { 67 + if loggedInUserDid == "" { 68 + return nil, nil 69 + } 70 + 71 + var repoAts []syntax.ATURI 72 + for _, r := range repos { 73 + repoAts = append(repoAts, r.RepoAt()) 74 + } 75 + 76 + return GetStarStatuses(e, loggedInUserDid, repoAts) 77 + } 78 + 79 + func getRepoStarInfo(repo *Repo, starStatuses map[string]bool) (bool, int64) { 80 + var isStarred bool 81 + if starStatuses != nil { 82 + isStarred = starStatuses[repo.RepoAt().String()] 83 + } 84 + 85 + var starCount int64 86 + if repo.RepoStats != nil { 87 + starCount = int64(repo.RepoStats.StarCount) 88 + } 89 + 90 + return isStarred, starCount 64 91 } 65 92 66 93 func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { ··· 117 90 uriToRepo[r.RepoAt().String()] = r 118 91 } 119 92 120 - var starStatuses map[string]bool 121 - if loggedInUserDid != "" { 122 - var repoAts []syntax.ATURI 123 - for _, r := range repos { 124 - repoAts = append(repoAts, r.RepoAt()) 125 - } 126 - var err error 127 - starStatuses, err = GetStarStatuses(e, loggedInUserDid, repoAts) 128 - if err != nil { 129 - return nil, err 130 - } 93 + starStatuses, err := fetchStarStatuses(e, loggedInUserDid, repos) 94 + if err != nil { 95 + return nil, err 131 96 } 132 97 133 98 var events []TimelineEvent ··· 131 112 } 132 113 } 133 114 134 - var isStarred bool 135 - if starStatuses != nil { 136 - isStarred = starStatuses[r.RepoAt().String()] 137 - } 138 - 139 - var starCount int64 140 - if r.RepoStats != nil { 141 - starCount = int64(r.RepoStats.StarCount) 142 - } 115 + isStarred, starCount := getRepoStarInfo(&r, starStatuses) 143 116 144 117 events = append(events, TimelineEvent{ 145 118 Repo: &r, ··· 145 134 return events, nil 146 135 } 147 136 148 - func getTimelineStars(e Execer, limit int) ([]TimelineEvent, error) { 137 + func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { 149 138 stars, err := GetStars(e, limit) 150 139 if err != nil { 151 140 return nil, err ··· 161 150 } 162 151 stars = stars[:n] 163 152 153 + var repos []Repo 154 + for _, s := range stars { 155 + repos = append(repos, *s.Repo) 156 + } 157 + 158 + starStatuses, err := fetchStarStatuses(e, loggedInUserDid, repos) 159 + if err != nil { 160 + return nil, err 161 + } 162 + 164 163 var events []TimelineEvent 165 164 for _, s := range stars { 165 + isStarred, starCount := getRepoStarInfo(s.Repo, starStatuses) 166 + 166 167 events = append(events, TimelineEvent{ 167 - Star: &s, 168 - EventAt: s.Created, 168 + Star: &s, 169 + EventAt: s.Created, 170 + IsStarred: isStarred, 171 + StarCount: starCount, 169 172 }) 170 173 } 171 174
+4 -3
appview/pages/templates/timeline/fragments/timeline.html
··· 15 15 {{ if .Repo }} 16 16 {{ template "timeline/fragments/repoEvent" (list $ .) }} 17 17 {{ else if .Star }} 18 - {{ template "timeline/fragments/starEvent" (list $ .Star) }} 18 + {{ template "timeline/fragments/starEvent" (list $ .) }} 19 19 {{ else if .Follow }} 20 20 {{ template "timeline/fragments/followEvent" (list $ .) }} 21 21 {{ end }} ··· 58 58 59 59 {{ define "timeline/fragments/starEvent" }} 60 60 {{ $root := index . 0 }} 61 - {{ $star := index . 1 }} 61 + {{ $event := index . 1 }} 62 + {{ $star := $event.Star }} 62 63 {{ with $star }} 63 64 {{ $starrerHandle := resolve .StarredByDid }} 64 65 {{ $repoOwnerHandle := resolve .Repo.Did }} ··· 72 71 <span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span> 73 72 </div> 74 73 {{ with .Repo }} 75 - {{ template "user/fragments/repoCard" (list $root . true) }} 74 + {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }} 76 75 {{ end }} 77 76 {{ end }} 78 77 {{ end }}