From e70a4c43cd2711e4b6457dda2c207ddf2d3cb586 Mon Sep 17 00:00:00 2001 From: AKP Date: Sat, 18 Jan 2025 12:48:45 +0000 Subject: fix: clear cached content when feed URL changes Also prepare release 0.3.8 --- CHANGELOG.md | 4 ++++ walrss/internal/db/db.go | 6 ++++++ walrss/internal/http/edit.go | 4 ++++ walrss/internal/http/views/main.qtpl.html | 2 +- walrss/internal/http/views/main.qtpl.html.go | 4 +++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62cbf7a..0d88a36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +## 0.3.8 - 2025-01-18 +### Fixed +* Cached feed content and corresponding etags/last modified headers are now cleared when the URL of a feed entry is updated + ## 0.3.7 - 2023-04-08 ### Fixed * Remove potential race condition caused by using `RLock` instead of `Lock` diff --git a/walrss/internal/db/db.go b/walrss/internal/db/db.go index 604ef91..880644f 100644 --- a/walrss/internal/db/db.go +++ b/walrss/internal/db/db.go @@ -62,6 +62,12 @@ func (f *Feed) CacheWithLastModified(lastModified, content string) { f.CachedContent = content } +func (f *Feed) ClearCache() { + f.LastEtag = "" + f.LastModified = "" + f.CachedContent = "" +} + type FeedSlice []*Feed func (f FeedSlice) Len() int { diff --git a/walrss/internal/http/edit.go b/walrss/internal/http/edit.go index 657989a..f126710 100644 --- a/walrss/internal/http/edit.go +++ b/walrss/internal/http/edit.go @@ -107,6 +107,10 @@ func (s *Server) editFeedItem(ctx *fiber.Ctx) error { feed.Name = ctx.FormValue("name") feed.URL = ctx.FormValue("url") + if urlChanged := feed.URL != ctx.FormValue("old-url"); urlChanged { + feed.ClearCache() + } + if err := core.UpdateFeed(s.state, feed); err != nil { return err } diff --git a/walrss/internal/http/views/main.qtpl.html b/walrss/internal/http/views/main.qtpl.html index 191f8f7..a6b5843 100644 --- a/walrss/internal/http/views/main.qtpl.html +++ b/walrss/internal/http/views/main.qtpl.html @@ -186,7 +186,7 @@ name="url" id="feed-{%s= id %}-url" value="{%j url %}" - > + >