From ad38a79752a0495bf838c418ea9b00115335c2e5 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Fri, 27 Nov 2020 13:01:58 -0500 Subject: [PATCH] Use a shared flow for the exh redirect to latest --- .../eu/kanade/tachiyomi/ui/manga/MangaController.kt | 7 +++---- .../eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt | 11 ++++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index d0107f5bb..969b2a6d8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -115,7 +115,6 @@ import kotlinx.coroutines.withContext import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.recyclerview.scrollEvents import reactivecircus.flowbinding.swiperefreshlayout.refreshes -import rx.android.schedulers.AndroidSchedulers import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -344,13 +343,13 @@ class MangaController : } } - presenter.redirectUserRelay - .observeOn(AndroidSchedulers.mainThread()) - .subscribeUntilDestroy { redirect -> + presenter.redirectFlow + .onEach { redirect -> XLog.d("Redirecting to updated manga (manga.id: %s, manga.title: %s, update: %s)!", redirect.manga.id, redirect.manga.title, redirect.update) // Replace self router?.replaceTopController(MangaController(redirect).withFadeTransaction()) } + .launchIn(scope) updateFilterIconState() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index bc1adcbed..30e55680e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -4,7 +4,7 @@ import android.content.Context import android.net.Uri import android.os.Bundle import android.os.Environment -import com.jakewharton.rxrelay.BehaviorRelay +import com.elvishew.xlog.XLog import com.jakewharton.rxrelay.PublishRelay import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache @@ -59,6 +59,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext @@ -126,7 +127,7 @@ class MangaPresenter( private val updateHelper: EHentaiUpdateHelper by injectLazy() - val redirectUserRelay: BehaviorRelay = BehaviorRelay.create() + val redirectFlow: MutableSharedFlow = MutableSharedFlow() data class EXHRedirect(val manga: Manga, val update: Boolean) @@ -221,10 +222,11 @@ class MangaPresenter( // Redirect if we are not the accepted root if (manga.id != acceptedChain.manga.id && acceptedChain.manga.favorite) { // Update if any of our chapters are not in accepted manga's chapters + XLog.disableStackTrace().d("Found accepted manga ${manga.url}") val ourChapterUrls = chapters.map { it.url }.toSet() val acceptedChapterUrls = acceptedChain.chapters.map { it.url }.toSet() val update = (ourChapterUrls - acceptedChapterUrls).isNotEmpty() - redirectUserRelay.call( + redirectFlow.tryEmit( EXHRedirect( acceptedChain.manga, update @@ -365,8 +367,7 @@ class MangaPresenter( } fun editCoverWithStream(uri: Uri): Boolean { - val inputStream = - downloadManager.context.contentResolver.openInputStream(uri) ?: return false + val inputStream = downloadManager.context.contentResolver.openInputStream(uri) ?: return false if (manga.source == LocalSource.ID) { LocalSource.updateCover(downloadManager.context, manga, inputStream) manga.updateCoverLastModified(db)