From 42646c601d47d8aec83099dea6db3c230e1592c5 Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Sun, 5 May 2024 23:28:29 +0700 Subject: [PATCH] performance: thumbnails are now forced to be saved in jpeg format --- api/reddit/post.go | 9 ++++++++- server/routes/page_subreddits_details.go | 2 ++ views/components/image_card.templ | 1 + views/subredditsview/detailsview/detailsview.templ | 6 +++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/api/reddit/post.go b/api/reddit/post.go index 7ea3715..e9ed7a0 100644 --- a/api/reddit/post.go +++ b/api/reddit/post.go @@ -294,6 +294,9 @@ func (post *Post) GetThumbnailTargetPath(cfg *config.Config) string { baseDownloadDir := cfg.String("download.directory") p := path.Join(baseDownloadDir, "_thumbnails", post.GetSubreddit(), post.GetImageFilename()) abs, _ := filepath.Abs(p) + if before, found := strings.CutSuffix(abs, ".png"); found { + return before + ".jpeg" + } return abs } @@ -305,7 +308,11 @@ func (post *Post) GetThumbnailTargetDir(cfg *config.Config) string { } func (post *Post) GetThumbnailRelativePath() string { - return path.Join("_thumbnails", post.GetSubreddit(), post.GetImageFilename()) + p := path.Join("_thumbnails", post.GetSubreddit(), post.GetImageFilename()) + if before, found := strings.CutSuffix(p, ".png"); found { + return before + ".jpeg" + } + return p } func (post *Post) GetImageRelativePath(device *models.Device) string { diff --git a/server/routes/page_subreddits_details.go b/server/routes/page_subreddits_details.go index 8915952..ad3444c 100644 --- a/server/routes/page_subreddits_details.go +++ b/server/routes/page_subreddits_details.go @@ -1,6 +1,7 @@ package routes import ( + "fmt" "net/http" "github.com/go-chi/chi/v5" @@ -32,6 +33,7 @@ func (routes *Routes) PageSubredditsDetails(rw http.ResponseWriter, r *http.Requ code, message := errs.HTTPMessage(err) rw.WriteHeader(code) data.Error = message + fmt.Println(data) if err := detailsview.Detailsview(c, data).Render(ctx, rw); err != nil { log.New(ctx).Err(err).Error("failed to render subreddit details page") } diff --git a/views/components/image_card.templ b/views/components/image_card.templ index 8f86a4a..8e7521f 100644 --- a/views/components/image_card.templ +++ b/views/components/image_card.templ @@ -27,6 +27,7 @@ templ ImageCard(data *models.Image, opts ImageCardOption) { class="object-contain max-w-[16rem] max-h-[16rem]" src={ fmt.Sprintf("/img/%s", data.ThumbnailRelativePath) } alt={ data.PostTitle } + loading="lazy" /> diff --git a/views/subredditsview/detailsview/detailsview.templ b/views/subredditsview/detailsview/detailsview.templ index 37f9d4e..7eaae7e 100644 --- a/views/subredditsview/detailsview/detailsview.templ +++ b/views/subredditsview/detailsview/detailsview.templ @@ -17,7 +17,11 @@ type Data struct { templ Detailsview(c *views.Context, data Data) { @components.Doctype() { - @components.Head(c, components.HeadTitle(fmt.Sprintf("Subreddit - %s", data.Subreddit.Name))) + if data.Subreddit != nil { + @components.Head(c, components.HeadTitle(fmt.Sprintf("Subreddit - %s", data.Subreddit.Name))) + } else { + @components.Head(c, components.HeadTitle("Subreddit - 404 NOT FOUND")) + } @components.Body(c) { @DetailsContent(c, data) @components.NotificationContainer()