diff --git a/CHANGELOG.md b/CHANGELOG.md index d9e65598ea..4002e8496d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,7 +29,7 @@ The format is simplified version of [Keep a Changelog](https://keepachangelog.co - Fixed reader sometimes won't load images - Handle some uncaught crashes - Fixed crashes due to GestureDetector's firstEvent is sometimes null on some devices -- Fixed download failed caused by invalid XML 1.0 character +- Fixed download failed due to invalid XML 1.0 character - Fixed issues with shizuku in a multi user setup (@Redjard) ### Other diff --git a/app/src/main/java/yokai/core/metadata/ComicInfo.kt b/app/src/main/java/yokai/core/metadata/ComicInfo.kt index 9a33f1de90..9bc5abe050 100644 --- a/app/src/main/java/yokai/core/metadata/ComicInfo.kt +++ b/app/src/main/java/yokai/core/metadata/ComicInfo.kt @@ -234,12 +234,13 @@ enum class ComicInfoPublishingStatus( } // REF: https://www.w3.org/TR/xml/#charsets -fun String.stripNonValidXML1_0Characters(): String { - return this.filter { - val c = it.code - c == 0x9 || c == 0xA || c == 0xD || - ((c >= 0x20) && (c <= 0xD7FF)) || - ((c >= 0xE000) && (c <= 0xFFFD)) || - ((c >= 0x10000) && (c <= 0x10FFFF)) - } +fun String.stripNonValidXML1_0Characters() = filter { it.isValidXML1_0() } + +fun Char.isValidXML1_0() = code.let { c -> + c == 0x9 || + c == 0xA || + c == 0xD || + c in 0x20..0xD7FF || + c in 0xE000..0xFFFD || + c in 0x10000..0x10FFFF }