+1
appview/pages/pages.go
+1
appview/pages/pages.go
+18
-2
appview/pages/templates/timeline/fragments/timeline.html
+18
-2
appview/pages/templates/timeline/fragments/timeline.html
···
1
1
{{ define "timeline/fragments/timeline" }}
2
2
<div class="py-4">
3
-
<div class="px-6 pb-4">
4
-
<p class="text-xl font-bold dark:text-white">Timeline</p>
3
+
4
+
<div class="flex gap-2 px-6 pb-4">
5
+
<div>
6
+
<p class="text-xl font-bold dark:text-white">Timeline</p>
7
+
</div>
8
+
{{ if .LoggedInUser }}
9
+
<div>
10
+
{{ if .Filtered }}
11
+
<a href="/timeline" class="hover:underline text-sm">
12
+
Show All
13
+
</a>
14
+
{{ else }}
15
+
<a href="/timeline?filtered=true" class="hover:underline text-sm">
16
+
Show following only
17
+
</a>
18
+
{{ end }}
19
+
</div>
20
+
{{ end }}
5
21
</div>
6
22
7
23
<div class="flex flex-col gap-4">
+17
-2
appview/state/state.go
+17
-2
appview/state/state.go
···
8
8
"log"
9
9
"log/slog"
10
10
"net/http"
11
+
"strconv"
11
12
"strings"
12
13
"time"
13
14
···
251
252
}
252
253
253
254
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
255
+
filtered := getTimelineFilteredQuery(r)
254
256
user := s.oauth.GetUser(r)
255
257
256
258
var userDid string
257
259
if user != nil {
258
260
userDid = user.Did
259
261
}
260
-
timeline, err := db.MakeTimeline(s.db, 50, userDid, false)
262
+
timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
261
263
if err != nil {
262
264
log.Println(err)
263
265
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
280
282
Timeline: timeline,
281
283
Repos: repos,
282
284
GfiLabel: gfiLabel,
285
+
Filtered: filtered,
283
286
}))
284
287
}
285
288
···
322
325
}
323
326
324
327
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
325
-
timeline, err := db.MakeTimeline(s.db, 5, "")
328
+
filtered := getTimelineFilteredQuery(r)
329
+
timeline, err := db.MakeTimeline(s.db, 5, "", filtered)
326
330
if err != nil {
327
331
log.Println(err)
328
332
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
340
344
LoggedInUser: nil,
341
345
Timeline: timeline,
342
346
Repos: repos,
347
+
Filtered: filtered,
343
348
})
344
349
}
345
350
···
659
664
660
665
return nil
661
666
}
667
+
668
+
func getTimelineFilteredQuery(r *http.Request) bool {
669
+
filteredStr := r.URL.Query().Get("filtered")
670
+
if filteredStr == "" {
671
+
return false
672
+
}
673
+
674
+
res, _ := strconv.ParseBool(filteredStr)
675
+
return res
676
+
}