diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt index 960c7aa87..d53bcd4b1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt @@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.download.DownloadProvider import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter +import org.apache.commons.compress.archivers.dump.UnsupportedCompressionAlgorithmException import tachiyomi.core.i18n.stringResource import tachiyomi.core.storage.UniFileTempFileManager import tachiyomi.core.util.lang.withIOContext @@ -98,7 +99,11 @@ class ChapterLoader( when (format) { is Format.Directory -> DirectoryPageLoader(format.file) is Format.Zip -> ZipPageLoader(tempFileManager.createTempFile(format.file)) - is Format.SevenZip -> SevenZipPageLoader(tempFileManager.createTempFile(format.file)) + is Format.SevenZip -> try { + SevenZipPageLoader(tempFileManager.createTempFile(format.file)) + } catch (e: UnsupportedCompressionAlgorithmException) { + error(context.stringResource(MR.strings.loader_ppmd_error)) + } is Format.Rar -> try { RarPageLoader(tempFileManager.createTempFile(format.file)) } catch (e: UnsupportedRarV5Exception) { diff --git a/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt b/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt index bc30d59a4..6e5d55ef2 100644 --- a/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt +++ b/core/src/main/java/eu/kanade/tachiyomi/util/storage/SevenZUtil.kt @@ -1,14 +1,21 @@ package eu.kanade.tachiyomi.util.storage import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder +import org.apache.commons.compress.archivers.dump.UnsupportedCompressionAlgorithmException import org.apache.commons.compress.archivers.sevenz.SevenZFile import tachiyomi.core.util.system.ImageUtil +import java.io.IOException import java.io.InputStream object SevenZUtil { fun SevenZFile.getImages(): Sequence { - return generateSequence { runCatching { getNextEntry() }.getOrNull() } - .filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } } + return generateSequence { + try { + getNextEntry() + } catch (e: IOException) { + throw UnsupportedCompressionAlgorithmException() + } + }.filter { !it.isDirectory && ImageUtil.isImage(it.name) { getInputStream(it) } } .sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) } .map(::getInputStream) .map { it.use(InputStream::readBytes) } // ByteArray diff --git a/i18n/src/commonMain/resources/MR/base/strings.xml b/i18n/src/commonMain/resources/MR/base/strings.xml index 5214e41a8..155340fb1 100644 --- a/i18n/src/commonMain/resources/MR/base/strings.xml +++ b/i18n/src/commonMain/resources/MR/base/strings.xml @@ -776,6 +776,7 @@ No pages found Source not found RARv5 format is not supported + PPMd compression is not supported Updating library