From 7ec2108812fbe0483111dbe996e29e5a621b583a Mon Sep 17 00:00:00 2001 From: Radon Rosborough Date: Sat, 4 May 2024 09:40:41 -0700 Subject: [PATCH] Massively improve findFile performance (#728) * Massively improve findFile performance * Update libs.versions.toml --------- Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> --- .../eu/kanade/tachiyomi/data/download/DownloadProvider.kt | 8 ++++---- .../java/eu/kanade/tachiyomi/data/download/Downloader.kt | 2 +- gradle/libs.versions.toml | 2 +- .../kotlin/tachiyomi/source/local/LocalSource.kt | 4 ++-- .../tachiyomi/source/local/io/LocalSourceFileSystem.kt | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index 2c978bed1..2ab5e55d9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -57,7 +57,7 @@ class DownloadProvider( * @param source the source to query. */ fun findSourceDir(source: Source): UniFile? { - return downloadsDir?.findFile(getSourceDirName(source), true) + return downloadsDir?.findFile(getSourceDirName(source)) } /** @@ -68,7 +68,7 @@ class DownloadProvider( */ fun findMangaDir(mangaTitle: String, source: Source): UniFile? { val sourceDir = findSourceDir(source) - return sourceDir?.findFile(getMangaDirName(mangaTitle), true) + return sourceDir?.findFile(getMangaDirName(mangaTitle)) } /** @@ -82,7 +82,7 @@ class DownloadProvider( fun findChapterDir(chapterName: String, chapterScanlator: String?, mangaTitle: String, source: Source): UniFile? { val mangaDir = findMangaDir(mangaTitle, source) return getValidChapterDirNames(chapterName, chapterScanlator).asSequence() - .mapNotNull { mangaDir?.findFile(it, true) } + .mapNotNull { mangaDir?.findFile(it) } .firstOrNull() } @@ -97,7 +97,7 @@ class DownloadProvider( val mangaDir = findMangaDir(manga.title, source) ?: return null to emptyList() return mangaDir to chapters.mapNotNull { chapter -> getValidChapterDirNames(chapter.name, chapter.scanlator).asSequence() - .mapNotNull { mangaDir.findFile(it, true) } + .mapNotNull { mangaDir.findFile(it) } .firstOrNull() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 7c8238d5a..11bfe28d1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -645,7 +645,7 @@ class Downloader( ) // Remove the old file - dir.findFile(COMIC_INFO_FILE, true)?.delete() + dir.findFile(COMIC_INFO_FILE)?.delete() dir.createFile(COMIC_INFO_FILE)!!.openOutputStream().use { val comicInfoString = xml.encodeToString(ComicInfo.serializer(), comicInfo) it.write(comicInfoString.toByteArray()) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2685b5344..b6776f997 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ quickjs-android = "app.cash.quickjs:quickjs-android:0.9.2" jsoup = "org.jsoup:jsoup:1.17.2" disklrucache = "com.jakewharton:disklrucache:2.0.2" -unifile = "com.github.tachiyomiorg:unifile:7c257e1c64" +unifile = "com.github.tachiyomiorg:unifile:e0def6b3dc" common-compress = "org.apache.commons:commons-compress:1.26.1" junrar = "com.github.junrar:junrar:7.5.5" diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt index 9e2aa8406..06ed4551d 100644 --- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt +++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt @@ -300,8 +300,8 @@ actual class LocalSource( try { val (mangaDirName, chapterName) = chapter.url.split('/', limit = 2) return fileSystem.getBaseDirectory() - ?.findFile(mangaDirName, true) - ?.findFile(chapterName, true) + ?.findFile(mangaDirName) + ?.findFile(chapterName) ?.let(Format.Companion::valueOf) ?: throw Exception(context.stringResource(MR.strings.chapter_not_found)) } catch (e: Format.UnknownFormatException) { diff --git a/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt b/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt index 402df7e00..69faaa2b7 100644 --- a/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt +++ b/source-local/src/androidMain/kotlin/tachiyomi/source/local/io/LocalSourceFileSystem.kt @@ -17,7 +17,7 @@ actual class LocalSourceFileSystem( actual fun getMangaDirectory(name: String): UniFile? { return getBaseDirectory() - ?.findFile(name, true) + ?.findFile(name) ?.takeIf { it.isDirectory } }