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