diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsLoadUseCase.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsLoadUseCase.kt index e4c71e2cb..70d910265 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsLoadUseCase.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/domain/DetailsLoadUseCase.kt @@ -11,8 +11,8 @@ import kotlinx.coroutines.async import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.runInterruptible +import okio.IOException import org.koitharu.kotatsu.core.model.isLocal -import org.koitharu.kotatsu.core.os.NetworkState import org.koitharu.kotatsu.core.parser.MangaDataRepository import org.koitharu.kotatsu.core.parser.MangaIntent import org.koitharu.kotatsu.core.parser.MangaRepository @@ -33,7 +33,6 @@ class DetailsLoadUseCase @Inject constructor( private val mangaRepositoryFactory: MangaRepository.Factory, private val recoverUseCase: RecoverMangaUseCase, private val imageGetter: Html.ImageGetter, - private val networkState: NetworkState, ) { operator fun invoke(intent: MangaIntent): Flow = channelFlow { @@ -48,16 +47,15 @@ class DetailsLoadUseCase @Inject constructor( null } send(MangaDetails(manga, null, null, false)) - if (!networkState.value) { - // try load offline instead - local?.await()?.manga?.let { localManga -> + try { + val details = getDetails(manga) + send(MangaDetails(details, local?.peek(), details.description?.parseAsHtml(withImages = false), false)) + send(MangaDetails(details, local?.await(), details.description?.parseAsHtml(withImages = true), true)) + } catch (e: IOException) { + local?.await()?.manga?.also { localManga -> send(MangaDetails(localManga, null, localManga.description?.parseAsHtml(withImages = false), true)) - return@channelFlow - } + } ?: throw e } - val details = getDetails(manga) - send(MangaDetails(details, local?.peek(), details.description?.parseAsHtml(withImages = false), false)) - send(MangaDetails(details, local?.await(), details.description?.parseAsHtml(withImages = true), true)) } private suspend fun getDetails(seed: Manga) = runCatchingCancellable {