mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-25 10:37:51 +02:00
Use unified storage location for local source
This commit is contained in:
@ -73,7 +73,7 @@ actual class LocalSource(
|
||||
override suspend fun getLatestUpdates(page: Int) = getSearchManga(page, "", LATEST_FILTERS)
|
||||
|
||||
override suspend fun getSearchManga(page: Int, query: String, filters: FilterList): MangasPage {
|
||||
val baseDirsFiles = fileSystem.getFilesInBaseDirectories()
|
||||
val baseDirFiles = fileSystem.getFilesInBaseDirectory()
|
||||
val lastModifiedLimit by lazy {
|
||||
if (filters === LATEST_FILTERS) {
|
||||
System.currentTimeMillis() - LATEST_THRESHOLD
|
||||
@ -81,7 +81,7 @@ actual class LocalSource(
|
||||
0L
|
||||
}
|
||||
}
|
||||
var mangaDirs = baseDirsFiles
|
||||
var mangaDirs = baseDirFiles
|
||||
// Filter out files that are hidden and is not a folder
|
||||
.filter { it.isDirectory && !it.name.startsWith('.') }
|
||||
.distinctBy { it.name }
|
||||
@ -308,9 +308,8 @@ actual class LocalSource(
|
||||
|
||||
fun getFormat(chapter: SChapter): Format {
|
||||
try {
|
||||
return fileSystem.getBaseDirectories()
|
||||
.map { dir -> File(dir, chapter.url) }
|
||||
.find { it.exists() }
|
||||
return File(fileSystem.getBaseDirectory(), chapter.url)
|
||||
.takeIf { it.exists() }
|
||||
?.let(Format.Companion::valueOf)
|
||||
?: throw Exception(context.stringResource(MR.strings.chapter_not_found))
|
||||
} catch (e: Format.UnknownFormatException) {
|
||||
|
@ -1,37 +1,28 @@
|
||||
package tachiyomi.source.local.io
|
||||
|
||||
import android.content.Context
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
import tachiyomi.core.i18n.stringResource
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.core.provider.FolderProvider
|
||||
import java.io.File
|
||||
|
||||
actual class LocalSourceFileSystem(
|
||||
private val context: Context,
|
||||
private val folderProvider: FolderProvider,
|
||||
) {
|
||||
|
||||
private val baseFolderLocation = "${context.stringResource(MR.strings.app_name)}${File.separator}local"
|
||||
|
||||
actual fun getBaseDirectories(): Sequence<File> {
|
||||
return DiskUtil.getExternalStorages(context)
|
||||
.map { File(it.absolutePath, baseFolderLocation) }
|
||||
.asSequence()
|
||||
actual fun getBaseDirectory(): File {
|
||||
return File(folderProvider.directory(), "local")
|
||||
}
|
||||
|
||||
actual fun getFilesInBaseDirectories(): Sequence<File> {
|
||||
return getBaseDirectories()
|
||||
// Get all the files inside all baseDir
|
||||
.flatMap { it.listFiles().orEmpty().toList() }
|
||||
actual fun getFilesInBaseDirectory(): List<File> {
|
||||
return getBaseDirectory().listFiles().orEmpty().toList()
|
||||
}
|
||||
|
||||
actual fun getMangaDirectory(name: String): File? {
|
||||
return getFilesInBaseDirectories()
|
||||
return getFilesInBaseDirectory()
|
||||
// Get the first mangaDir or null
|
||||
.firstOrNull { it.isDirectory && it.name == name }
|
||||
}
|
||||
|
||||
actual fun getFilesInMangaDirectory(name: String): Sequence<File> {
|
||||
return getFilesInBaseDirectories()
|
||||
actual fun getFilesInMangaDirectory(name: String): List<File> {
|
||||
return getFilesInBaseDirectory()
|
||||
// Filter out ones that are not related to the manga and is not a directory
|
||||
.filter { it.isDirectory && it.name == name }
|
||||
// Get all the files inside the filtered folders
|
||||
|
@ -4,11 +4,11 @@ import java.io.File
|
||||
|
||||
expect class LocalSourceFileSystem {
|
||||
|
||||
fun getBaseDirectories(): Sequence<File>
|
||||
fun getBaseDirectory(): File
|
||||
|
||||
fun getFilesInBaseDirectories(): Sequence<File>
|
||||
fun getFilesInBaseDirectory(): List<File>
|
||||
|
||||
fun getMangaDirectory(name: String): File?
|
||||
|
||||
fun getFilesInMangaDirectory(name: String): Sequence<File>
|
||||
fun getFilesInMangaDirectory(name: String): List<File>
|
||||
}
|
||||
|
Reference in New Issue
Block a user