From e3e315e2a69a9614e826b0e5861cdb60e36a9a8d Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 30 Mar 2025 10:43:05 +0300 Subject: [PATCH] Skip local directories with .notamanga file --- .../koitharu/kotatsu/local/data/LocalMangaRepository.kt | 9 +++++---- gradle/libs.versions.toml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalMangaRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalMangaRepository.kt index c381bfcd1..998e387c4 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalMangaRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/LocalMangaRepository.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.local.data -import android.net.Uri import androidx.core.net.toFile import androidx.core.net.toUri import kotlinx.coroutines.Dispatchers @@ -17,7 +16,6 @@ import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.util.AlphanumComparator import org.koitharu.kotatsu.core.util.ext.deleteAwait -import org.koitharu.kotatsu.core.util.ext.isWriteable import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug import org.koitharu.kotatsu.core.util.ext.takeIfWriteable import org.koitharu.kotatsu.core.util.ext.withChildren @@ -45,6 +43,7 @@ import javax.inject.Inject import javax.inject.Singleton private const val MAX_PARALLELISM = 4 +private const val FILENAME_SKIP = ".notamanga" @Singleton class LocalMangaRepository @Inject constructor( @@ -140,7 +139,7 @@ class LocalMangaRepository @Inject constructor( } suspend fun delete(manga: Manga): Boolean { - val file = Uri.parse(manga.url).toFile() + val file = manga.url.toUri().toFile() val result = file.deleteAwait() if (result) { localMangaIndex.delete(manga.id) @@ -256,8 +255,10 @@ class LocalMangaRepository @Inject constructor( private suspend fun getAllFiles() = storageManager.getReadableDirs() .asSequence() .flatMap { dir -> - dir.withChildren { children -> children.filterNot { it.isHidden }.toList() } + dir.withChildren { children -> children.filterNot { it.isHidden || it.shouldSkip() }.toList() } } private fun Collection.unwrap(): List = map { it.manga } + + private fun File.shouldSkip(): Boolean = isDirectory && File(this, FILENAME_SKIP).exists() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cc549fbca..e8f748d61 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ material = "1.13.0-alpha12" moshi = "1.15.2" okhttp = "4.12.0" okio = "3.10.2" -parsers = "dbb04d2051" +parsers = "8bb0c4f4f1" preference = "1.2.1" recyclerview = "1.4.0" room = "2.6.1"