From c77e023bef45c2482b4c31a4f312dd0b5a307e0e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 12 Jun 2023 12:54:24 +0300 Subject: [PATCH] Fix color filter preview --- .../ui/colorfilter/ColorFilterConfigActivity.kt | 10 +++++----- .../ui/colorfilter/ColorFilterConfigViewModel.kt | 16 +--------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt index 7bcdc6c63..8bbe5f972 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigActivity.kt @@ -68,10 +68,10 @@ class ColorFilterConfigActivity : viewModel.colorFilter.observe(this, this::onColorFilterChanged) viewModel.isLoading.observe(this, this::onLoadingChanged) - viewModel.preview.observe(this, this::onPreviewChanged) viewModel.onDismiss.observeEvent(this) { finishAfterTransition() } + loadPreview(viewModel.preview) } override fun onValueChange(slider: Slider, value: Float, fromUser: Boolean) { @@ -114,13 +114,13 @@ class ColorFilterConfigActivity : viewBinding.imageViewAfter.colorFilter = readerColorFilter?.toColorFilter() } - private fun onPreviewChanged(preview: MangaPage?) { - if (preview == null) return + private fun loadPreview(page: MangaPage) { + val data: Any = page.preview?.takeUnless { it.isEmpty() } ?: page ImageRequest.Builder(this@ColorFilterConfigActivity) - .data(preview) + .data(data) .scale(Scale.FILL) .decodeRegion() - .tag(preview.source) + .tag(page.source) .indicator(listOf(viewBinding.progressBefore, viewBinding.progressAfter)) .error(R.drawable.ic_error_placeholder) .size(ViewSizeResolver(viewBinding.imageViewBefore)) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigViewModel.kt index dec42bd8d..00ac1a23d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/colorfilter/ColorFilterConfigViewModel.kt @@ -7,12 +7,10 @@ import kotlinx.coroutines.flow.MutableStateFlow import org.koitharu.kotatsu.core.model.parcelable.ParcelableManga import org.koitharu.kotatsu.core.model.parcelable.ParcelableMangaPages import org.koitharu.kotatsu.core.parser.MangaDataRepository -import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.ui.BaseViewModel import org.koitharu.kotatsu.core.util.ext.MutableEventFlow import org.koitharu.kotatsu.core.util.ext.call import org.koitharu.kotatsu.core.util.ext.require -import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.reader.domain.ReaderColorFilter import org.koitharu.kotatsu.reader.ui.colorfilter.ColorFilterConfigActivity.Companion.EXTRA_MANGA import javax.inject.Inject @@ -20,7 +18,6 @@ import javax.inject.Inject @HiltViewModel class ColorFilterConfigViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - private val mangaRepositoryFactory: MangaRepository.Factory, private val mangaDataRepository: MangaDataRepository, ) : BaseViewModel() { @@ -29,27 +26,16 @@ class ColorFilterConfigViewModel @Inject constructor( private var initialColorFilter: ReaderColorFilter? = null val colorFilter = MutableStateFlow(null) val onDismiss = MutableEventFlow() - val preview = MutableStateFlow(null) + val preview = savedStateHandle.require(ColorFilterConfigActivity.EXTRA_PAGES).pages.first() val isChanged: Boolean get() = colorFilter.value != initialColorFilter init { - val page = savedStateHandle.require(ColorFilterConfigActivity.EXTRA_PAGES).pages.first() launchLoadingJob { initialColorFilter = mangaDataRepository.getColorFilter(manga.id) colorFilter.value = initialColorFilter } - launchLoadingJob(Dispatchers.Default) { - val repository = mangaRepositoryFactory.create(page.source) - val url = repository.getPageUrl(page) - preview.value = MangaPage( - id = page.id, - url = url, - preview = page.preview, - source = page.source, - ) - } } fun setBrightness(brightness: Float) {