diff --git a/internal/webserver/handler_bookmarks.go b/internal/webserver/handler_bookmarks.go index c30999c..84de2ee 100644 --- a/internal/webserver/handler_bookmarks.go +++ b/internal/webserver/handler_bookmarks.go @@ -5,11 +5,31 @@ import ( "net/http" "gitlab.com/offline-twitter/twitter_offline_engine/pkg/persistence" + "gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper" ) func (app *Application) Bookmarks(w http.ResponseWriter, r *http.Request) { app.traceLog.Printf("'Bookmarks' handler (path: %q)", r.URL.Path) + // Run a scrape if needed + 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.GetBookmarks(300) // TODO: parameterizable + if err != nil && !errors.Is(err, scraper.END_OF_FEED) { + app.ErrorLog.Print(err) + panic(err) // Return a toast + } + + app.Profile.SaveTweetTrove(trove, false) + go app.Profile.SaveTweetTrove(trove, true) + } + c := persistence.NewUserFeedBookmarksCursor(app.ActiveUser.Handle) err := parse_cursor_value(&c, r) if err != nil { diff --git a/internal/webserver/handler_search.go b/internal/webserver/handler_search.go index ad000ea..50b2868 100644 --- a/internal/webserver/handler_search.go +++ b/internal/webserver/handler_search.go @@ -104,7 +104,7 @@ func (app *Application) Search(w http.ResponseWriter, r *http.Request) { // Run scraper trove, err := scraper.Search(search_text, 1) // TODO: parameterizable - if err != nil { + if err != nil && !errors.Is(err, scraper.END_OF_FEED) { app.ErrorLog.Print(err) // TOOD: show error in UI } diff --git a/internal/webserver/tpl/bookmarks.tpl b/internal/webserver/tpl/bookmarks.tpl index 0b8d114..c3d8cf6 100644 --- a/internal/webserver/tpl/bookmarks.tpl +++ b/internal/webserver/tpl/bookmarks.tpl @@ -2,7 +2,24 @@ {{define "main"}}