+49
-24
appview/db/timeline.go
+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
}
···
63
63
return events, nil
64
64
}
65
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
91
+
}
92
+
66
93
func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {
67
94
repos, err := GetRepos(e, limit)
68
95
if err != nil {
···
90
117
uriToRepo[r.RepoAt().String()] = r
91
118
}
92
119
93
-
var starStatuses map[string]bool
94
-
if loggedInUserDid != "" {
95
-
var repoAts []syntax.ATURI
96
-
for _, r := range repos {
97
-
repoAts = append(repoAts, r.RepoAt())
98
-
}
99
-
var err error
100
-
starStatuses, err = GetStarStatuses(e, loggedInUserDid, repoAts)
101
-
if err != nil {
102
-
return nil, err
103
-
}
120
+
starStatuses, err := fetchStarStatuses(e, loggedInUserDid, repos)
121
+
if err != nil {
122
+
return nil, err
104
123
}
105
124
106
125
var events []TimelineEvent
···
112
131
}
113
132
}
114
133
115
-
var isStarred bool
116
-
if starStatuses != nil {
117
-
isStarred = starStatuses[r.RepoAt().String()]
118
-
}
119
-
120
-
var starCount int64
121
-
if r.RepoStats != nil {
122
-
starCount = int64(r.RepoStats.StarCount)
123
-
}
134
+
isStarred, starCount := getRepoStarInfo(&r, starStatuses)
124
135
125
136
events = append(events, TimelineEvent{
126
137
Repo: &r,
···
134
145
return events, nil
135
146
}
136
147
137
-
func getTimelineStars(e Execer, limit int) ([]TimelineEvent, error) {
148
+
func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {
138
149
stars, err := GetStars(e, limit)
139
150
if err != nil {
140
151
return nil, err
···
150
161
}
151
162
stars = stars[:n]
152
163
164
+
var repos []Repo
165
+
for _, s := range stars {
166
+
repos = append(repos, *s.Repo)
167
+
}
168
+
169
+
starStatuses, err := fetchStarStatuses(e, loggedInUserDid, repos)
170
+
if err != nil {
171
+
return nil, err
172
+
}
173
+
153
174
var events []TimelineEvent
154
175
for _, s := range stars {
176
+
isStarred, starCount := getRepoStarInfo(s.Repo, starStatuses)
177
+
155
178
events = append(events, TimelineEvent{
156
-
Star: &s,
157
-
EventAt: s.Created,
179
+
Star: &s,
180
+
EventAt: s.Created,
181
+
IsStarred: isStarred,
182
+
StarCount: starCount,
158
183
})
159
184
}
160
185
+4
-3
appview/pages/templates/timeline/fragments/timeline.html
+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 }}
···
71
72
<span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span>
72
73
</div>
73
74
{{ with .Repo }}
74
-
{{ template "user/fragments/repoCard" (list $root . true) }}
75
+
{{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }}
75
76
{{ end }}
76
77
{{ end }}
77
78
{{ end }}