+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
···
228
229
}
229
230
230
231
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
232
+
filtered := getTimelineFilteredQuery(r)
231
233
user := s.oauth.GetUser(r)
232
234
233
235
var userDid string
234
236
if user != nil {
235
237
userDid = user.Did
236
238
}
237
-
timeline, err := db.MakeTimeline(s.db, 50, userDid, false)
239
+
timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
238
240
if err != nil {
239
241
log.Println(err)
240
242
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
251
253
LoggedInUser: user,
252
254
Timeline: timeline,
253
255
Repos: repos,
256
+
Filtered: filtered,
254
257
})
255
258
}
256
259
···
293
296
}
294
297
295
298
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
296
-
timeline, err := db.MakeTimeline(s.db, 5, "")
299
+
filtered := getTimelineFilteredQuery(r)
300
+
timeline, err := db.MakeTimeline(s.db, 5, "", filtered)
297
301
if err != nil {
298
302
log.Println(err)
299
303
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
311
315
LoggedInUser: nil,
312
316
Timeline: timeline,
313
317
Repos: repos,
318
+
Filtered: filtered,
314
319
})
315
320
}
316
321
···
630
635
631
636
return nil
632
637
}
638
+
639
+
func getTimelineFilteredQuery(r *http.Request) bool {
640
+
filteredStr := r.URL.Query().Get("filtered")
641
+
if filteredStr == "" {
642
+
return false
643
+
}
644
+
645
+
res, _ := strconv.ParseBool(filteredStr)
646
+
return res
647
+
}