diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-11-13 08:44:07 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-11-13 08:44:07 +0000 |
| commit | 17643797517693664e6d4f5e5911b9855d6c484b (patch) | |
| tree | 7d01860222cd57206599816582c18da53fae308b /app/src/main/java/org/terst/feedreader/ui | |
| parent | fc25307e7f258b1043e1367a44a8800d03085c66 (diff) | |
Close the class: a caller can no longer forget where the article lives
The fix before this made site-relative images zoomable by resolving them
against the article's own address. It left the parameter optional, which leaves
the bug one forgetful call site away from coming back -- and coming back
silently, as every image on a site-relative feed quietly refusing to zoom,
which is exactly how it went unnoticed on Ftrain in the first place.
It has no default now. Null is still a legitimate answer, because an article
with no address genuinely cannot resolve anything, but it has to be given on
purpose. A future reader surface that omits it fails to compile rather than
shipping the old behaviour.
Nothing about what the app does changed: the same 157 tests pass, and the six
test call sites that relied on the default now say baseUrl = null, which is
what they always meant.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/ui')
| -rw-r--r-- | app/src/main/java/org/terst/feedreader/ui/ImageZoomLinks.kt | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/app/src/main/java/org/terst/feedreader/ui/ImageZoomLinks.kt b/app/src/main/java/org/terst/feedreader/ui/ImageZoomLinks.kt index d924c02..179955e 100644 --- a/app/src/main/java/org/terst/feedreader/ui/ImageZoomLinks.kt +++ b/app/src/main/java/org/terst/feedreader/ui/ImageZoomLinks.kt @@ -36,8 +36,14 @@ private val imageFileExtensions = listOf(".jpg", ".jpeg", ".png", ".gif", ".webp * something already (ReaderExtractor's synthesized YouTube thumbnail is precisely this shape, * and wrapping it would swallow the tap that plays the video). Those are still zoomable when * the link points at an image file, which [zoomableImageTarget] handles on the other side. + * + * [baseUrl] is where the article itself lives, used to resolve an image address the feed wrote + * in shorthand. It has no default, deliberately: a caller that omits it does not silently get + * the behaviour that caused this bug -- every image on a site-relative feed like Ftrain's + * un-zoomable -- it fails to compile. Null is still a legitimate answer when there genuinely is + * no article address, but it has to be given on purpose rather than by forgetting. */ -fun linkifyImagesForZoom(html: String, baseUrl: String? = null): String = buildString { +fun linkifyImagesForZoom(html: String, baseUrl: String?): String = buildString { var copiedUpTo = 0 var anchorDepth = 0 for (tag in anchorOrImageTagRegex.findAll(html)) { |
