REFACTOR: split Follows into its own template instead of piggybacking on Lists

This commit is contained in:
Alessio 2024-02-25 16:48:54 -08:00
parent 5b6894eee2
commit 8d61aec316
5 changed files with 39 additions and 28 deletions

View File

@ -111,12 +111,8 @@ func (app *Application) Search(w http.ResponseWriter, r *http.Request) {
} }
feed, err := app.Profile.NextPage(c, app.ActiveUser.ID) feed, err := app.Profile.NextPage(c, app.ActiveUser.ID)
if err != nil { if err != nil && !errors.Is(err, persistence.ErrEndOfFeed) {
if errors.Is(err, persistence.ErrEndOfFeed) { panic(err)
// TODO
} else {
panic(err)
}
} }
data := NewSearchPageData() data := NewSearchPageData()

View File

@ -18,12 +18,8 @@ func (app *Application) Timeline(w http.ResponseWriter, r *http.Request) {
} }
feed, err := app.Profile.NextPage(c, app.ActiveUser.ID) feed, err := app.Profile.NextPage(c, app.ActiveUser.ID)
if err != nil { if err != nil && !errors.Is(err, persistence.ErrEndOfFeed) {
if errors.Is(err, persistence.ErrEndOfFeed) { panic(err)
// TODO
} else {
panic(err)
}
} }
if r.Header.Get("HX-Request") == "true" && c.CursorPosition == persistence.CURSOR_MIDDLE { if r.Header.Get("HX-Request") == "true" && c.CursorPosition == persistence.CURSOR_MIDDLE {

View File

@ -83,12 +83,8 @@ func (app *Application) UserFeed(w http.ResponseWriter, r *http.Request) {
} }
feed, err := app.Profile.NextPage(c, app.ActiveUser.ID) feed, err := app.Profile.NextPage(c, app.ActiveUser.ID)
if err != nil { if err != nil && !errors.Is(err, persistence.ErrEndOfFeed) {
if errors.Is(err, persistence.ErrEndOfFeed) { panic(err)
// TODO
} else {
panic(err)
}
} }
feed.Users[user.ID] = user feed.Users[user.ID] = user
@ -112,6 +108,24 @@ func (app *Application) UserFeed(w http.ResponseWriter, r *http.Request) {
} }
} }
type FollowsData struct {
Title string
HeaderUserID scraper.UserID
UserIDs []scraper.UserID
}
func NewFollowsData(users []scraper.User) (FollowsData, scraper.TweetTrove) {
trove := scraper.NewTweetTrove()
data := FollowsData{
UserIDs: []scraper.UserID{},
}
for _, u := range users {
trove.Users[u.ID] = u
data.UserIDs = append(data.UserIDs, u.ID)
}
return data, trove
}
func (app *Application) UserFollowees(w http.ResponseWriter, r *http.Request, user scraper.User) { func (app *Application) UserFollowees(w http.ResponseWriter, r *http.Request, user scraper.User) {
if r.URL.Query().Has("scrape") { if r.URL.Query().Has("scrape") {
if app.IsScrapingDisabled { if app.IsScrapingDisabled {
@ -131,11 +145,11 @@ func (app *Application) UserFollowees(w http.ResponseWriter, r *http.Request, us
go app.Profile.SaveTweetTrove(trove, true) go app.Profile.SaveTweetTrove(trove, true)
} }
data, trove := NewListData(app.Profile.GetFollowees(user.ID)) data, trove := NewFollowsData(app.Profile.GetFollowees(user.ID))
trove.Users[user.ID] = user // Not loaded otherwise; needed to profile image in the login button on the sidebar trove.Users[user.ID] = user // Not loaded otherwise; needed to profile image in the login button on the sidebar
data.Title = fmt.Sprintf("Followed by @%s", user.Handle) data.Title = fmt.Sprintf("Followed by @%s", user.Handle)
data.HeaderUserID = user.ID data.HeaderUserID = user.ID
app.buffered_render_page(w, "tpl/list.tpl", PageGlobalData{TweetTrove: trove}, data) app.buffered_render_page(w, "tpl/follows.tpl", PageGlobalData{TweetTrove: trove}, data)
} }
func (app *Application) UserFollowers(w http.ResponseWriter, r *http.Request, user scraper.User) { func (app *Application) UserFollowers(w http.ResponseWriter, r *http.Request, user scraper.User) {
@ -157,9 +171,9 @@ func (app *Application) UserFollowers(w http.ResponseWriter, r *http.Request, us
go app.Profile.SaveTweetTrove(trove, true) go app.Profile.SaveTweetTrove(trove, true)
} }
data, trove := NewListData(app.Profile.GetFollowers(user.ID)) data, trove := NewFollowsData(app.Profile.GetFollowers(user.ID))
trove.Users[user.ID] = user trove.Users[user.ID] = user
data.Title = fmt.Sprintf("@%s's followers", user.Handle) data.Title = fmt.Sprintf("@%s's followers", user.Handle)
data.HeaderUserID = user.ID data.HeaderUserID = user.ID
app.buffered_render_page(w, "tpl/list.tpl", PageGlobalData{TweetTrove: trove}, data) app.buffered_render_page(w, "tpl/follows.tpl", PageGlobalData{TweetTrove: trove}, data)
} }

View File

@ -0,0 +1,11 @@
{{define "title"}}{{.Title}}{{end}}
{{define "main"}}
{{template "user-header" (user .HeaderUserID)}}
<h1>
{{.Title}}
</h1>
{{template "list" .UserIDs}}
{{end}}

View File

@ -1,6 +0,0 @@
{{define "title"}}Home{{end}}
{{define "main"}}
<h1>Hello!</h1>
{{end}}