refactor: Move archive related code to core.archive module

This commit is contained in:
Ahmad Ansori Palembani 2025-01-01 09:26:15 +07:00
parent 54a3059730
commit b4377a4609
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
19 changed files with 61 additions and 55 deletions

View file

@ -144,6 +144,7 @@ android {
}
dependencies {
implementation(projects.core.archive)
implementation(projects.core.main)
implementation(projects.data)
implementation(projects.domain)

View file

@ -12,8 +12,6 @@ import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
import eu.kanade.tachiyomi.util.storage.DiskUtil
import eu.kanade.tachiyomi.util.storage.EpubFile
import eu.kanade.tachiyomi.util.storage.fillMetadata
import eu.kanade.tachiyomi.util.system.ImageUtil
import eu.kanade.tachiyomi.util.system.extension
import eu.kanade.tachiyomi.util.system.nameWithoutExtension
@ -33,7 +31,8 @@ import nl.adaptivity.xmlutil.serialization.XML
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import yokai.core.archive.archiveReader
import yokai.core.archive.util.archiveReader
import yokai.core.archive.util.epubReader
import yokai.core.metadata.COMIC_INFO_FILE
import yokai.core.metadata.ComicInfo
import yokai.core.metadata.copyFromComicInfo
@ -42,6 +41,7 @@ import yokai.domain.chapter.services.ChapterRecognition
import yokai.domain.source.SourcePreferences
import yokai.domain.storage.StorageManager
import yokai.i18n.MR
import yokai.util.fillMetadata
import yokai.util.lang.getString
class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSource {
@ -410,7 +410,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
}
}
is Format.Epub -> {
EpubFile(format.file.archiveReader(context)).use { epub ->
format.file.epubReader(context).use { epub ->
val entry = epub.getImagesFromPages().firstOrNull()
entry?.let { updateCover(manga, epub.getInputStream(it)!!, context) }
@ -433,7 +433,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
true
}
is Format.Epub -> {
EpubFile(format.file.archiveReader(context)).use { epub ->
format.file.epubReader(context).use { epub ->
epub.fillMetadata(chapter, manga)
}
true

View file

@ -10,7 +10,8 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.util.system.withIOContext
import yokai.core.archive.archiveReader
import yokai.core.archive.util.archiveReader
import yokai.core.archive.util.epubReader
import yokai.i18n.MR
import yokai.util.lang.getString
@ -82,7 +83,7 @@ class ChapterLoader(
when (format) {
is LocalSource.Format.Directory -> DirectoryPageLoader(format.file)
is LocalSource.Format.Archive -> ArchivePageLoader(format.file.archiveReader(context))
is LocalSource.Format.Epub -> EpubPageLoader(format.file.archiveReader(context))
is LocalSource.Format.Epub -> EpubPageLoader(format.file.epubReader(context))
}
}
else -> error(context.getString(MR.strings.source_not_installed))

View file

@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import uy.kohesive.injekt.injectLazy
import yokai.core.archive.archiveReader
import yokai.core.archive.util.archiveReader
/**
* Loader used to load a chapter from the downloaded chapters.

View file

@ -2,21 +2,15 @@ package eu.kanade.tachiyomi.ui.reader.loader
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.util.storage.EpubFile
import yokai.core.archive.ArchiveReader
import yokai.core.archive.EpubReader
/**
* Loader used to load a chapter from a .epub file.
*/
class EpubPageLoader(reader: ArchiveReader) : PageLoader() {
class EpubPageLoader(private val epub: EpubReader) : PageLoader() {
override val isLocal: Boolean = true
/**
* The epub file.
*/
private val epub = EpubFile(reader)
/**
* Recycles this loader and the open zip.
*/

View file

@ -1,15 +1,16 @@
package eu.kanade.tachiyomi.util.storage
package yokai.util
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.*
import java.util.Locale
import yokai.core.archive.EpubReader
/**
* Fills manga and chapter metadata using this epub file's metadata.
*/
fun EpubFile.fillMetadata(chapter: SChapter, manga: SManga) {
fun EpubReader.fillMetadata(chapter: SChapter, manga: SManga) {
val ref = getPackageHref()
val doc = getPackageDocument(ref)