Fix invalid feeds persisting after failed initial update
All checks were successful
Test and build Docker image / docker (push) Successful in 27s

This commit is contained in:
Joakim Hellsén 2026-05-31 04:25:51 +02:00
commit 459df727a9
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
4 changed files with 107 additions and 30 deletions

View file

@ -282,20 +282,26 @@ def get_global_delivery_mode(reader: Reader) -> str:
return global_delivery_mode if global_delivery_mode in {"embed", "text"} else "embed"
def get_autodiscover_links(reader: Reader, feed_url: str) -> list[AutodiscoverLink]:
def get_autodiscover_links(
reader: Reader,
feed_url: str,
stored_links: object | None = None,
) -> list[AutodiscoverLink]:
"""Return valid autodiscovered links stored for a failed feed update.
Args:
reader: The Reader instance.
feed_url: The URL that failed to parse as a feed.
stored_links: Optional advertised links preserved before deleting an invalid feed.
Returns:
Valid discovered feed link dictionaries.
"""
try:
stored_links = reader.get_tag(feed_url, ".reader.autodiscover", [])
except ReaderError:
return []
if stored_links is None:
try:
stored_links = reader.get_tag(feed_url, ".reader.autodiscover", [])
except ReaderError:
return []
if not isinstance(stored_links, list):
return []
@ -440,7 +446,7 @@ async def post_create_feed(
try:
create_feed(reader, feed_url, webhook_dropdown)
except FeedUpdateError as exception:
autodiscover_links = get_autodiscover_links(reader, clean_feed_url)
autodiscover_links = get_autodiscover_links(reader, clean_feed_url, exception.autodiscover_links)
if not autodiscover_links:
raise