A vibe coded tangled fork which supports pijul.
1package state
2
3import (
4 "fmt"
5 "net/http"
6
7 "tangled.org/core/appview/db"
8 "tangled.org/core/appview/pages"
9 "tangled.org/core/orm"
10)
11
12func (s *State) Home(w http.ResponseWriter, r *http.Request) {
13 // TODO: set this flag based on the UI
14 filtered := false
15
16 timeline, err := db.MakeTimeline(s.db, 50, "", filtered)
17 if err != nil {
18 s.logger.Error("failed to make timeline", "err", err)
19 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
20 return
21 }
22
23 blueskyPosts, err := db.GetBlueskyPosts(s.db, 8)
24 if err != nil {
25 s.logger.Error("failed to get bluesky posts", "err", err)
26 }
27
28 fmt.Println(s.pages.Home(w, pages.TimelineParams{
29 LoggedInUser: nil,
30 Timeline: timeline,
31 BlueskyPosts: blueskyPosts,
32 }))
33}
34func (s *State) HomeOrTimeline(w http.ResponseWriter, r *http.Request) {
35 if s.oauth.GetMultiAccountUser(r) != nil {
36 s.Timeline(w, r)
37 return
38 }
39 s.Home(w, r)
40}
41
42func (s *State) Timeline(w http.ResponseWriter, r *http.Request) {
43 user := s.oauth.GetMultiAccountUser(r)
44
45 // TODO: set this flag based on the UI
46 filtered := false
47
48 var userDid string
49 if user != nil && user.Active != nil {
50 userDid = user.Active.Did
51 }
52 timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered)
53 if err != nil {
54 s.logger.Error("failed to make timeline", "err", err)
55 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.")
56 }
57
58 repos, err := db.GetTopStarredReposLastWeek(s.db)
59 if err != nil {
60 s.logger.Error("failed to get top starred repos", "err", err)
61 s.pages.Notice(w, "topstarredrepos", "Unable to load.")
62 return
63 }
64
65 gfiLabel, err := db.GetLabelDefinition(s.db, orm.FilterEq("at_uri", s.config.Label.GoodFirstIssue))
66 if err != nil {
67 // non-fatal
68 }
69
70 s.pages.Timeline(w, pages.TimelineParams{
71 LoggedInUser: user,
72 Timeline: timeline,
73 Repos: repos,
74 GfiLabel: gfiLabel,
75 })
76}