From a78774d10e070625cc00cefa397f9c382429855f Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 5 Apr 2020 13:04:22 +0300 Subject: [PATCH] Optimize pages thumbnails --- .../ui/reader/thumbnails/PageThumbnailHolder.kt | 11 +++++++---- .../ui/reader/thumbnails/PagesThumbnailsAdapter.kt | 7 +++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PageThumbnailHolder.kt b/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PageThumbnailHolder.kt index 7610597fe..718b6a52a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PageThumbnailHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PageThumbnailHolder.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.ui.reader.thumbnails import android.view.ViewGroup +import androidx.core.net.toUri import coil.Coil import coil.api.get import coil.size.PixelSize @@ -8,12 +9,13 @@ import coil.size.Size import kotlinx.android.synthetic.main.item_page_thumb.* import kotlinx.coroutines.* import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.local.PagesCache import org.koitharu.kotatsu.core.model.MangaPage import org.koitharu.kotatsu.domain.MangaProviderFactory import org.koitharu.kotatsu.ui.common.list.BaseViewHolder class PageThumbnailHolder(parent: ViewGroup, private val scope: CoroutineScope) : - BaseViewHolder(parent, R.layout.item_page_thumb) { + BaseViewHolder(parent, R.layout.item_page_thumb) { private var job: Job? = null private val thumbSize: Size @@ -26,14 +28,15 @@ class PageThumbnailHolder(parent: ViewGroup, private val scope: CoroutineScope) ) } - override fun onBind(data: MangaPage, extra: Unit) { + override fun onBind(data: MangaPage, extra: PagesCache) { imageView_thumb.setImageDrawable(null) - textView_number.text = (adapterPosition + 1).toString() + textView_number.text = (bindingAdapterPosition + 1).toString() job?.cancel() job = scope.launch(Dispatchers.IO) { try { val url = data.preview ?: data.url.let { - MangaProviderFactory.create(data.source).getPageFullUrl(data) + val pageUrl = MangaProviderFactory.create(data.source).getPageFullUrl(data) + extra[pageUrl]?.toUri()?.toString() ?: pageUrl } val drawable = Coil.get(url) { size(thumbSize) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PagesThumbnailsAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PagesThumbnailsAdapter.kt index 12e9d46fc..10b12e1df 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PagesThumbnailsAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/reader/thumbnails/PagesThumbnailsAdapter.kt @@ -5,15 +5,18 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.SupervisorJob +import org.koin.core.inject +import org.koitharu.kotatsu.core.local.PagesCache import org.koitharu.kotatsu.core.model.MangaPage import org.koitharu.kotatsu.ui.common.list.BaseRecyclerAdapter import org.koitharu.kotatsu.ui.common.list.OnRecyclerItemClickListener import kotlin.coroutines.CoroutineContext class PagesThumbnailsAdapter(onItemClickListener: OnRecyclerItemClickListener?) : - BaseRecyclerAdapter(onItemClickListener), CoroutineScope, DisposableHandle { + BaseRecyclerAdapter(onItemClickListener), CoroutineScope, DisposableHandle { private val job = SupervisorJob() + private val cache by inject() override val coroutineContext: CoroutineContext get() = Dispatchers.Main + job @@ -22,7 +25,7 @@ class PagesThumbnailsAdapter(onItemClickListener: OnRecyclerItemClickListener