Alessio 24364a26b0 REFACTOR: rework the rendering helpers
- rendering helpers moved to their own file (separate from response helpers)
- create a unified render helper instead of "buffered_render_basic_X" and "buffered_render_tweet_X"
	- this helper takes 2 data objects: one with global data (tweet trove, logged in user, etc) and one page-specific
	- this lets us remove the disgusting interface type
- modify the User List template to use UserIDs indexing into a global data object instead of a list of Users
2023-12-31 15:56:12 -06:00

42 lines
1.2 KiB
Go

package webserver
import (
"net/http"
"gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper"
)
type ListData struct {
Title string
UserIDs []scraper.UserID
}
func NewListData(users []scraper.User) (ListData, scraper.TweetTrove) {
trove := scraper.NewTweetTrove()
data := ListData{
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) Lists(w http.ResponseWriter, r *http.Request) {
app.traceLog.Printf("'Lists' handler (path: %q)", r.URL.Path)
var users []scraper.User
err := app.Profile.DB.Select(&users, `
select id, display_name, handle, bio, following_count, followers_count, location, website, join_date, is_private, is_verified,
is_banned, is_deleted, profile_image_url, profile_image_local_path, banner_image_url, banner_image_local_path,
pinned_tweet_id, is_content_downloaded, is_followed
from users
where is_followed = 1`)
panic_if(err)
data, trove := NewListData(users)
data.Title = "Offline Follows"
app.buffered_render_page(w, "tpl/list.tpl", PageGlobalData{TweetTrove: trove}, data)
}