+49
-24
appview/db/timeline.go
+49
-24
appview/db/timeline.go
···
37
return nil, err
38
}
39
40
-
stars, err := getTimelineStars(e, limit)
41
if err != nil {
42
return nil, err
43
}
···
63
return events, nil
64
}
65
66
func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {
67
repos, err := GetRepos(e, limit)
68
if err != nil {
···
90
uriToRepo[r.RepoAt().String()] = r
91
}
92
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
-
}
104
}
105
106
var events []TimelineEvent
···
112
}
113
}
114
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
-
}
124
125
events = append(events, TimelineEvent{
126
Repo: &r,
···
134
return events, nil
135
}
136
137
-
func getTimelineStars(e Execer, limit int) ([]TimelineEvent, error) {
138
stars, err := GetStars(e, limit)
139
if err != nil {
140
return nil, err
···
150
}
151
stars = stars[:n]
152
153
var events []TimelineEvent
154
for _, s := range stars {
155
events = append(events, TimelineEvent{
156
-
Star: &s,
157
-
EventAt: s.Created,
158
})
159
}
160
···
37
return nil, err
38
}
39
40
+
stars, err := getTimelineStars(e, limit, loggedInUserDid)
41
if err != nil {
42
return nil, err
43
}
···
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
91
+
}
92
+
93
func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {
94
repos, err := GetRepos(e, limit)
95
if err != nil {
···
117
uriToRepo[r.RepoAt().String()] = r
118
}
119
120
+
starStatuses, err := fetchStarStatuses(e, loggedInUserDid, repos)
121
+
if err != nil {
122
+
return nil, err
123
}
124
125
var events []TimelineEvent
···
131
}
132
}
133
134
+
isStarred, starCount := getRepoStarInfo(&r, starStatuses)
135
136
events = append(events, TimelineEvent{
137
Repo: &r,
···
145
return events, nil
146
}
147
148
+
func getTimelineStars(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) {
149
stars, err := GetStars(e, limit)
150
if err != nil {
151
return nil, err
···
161
}
162
stars = stars[:n]
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
+
174
var events []TimelineEvent
175
for _, s := range stars {
176
+
isStarred, starCount := getRepoStarInfo(s.Repo, starStatuses)
177
+
178
events = append(events, TimelineEvent{
179
+
Star: &s,
180
+
EventAt: s.Created,
181
+
IsStarred: isStarred,
182
+
StarCount: starCount,
183
})
184
}
185
+4
-3
appview/pages/templates/timeline/fragments/timeline.html
+4
-3
appview/pages/templates/timeline/fragments/timeline.html
···
15
{{ if .Repo }}
16
{{ template "timeline/fragments/repoEvent" (list $ .) }}
17
{{ else if .Star }}
18
-
{{ template "timeline/fragments/starEvent" (list $ .Star) }}
19
{{ else if .Follow }}
20
{{ template "timeline/fragments/followEvent" (list $ .) }}
21
{{ end }}
···
58
59
{{ define "timeline/fragments/starEvent" }}
60
{{ $root := index . 0 }}
61
-
{{ $star := index . 1 }}
62
{{ with $star }}
63
{{ $starrerHandle := resolve .StarredByDid }}
64
{{ $repoOwnerHandle := resolve .Repo.Did }}
···
71
<span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span>
72
</div>
73
{{ with .Repo }}
74
-
{{ template "user/fragments/repoCard" (list $root . true) }}
75
{{ end }}
76
{{ end }}
77
{{ end }}
···
15
{{ if .Repo }}
16
{{ template "timeline/fragments/repoEvent" (list $ .) }}
17
{{ else if .Star }}
18
+
{{ template "timeline/fragments/starEvent" (list $ .) }}
19
{{ else if .Follow }}
20
{{ template "timeline/fragments/followEvent" (list $ .) }}
21
{{ end }}
···
58
59
{{ define "timeline/fragments/starEvent" }}
60
{{ $root := index . 0 }}
61
+
{{ $event := index . 1 }}
62
+
{{ $star := $event.Star }}
63
{{ with $star }}
64
{{ $starrerHandle := resolve .StarredByDid }}
65
{{ $repoOwnerHandle := resolve .Repo.Did }}
···
72
<span class="text-gray-700 dark:text-gray-400 text-xs">{{ template "repo/fragments/time" .Created }}</span>
73
</div>
74
{{ with .Repo }}
75
+
{{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }}
76
{{ end }}
77
{{ end }}
78
{{ end }}