diff --git a/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt index 5bb792ff7..5cc7f1ad9 100644 --- a/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/category/CategoryRepositoryImpl.kt @@ -55,7 +55,7 @@ class CategoryRepositoryImpl( } override suspend fun updatePartial(updates: List) { - handler.await(true) { + handler.await(inTransaction = true) { for (update in updates) { updatePartialBlocking(update) } diff --git a/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt index d64532c13..be2b78c07 100644 --- a/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt @@ -78,7 +78,7 @@ class MangaRepositoryImpl( } override suspend fun insert(manga: Manga): Long? { - return handler.awaitOneOrNull(true) { + return handler.awaitOneOrNull(inTransaction = true) { // SY --> if (mangasQueries.getIdByUrlAndSource(manga.url, manga.source).executeAsOneOrNull() != null) { return@awaitOneOrNull mangasQueries.getIdByUrlAndSource(manga.url, manga.source) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index 1dfd51576..1f8a88ea3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -220,7 +220,7 @@ class DownloadCache( fun removeManga(manga: Manga) { val sourceDir = rootDownloadsDir.sourceDirs[manga.source] ?: return val mangaDirName = provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */) - if (mangaDirName in sourceDir.mangaDirs) { + if (sourceDir.mangaDirs.containsKey(mangaDirName)) { sourceDir.mangaDirs -= mangaDirName } @@ -286,9 +286,8 @@ class DownloadCache( val mangaDirs = sourceDir.dir.listFiles().orEmpty() .filterNot { it.name.isNullOrBlank() } .associate { it.name!! to MangaDirectory(it) } - .toMutableMap() - sourceDir.mangaDirs = mangaDirs + sourceDir.mangaDirs = ConcurrentHashMap(mangaDirs) mangaDirs.values.forEach { mangaDir -> val chapterDirs = mangaDir.dir.listFiles().orEmpty() @@ -325,7 +324,7 @@ class DownloadCache( /** * Returns a new map containing only the key entries of [transform] that are not null. */ - private inline fun Map.mapNotNullKeys(transform: (Map.Entry) -> R?): MutableMap { + private inline fun Map.mapNotNullKeys(transform: (Map.Entry) -> R?): ConcurrentHashMap { val mutableMap = ConcurrentHashMap() forEach { element -> transform(element)?.let { mutableMap[it] = element.value } } return mutableMap @@ -337,7 +336,7 @@ class DownloadCache( */ private class RootDirectory( val dir: UniFile, - var sourceDirs: MutableMap = mutableMapOf(), + var sourceDirs: ConcurrentHashMap = ConcurrentHashMap(), ) /** @@ -345,7 +344,7 @@ private class RootDirectory( */ private class SourceDirectory( val dir: UniFile, - var mangaDirs: MutableMap = mutableMapOf(), + var mangaDirs: ConcurrentHashMap = ConcurrentHashMap(), ) /**