Monorepo for Tangled
at 5186fbfb4942f96f1e33f007127fd529b8b84b65 78 lines 1.9 kB view raw
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 user := s.oauth.GetMultiAccountUser(r) 17 18 timeline, err := db.MakeTimeline(s.db, 50, "", filtered) 19 if err != nil { 20 s.logger.Error("failed to make timeline", "err", err) 21 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.") 22 return 23 } 24 25 blueskyPosts, err := db.GetBlueskyPosts(s.db, 8) 26 if err != nil { 27 s.logger.Error("failed to get bluesky posts", "err", err) 28 } 29 30 fmt.Println(s.pages.Home(w, pages.TimelineParams{ 31 LoggedInUser: user, 32 Timeline: timeline, 33 BlueskyPosts: blueskyPosts, 34 })) 35} 36func (s *State) HomeOrTimeline(w http.ResponseWriter, r *http.Request) { 37 if s.oauth.GetMultiAccountUser(r) != nil { 38 s.Timeline(w, r) 39 return 40 } 41 s.Home(w, r) 42} 43 44func (s *State) Timeline(w http.ResponseWriter, r *http.Request) { 45 user := s.oauth.GetMultiAccountUser(r) 46 47 // TODO: set this flag based on the UI 48 filtered := false 49 50 var userDid string 51 if user != nil && user.Active != nil { 52 userDid = user.Active.Did 53 } 54 timeline, err := db.MakeTimeline(s.db, 50, userDid, filtered) 55 if err != nil { 56 s.logger.Error("failed to make timeline", "err", err) 57 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.") 58 } 59 60 repos, err := db.GetTopStarredReposLastWeek(s.db) 61 if err != nil { 62 s.logger.Error("failed to get top starred repos", "err", err) 63 s.pages.Notice(w, "topstarredrepos", "Unable to load.") 64 return 65 } 66 67 gfiLabel, err := db.GetLabelDefinition(s.db, orm.FilterEq("at_uri", s.config.Label.GoodFirstIssue)) 68 if err != nil { 69 // non-fatal 70 } 71 72 s.pages.Timeline(w, pages.TimelineParams{ 73 LoggedInUser: user, 74 Timeline: timeline, 75 Repos: repos, 76 GfiLabel: gfiLabel, 77 }) 78}