More blocking fixes
This commit is contained in:
@@ -142,7 +142,7 @@ class GalleryAdder {
|
||||
manga.date_added = System.currentTimeMillis()
|
||||
}
|
||||
|
||||
db.insertManga(manga).executeOnIO()
|
||||
db.insertManga(manga).executeAsBlocking()
|
||||
|
||||
// Fetch and copy chapters
|
||||
try {
|
||||
|
||||
@@ -345,7 +345,7 @@ class FavoritesSyncHelper(val context: Context) {
|
||||
if (manga?.favorite == true) {
|
||||
manga.favorite = false
|
||||
manga.date_added = 0
|
||||
db.updateMangaFavorite(manga).executeOnIO()
|
||||
db.updateMangaFavorite(manga).executeAsBlocking()
|
||||
removedManga += manga
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import exh.metadata.metadata.MangaDexSearchMetadata
|
||||
import exh.metadata.metadata.base.RaisedTag
|
||||
import exh.metadata.metadata.base.getFlatMetadataForManga
|
||||
import exh.metadata.metadata.base.insertFlatMetadata
|
||||
import exh.metadata.metadata.base.insertFlatMetadataAsync
|
||||
import exh.metadata.metadata.base.insertFlatMetadataCompletable
|
||||
import exh.util.executeOnIO
|
||||
import exh.util.floor
|
||||
import exh.util.nullIfZero
|
||||
@@ -65,7 +65,7 @@ class ApiMangaParser(private val lang: String) {
|
||||
}.flatMapCompletable {
|
||||
if (mangaId != null) {
|
||||
it.mangaId = mangaId
|
||||
db.insertFlatMetadata(it.flatten())
|
||||
db.insertFlatMetadataCompletable(it.flatten())
|
||||
} else Completable.complete()
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ class ApiMangaParser(private val lang: String) {
|
||||
parseInfoIntoMetadata(metadata, input, coverUrls)
|
||||
if (mangaId != null) {
|
||||
metadata.mangaId = mangaId
|
||||
db.insertFlatMetadataAsync(metadata.flatten()).await()
|
||||
db.insertFlatMetadata(metadata.flatten())
|
||||
}
|
||||
|
||||
return metadata.createMangaInfo(manga)
|
||||
|
||||
@@ -5,7 +5,6 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import exh.metadata.sql.models.SearchMetadata
|
||||
import exh.metadata.sql.models.SearchTag
|
||||
import exh.metadata.sql.models.SearchTitle
|
||||
import exh.util.executeOnIO
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
@@ -66,7 +65,7 @@ private fun <T> preparedOperationFromSingle(single: Single<T>): PreparedOperatio
|
||||
* Notice: Blocking I/O operation should not be executed on the Main Thread,
|
||||
* it can cause ANR (Activity Not Responding dialog), block the UI and drop animations frames.
|
||||
* So please, execute blocking I/O operation only from background thread.
|
||||
* See [WorkerThread].
|
||||
* See [androidx.annotation.WorkerThread].
|
||||
*
|
||||
* @return nullable result of operation.
|
||||
*/
|
||||
@@ -93,7 +92,7 @@ private fun <T> preparedOperationFromSingle(single: Single<T>): PreparedOperatio
|
||||
}
|
||||
}
|
||||
|
||||
fun DatabaseHelper.insertFlatMetadata(flatMetadata: FlatMetadata): Completable = Completable.fromCallable {
|
||||
fun DatabaseHelper.insertFlatMetadata(flatMetadata: FlatMetadata) {
|
||||
require(flatMetadata.metadata.mangaId != -1L)
|
||||
|
||||
inTransaction {
|
||||
@@ -103,12 +102,16 @@ fun DatabaseHelper.insertFlatMetadata(flatMetadata: FlatMetadata): Completable =
|
||||
}
|
||||
}
|
||||
|
||||
fun DatabaseHelper.insertFlatMetadataCompletable(flatMetadata: FlatMetadata): Completable = Completable.fromCallable {
|
||||
insertFlatMetadata(flatMetadata)
|
||||
}
|
||||
|
||||
suspend fun DatabaseHelper.insertFlatMetadataAsync(flatMetadata: FlatMetadata): Deferred<Unit> = coroutineScope {
|
||||
async {
|
||||
require(flatMetadata.metadata.mangaId != -1L)
|
||||
|
||||
inTransaction {
|
||||
insertSearchMetadata(flatMetadata.metadata).executeOnIO()
|
||||
insertSearchMetadata(flatMetadata.metadata).executeAsBlocking()
|
||||
setSearchTagsForManga(flatMetadata.metadata.mangaId, flatMetadata.tags)
|
||||
setSearchTitlesForManga(flatMetadata.metadata.mangaId, flatMetadata.titles)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user