From ffcba7b2dc82d7de6880d45822efc00f6f0ce399 Mon Sep 17 00:00:00 2001 From: AbdallahMehiz Date: Mon, 29 Jan 2024 11:30:42 +0100 Subject: [PATCH] use `SeekableInMemoryByteChannel` instead of `tempFile` --- .../eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt | 2 +- .../tachiyomi/ui/reader/loader/SevenZipPageLoader.kt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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 c273df63d..a3ebcd9bb 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 @@ -105,7 +105,7 @@ class ChapterLoader( is Format.Directory -> DirectoryPageLoader(format.file) is Format.Zip -> ZipPageLoader(tempFileManager.createTempFile(format.file)) is Format.SevenZip -> try { - SevenZipPageLoader(tempFileManager.createTempFile(format.file)) { + SevenZipPageLoader(format.file) { GlobalScope.launchUI { context.toast(context.stringResource(MR.strings.loader_7zip_slow_archives, it)) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt index d3942cbd9..f3d83d6a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/SevenZipPageLoader.kt @@ -1,20 +1,21 @@ package eu.kanade.tachiyomi.ui.reader.loader +import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.storage.SevenZUtil.getImages import org.apache.commons.compress.archivers.sevenz.SevenZFile -import java.io.File +import org.apache.commons.compress.utils.SeekableInMemoryByteChannel /** * Loader used to load a chapter from a .7z or .cb7 file. */ internal class SevenZipPageLoader( - private val file: File, + private val file: UniFile, private val notifySlowArchive: (method: String) -> Unit, ) : PageLoader() { - private val zip by lazy { SevenZFile(file) } + private val zip by lazy { SevenZFile(SeekableInMemoryByteChannel(file.openInputStream().readBytes())) } override var isLocal: Boolean = true