+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
···
256
}
257
258
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
259
user := s.oauth.GetUser(r)
260
261
var userDid string
262
if user != nil {
263
userDid = user.Did
264
}
265
-
timeline, err := db.MakeTimeline(s.db, 50, userDid, false)
266
if err != nil {
267
log.Println(err)
268
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
285
Timeline: timeline,
286
Repos: repos,
287
GfiLabel: gfiLabel,
288
})
289
}
290
···
326
}
327
328
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
329
-
timeline, err := db.MakeTimeline(s.db, 5, "")
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
})
348
}
349
···
662
663
return nil
664
}
···
8
"log"
9
"log/slog"
10
"net/http"
11
+
"strconv"
12
"strings"
13
"time"
14
···
257
}
258
259
func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
260
+
filtered := getTimelineFilteredQuery(r)
261
user := s.oauth.GetUser(r)
262
263
var userDid string
264
if user != nil {
265
userDid = user.Did
266
}
267
+
timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
268
if err != nil {
269
log.Println(err)
270
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
287
Timeline: timeline,
288
Repos: repos,
289
GfiLabel: gfiLabel,
290
+
Filtered: filtered,
291
})
292
}
293
···
329
}
330
331
func (s *State) Home(w http.ResponseWriter, r *http.Request) {
332
+
filtered := getTimelineFilteredQuery(r)
333
+
timeline, err := db.MakeTimeline(s.db, 5, "", filtered)
334
if err != nil {
335
log.Println(err)
336
s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
···
348
LoggedInUser: nil,
349
Timeline: timeline,
350
Repos: repos,
351
+
Filtered: filtered,
352
})
353
}
354
···
667
668
return nil
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
+
}