
Use KMP in source modules Use KMP in source-api Expect LocalSource (cherry picked from commit 1abf01c4a030b089e6300cb284cc93f7ed323a22) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/AppModule.kt # source-api/build.gradle.kts # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/PagePreviewSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/FollowsSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/LoginSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/NamespaceSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/RandomMangaSource.kt # source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/UrlImportableSource.kt
40 lines
1.3 KiB
Kotlin
40 lines
1.3 KiB
Kotlin
package tachiyomi.source.local.io
|
|
|
|
import android.content.Context
|
|
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
|
import tachiyomi.source.local.R
|
|
import java.io.File
|
|
|
|
actual class LocalSourceFileSystem(
|
|
private val context: Context,
|
|
) {
|
|
|
|
private val baseFolderLocation = "${context.getString(R.string.app_name)}${File.separator}local"
|
|
|
|
actual fun getBaseDirectories(): Sequence<File> {
|
|
return DiskUtil.getExternalStorages(context)
|
|
.map { File(it.absolutePath, baseFolderLocation) }
|
|
.asSequence()
|
|
}
|
|
|
|
actual fun getFilesInBaseDirectories(): Sequence<File> {
|
|
return getBaseDirectories()
|
|
// Get all the files inside all baseDir
|
|
.flatMap { it.listFiles().orEmpty().toList() }
|
|
}
|
|
|
|
actual fun getMangaDirectory(name: String): File? {
|
|
return getFilesInBaseDirectories()
|
|
// Get the first mangaDir or null
|
|
.firstOrNull { it.isDirectory && it.name == name }
|
|
}
|
|
|
|
actual fun getFilesInMangaDirectory(name: String): Sequence<File> {
|
|
return getFilesInBaseDirectories()
|
|
// 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
|
|
.flatMap { it.listFiles().orEmpty().toList() }
|
|
}
|
|
}
|