Ignore network error for background progress update

This commit is contained in:
Koitharu
2025-07-07 13:46:37 +03:00
parent f0ba42b518
commit 088576cc9d
3 changed files with 11 additions and 3 deletions

View File

@@ -22,6 +22,7 @@ import org.koitharu.kotatsu.core.util.ext.EventFlow
import org.koitharu.kotatsu.core.util.ext.MutableEventFlow
import org.koitharu.kotatsu.core.util.ext.call
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import kotlin.coroutines.AbstractCoroutineContextElement
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext
@@ -80,10 +81,15 @@ abstract class BaseViewModel : ViewModel() {
protected fun MutableStateFlow<Int>.decrement() = update { it - 1 }
private fun createErrorHandler() = CoroutineExceptionHandler { _, throwable ->
private fun createErrorHandler() = CoroutineExceptionHandler { coroutineContext, throwable ->
throwable.printStackTraceDebug()
if (throwable !is CancellationException) {
if (coroutineContext[SkipErrors.key] == null && throwable !is CancellationException) {
errorEvent.call(throwable)
}
}
protected object SkipErrors : AbstractCoroutineContextElement(Key) {
private object Key : CoroutineContext.Key<SkipErrors>
}
}

View File

@@ -182,7 +182,7 @@ class DetailsViewModel @Inject constructor(
init {
loadingJob = doLoad(force = false)
launchJob(Dispatchers.Default) {
launchJob(Dispatchers.Default + SkipErrors) {
val manga = mangaDetails.firstOrNull { !it?.chapters.isNullOrEmpty() } ?: return@launchJob
val h = history.firstOrNull()
if (h != null) {