REFACTOR: split Follows into its own template instead of piggybacking on Lists
This commit is contained in:
parent
5b6894eee2
commit
8d61aec316
@ -111,13 +111,9 @@ 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) {
|
|
||||||
// TODO
|
|
||||||
} else {
|
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
data := NewSearchPageData()
|
data := NewSearchPageData()
|
||||||
data.Feed = feed
|
data.Feed = feed
|
||||||
|
@ -18,13 +18,9 @@ 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) {
|
|
||||||
// TODO
|
|
||||||
} else {
|
|
||||||
panic(err)
|
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 {
|
||||||
// It's a Show More request
|
// It's a Show More request
|
||||||
|
@ -83,13 +83,9 @@ 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) {
|
|
||||||
// TODO
|
|
||||||
} else {
|
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
feed.Users[user.ID] = user
|
feed.Users[user.ID] = user
|
||||||
|
|
||||||
data := struct {
|
data := struct {
|
||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
11
internal/webserver/tpl/follows.tpl
Normal file
11
internal/webserver/tpl/follows.tpl
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{{define "title"}}{{.Title}}{{end}}
|
||||||
|
|
||||||
|
{{define "main"}}
|
||||||
|
{{template "user-header" (user .HeaderUserID)}}
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
{{.Title}}
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
{{template "list" .UserIDs}}
|
||||||
|
{{end}}
|
@ -1,6 +0,0 @@
|
|||||||
{{define "title"}}Home{{end}}
|
|
||||||
|
|
||||||
|
|
||||||
{{define "main"}}
|
|
||||||
<h1>Hello!</h1>
|
|
||||||
{{end}}
|
|
Loading…
x
Reference in New Issue
Block a user