From 60ac688dbc35f3a4ec4d9d98cc626077233ec5a8 Mon Sep 17 00:00:00 2001 From: Alessio Date: Sun, 31 Dec 2023 18:12:38 -0600 Subject: [PATCH] Add refreshing for user followers/followees --- internal/webserver/handler_user_feed.go | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/internal/webserver/handler_user_feed.go b/internal/webserver/handler_user_feed.go index 1d86940..4f18197 100644 --- a/internal/webserver/handler_user_feed.go +++ b/internal/webserver/handler_user_feed.go @@ -113,13 +113,50 @@ func (app *Application) UserFeed(w http.ResponseWriter, r *http.Request) { } func (app *Application) UserFollowees(w http.ResponseWriter, r *http.Request, user scraper.User) { + if r.URL.Query().Has("scrape") { + if app.IsScrapingDisabled { + app.InfoLog.Printf("Would have scraped: %s", r.URL.Path) + http.Error(w, "Scraping is disabled (are you logged in?)", 401) + return + } + + // Run scraper + trove, err := scraper.GetFollowees(user.ID, 200) // TODO: parameterizable + if err != nil { + app.ErrorLog.Print(err) + // TOOD: show error in UI + } + app.Profile.SaveTweetTrove(trove, false) + app.Profile.SaveAsFolloweesList(user.ID, trove) + go app.Profile.SaveTweetTrove(trove, true) + } + data, trove := NewListData(app.Profile.GetFollowees(user.ID)) 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.HeaderUserID = user.ID app.buffered_render_page(w, "tpl/list.tpl", PageGlobalData{TweetTrove: trove}, data) } + func (app *Application) UserFollowers(w http.ResponseWriter, r *http.Request, user scraper.User) { + if r.URL.Query().Has("scrape") { + if app.IsScrapingDisabled { + app.InfoLog.Printf("Would have scraped: %s", r.URL.Path) + http.Error(w, "Scraping is disabled (are you logged in?)", 401) + return + } + + // Run scraper + trove, err := scraper.GetFollowers(user.ID, 200) // TODO: parameterizable + if err != nil { + app.ErrorLog.Print(err) + // TOOD: show error in UI + } + app.Profile.SaveTweetTrove(trove, false) + app.Profile.SaveAsFollowersList(user.ID, trove) + go app.Profile.SaveTweetTrove(trove, true) + } + data, trove := NewListData(app.Profile.GetFollowers(user.ID)) trove.Users[user.ID] = user data.Title = fmt.Sprintf("@%s's followers", user.Handle)