fix(madara): properly parse srcset with image descriptors (w/x suffixes)#17518
Open
IMXEren wants to merge 1 commit into
Open
fix(madara): properly parse srcset with image descriptors (w/x suffixes)#17518IMXEren wants to merge 1 commit into
IMXEren wants to merge 1 commit into
Conversation
Refactored getSrcSetImage() to correctly handle comma-separated srcset entries with width (w) and pixel-density (x) descriptors. Previously the method used to compare URLs lexicographically, which breaks on srcset="link-34x68.jpg 34w, link-330x700.jpg 330w" and chooses link-34x68.jpg. Adds IMAGE_DESCRIPTOR_REGEX companion constant and prefers highest-resolution images by descriptor value, falling back to lexicographical URL comparison when no descriptors are present.
Contributor
Author
|
Hey @vetleledaal, just checking in to see if everything looks good here or if anything is missing. Thanks! |
vetleledaal
reviewed
Jul 14, 2026
vetleledaal
left a comment
Contributor
There was a problem hiding this comment.
Need additional consideration when making changes to Madara as it will update a lot of extensions (approx. 300).
I made something similar in the past, but it was specific to that one source (via #9815):
| .maxOfOrNull(String::toString) | ||
| protected open fun String.getSrcSetImage(): String? { | ||
| val images = this.split(",") | ||
| .map { it.trim().split("\\s+".toRegex()) } |
Contributor
There was a problem hiding this comment.
Move the class to avoid recompilation of invariant regex.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refactored getSrcSetImage() to correctly handle comma-separated srcset entries with width (w) and pixel-density (x) descriptors. Previously the method used to compare URLs lexicographically, which breaks on srcset="link-34x68.jpg 34w, link-330x700.jpg 330w" and chooses link-34x68.jpg.
Adds IMAGE_DESCRIPTOR_REGEX companion constant and prefers highest-resolution images by descriptor value, falling back to lexicographical URL comparison when no descriptors are present.
Checklist:
versionCodevalue inbuild.gradle.ktsbaseVersionCodeinbuild.gradle.kts(if updated multisrc theme code)contentWarningconfiguration inbuild.gradle.ktsappropriatelyidif a source's name or language were changedweb_hi_res_512.pngwhen adding a new extension