Use UniFile for local source file handling

This commit is contained in:
arkon
2023-11-26 15:59:31 -05:00
parent 46aeab9a7a
commit ca54984344
20 changed files with 110 additions and 95 deletions

View File

@ -1,12 +1,13 @@
package tachiyomi.source.local.io
import java.io.File
import com.hippo.unifile.UniFile
import tachiyomi.core.storage.extension
object Archive {
private val SUPPORTED_ARCHIVE_TYPES = listOf("zip", "cbz", "rar", "cbr", "epub")
fun isSupported(file: File): Boolean = with(file) {
return extension.lowercase() in SUPPORTED_ARCHIVE_TYPES
fun isSupported(file: UniFile): Boolean {
return file.extension in SUPPORTED_ARCHIVE_TYPES
}
}

View File

@ -1,18 +1,19 @@
package tachiyomi.source.local.io
import java.io.File
import com.hippo.unifile.UniFile
import tachiyomi.core.storage.extension
sealed interface Format {
data class Directory(val file: File) : Format
data class Zip(val file: File) : Format
data class Rar(val file: File) : Format
data class Epub(val file: File) : Format
data class Directory(val file: UniFile) : Format
data class Zip(val file: UniFile) : Format
data class Rar(val file: UniFile) : Format
data class Epub(val file: UniFile) : Format
class UnknownFormatException : Exception()
companion object {
fun valueOf(file: File) = with(file) {
fun valueOf(file: UniFile) = with(file) {
when {
isDirectory -> Directory(this)
extension.equals("zip", true) || extension.equals("cbz", true) -> Zip(this)

View File

@ -1,14 +1,14 @@
package tachiyomi.source.local.io
import java.io.File
import com.hippo.unifile.UniFile
expect class LocalSourceFileSystem {
fun getBaseDirectory(): File
fun getBaseDirectory(): UniFile?
fun getFilesInBaseDirectory(): List<File>
fun getFilesInBaseDirectory(): List<UniFile>
fun getMangaDirectory(name: String): File?
fun getMangaDirectory(name: String): UniFile?
fun getFilesInMangaDirectory(name: String): List<File>
fun getFilesInMangaDirectory(name: String): List<UniFile>
}