+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
···
256
257
}
257
258
258
259
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
260
+
filtered := getTimelineFilteredQuery(r)
259
261
user := s.oauth.GetUser(r)
260
262
261
263
var userDid string
262
264
if user != nil {
263
265
userDid = user.Did
264
266
}
265
-
timeline, err := db.MakeTimeline(s.db, 50, userDid, false)
267
+
timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
266
268
if err != nil {
267
269
log.Println(err)
268
270
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
285
287
Timeline: timeline,
286
288
Repos: repos,
287
289
GfiLabel: gfiLabel,
290
+
Filtered: filtered,
288
291
})
289
292
}
290
293
···
326
329
}
327
330
328
331
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
329
-
timeline, err := db.MakeTimeline(s.db, 5, "")
332
+
filtered := getTimelineFilteredQuery(r)
333
+
timeline, err := db.MakeTimeline(s.db, 5, "", filtered)
330
334
if err != nil {
331
335
log.Println(err)
332
336
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
344
348
LoggedInUser: nil,
345
349
Timeline: timeline,
346
350
Repos: repos,
351
+
Filtered: filtered,
347
352
})
348
353
}
349
354
···
662
667
663
668
return nil
664
669
}
670
+
671
+
func getTimelineFilteredQuery(r *http.Request) bool {
672
+
filteredStr := r.URL.Query().Get("filtered")
673
+
if filteredStr == "" {
674
+
return false
675
+
}
676
+
677
+
res, _ := strconv.ParseBool(filteredStr)
678
+
return res
679
+
}