+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
{{ define "timeline/fragments/timeline" }}
2
<div class="py-4">
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 }}
21
</div>
22
23
<div class="flex flex-col gap-4">
+17
-2
appview/state/state.go
+17
-2
appview/state/state.go
···
8
"log"
9
"log/slog"
10
"net/http"
11
"strings"
12
"time"
13
···
251
}
252
253
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
254
user := s.oauth.GetUser(r)
255
256
var userDid string
257
if user != nil {
258
userDid = user.Did
259
}
260
-
timeline, err := db.MakeTimeline(s.db, 50, userDid, false)
261
if err != nil {
262
log.Println(err)
263
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
280
Timeline: timeline,
281
Repos: repos,
282
GfiLabel: gfiLabel,
283
}))
284
}
285
···
322
}
323
324
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
325
-
timeline, err := db.MakeTimeline(s.db, 5, "")
326
if err != nil {
327
log.Println(err)
328
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
340
LoggedInUser: nil,
341
Timeline: timeline,
342
Repos: repos,
343
})
344
}
345
···
659
660
return nil
661
}
···
8
"log"
9
"log/slog"
10
"net/http"
11
+
"strconv"
12
"strings"
13
"time"
14
···
252
}
253
254
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
255
+
filtered := getTimelineFilteredQuery(r)
256
user := s.oauth.GetUser(r)
257
258
var userDid string
259
if user != nil {
260
userDid = user.Did
261
}
262
+
timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
263
if err != nil {
264
log.Println(err)
265
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
282
Timeline: timeline,
283
Repos: repos,
284
GfiLabel: gfiLabel,
285
+
Filtered: filtered,
286
}))
287
}
288
···
325
}
326
327
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
328
+
filtered := getTimelineFilteredQuery(r)
329
+
timeline, err := db.MakeTimeline(s.db, 5, "", filtered)
330
if err != nil {
331
log.Println(err)
332
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
344
LoggedInUser: nil,
345
Timeline: timeline,
346
Repos: repos,
347
+
Filtered: filtered,
348
})
349
}
350
···
664
665
return nil
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
+
}