Restore covers only once
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.koitharu.kotatsu.main.domain
|
||||
|
||||
import androidx.collection.ArraySet
|
||||
import androidx.lifecycle.coroutineScope
|
||||
import coil.EventListener
|
||||
import coil.ImageLoader
|
||||
@@ -28,6 +29,8 @@ class CoverRestorer @Inject constructor(
|
||||
private val coilProvider: Provider<ImageLoader>,
|
||||
) : EventListener {
|
||||
|
||||
private val blacklist = ArraySet<String>()
|
||||
|
||||
override fun onError(request: ImageRequest, result: ErrorResult) {
|
||||
super.onError(request, result)
|
||||
if (!result.throwable.shouldRestore()) {
|
||||
@@ -42,12 +45,18 @@ class CoverRestorer @Inject constructor(
|
||||
}
|
||||
|
||||
private fun restoreManga(manga: Manga, request: ImageRequest) {
|
||||
val key = manga.publicUrl
|
||||
if (key in blacklist) {
|
||||
return
|
||||
}
|
||||
request.lifecycle.coroutineScope.launch {
|
||||
val restored = runCatchingCancellable {
|
||||
restoreMangaImpl(manga)
|
||||
}.getOrDefault(false)
|
||||
if (restored) {
|
||||
request.newBuilder().enqueueWith(coilProvider.get())
|
||||
} else {
|
||||
blacklist.add(key)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -67,12 +76,18 @@ class CoverRestorer @Inject constructor(
|
||||
}
|
||||
|
||||
private fun restoreBookmark(bookmark: Bookmark, request: ImageRequest) {
|
||||
val key = bookmark.imageUrl
|
||||
if (key in blacklist) {
|
||||
return
|
||||
}
|
||||
request.lifecycle.coroutineScope.launch {
|
||||
val restored = runCatchingCancellable {
|
||||
restoreBookmarkImpl(bookmark)
|
||||
}.getOrDefault(false)
|
||||
if (restored) {
|
||||
request.newBuilder().enqueueWith(coilProvider.get())
|
||||
} else {
|
||||
blacklist.add(key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user