Make EhAsyncThumb receive a GalleryInfo
This commit is contained in:
1 parent
95478a615e
commit
b50185639e
9 files changed
+32
-25
No files matched your search
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.hippo.ehviewer.client
|
||||
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.client.data.GalleryPreview
|
||||
import com.hippo.ehviewer.client.data.NormalGalleryPreview
|
||||
|
||||
@@ -34,11 +35,12 @@ fun getThumbKey(url: String): String {
|
||||
return url.removePrefix(URL_PREFIX_THUMB_E).removePrefix(URL_PREFIX_THUMB_EX).removePrefix("t/")
|
||||
}
|
||||
|
||||
fun getUrlByThumbKey(key: String): String = if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + "t/" + key else URL_PREFIX_THUMB_E + key
|
||||
|
||||
val GalleryPreview.url
|
||||
get() = if (this is NormalGalleryPreview) {
|
||||
if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + imageKey else URL_PREFIX_THUMB_E + imageKey
|
||||
} else {
|
||||
if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + "t/" + imageKey else URL_PREFIX_THUMB_E + imageKey
|
||||
}
|
||||
|
||||
val GalleryInfo.thumbUrl
|
||||
get() = if (EhUtils.isExHentai) URL_PREFIX_THUMB_EX + "t/" + thumbKey!! else URL_PREFIX_THUMB_E + thumbKey!!
|
||||
@@ -9,21 +9,23 @@ import coil.disk.DiskCache
|
||||
import coil.request.CachePolicy
|
||||
import coil.request.ImageRequest
|
||||
import coil.size.Size
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.client.data.GalleryPreview
|
||||
import com.hippo.ehviewer.client.getUrlByThumbKey
|
||||
import com.hippo.ehviewer.client.thumbUrl
|
||||
import com.hippo.ehviewer.client.url
|
||||
|
||||
fun ImageRequest.Builder.ehUrl(key: String) = apply {
|
||||
data(getUrlByThumbKey(key))
|
||||
fun ImageRequest.Builder.ehUrl(info: GalleryInfo) = apply {
|
||||
val key = info.thumbKey!!
|
||||
data(info.thumbUrl)
|
||||
memoryCacheKey(key)
|
||||
diskCacheKey(key)
|
||||
size(Size.ORIGINAL)
|
||||
}
|
||||
|
||||
fun ImageRequest.Builder.ehPreviewKey(key: GalleryPreview) = apply {
|
||||
data(key.url)
|
||||
memoryCacheKey(key.imageKey)
|
||||
diskCacheKey(key.imageKey)
|
||||
fun ImageRequest.Builder.ehPreview(preview: GalleryPreview) = apply {
|
||||
data(preview.url)
|
||||
memoryCacheKey(preview.imageKey)
|
||||
diskCacheKey(preview.imageKey)
|
||||
size(Size.ORIGINAL)
|
||||
}
|
||||
|
||||
@@ -35,6 +37,7 @@ fun ImageRequest.Builder.justDownload() = apply {
|
||||
decoderFactory { _, _, _ -> stubFactory }
|
||||
}
|
||||
|
||||
inline fun Context.imageRequest(key: GalleryPreview, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehPreviewKey(key).apply(builder).build()
|
||||
inline fun Context.imageRequest(key: String, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehUrl(key).apply(builder).build()
|
||||
inline fun Context.imageRequest(preview: GalleryPreview, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehPreview(preview).apply(builder).build()
|
||||
inline fun Context.imageRequest(info: GalleryInfo, builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).ehUrl(info).apply(builder).build()
|
||||
inline fun Context.imageRequest(builder: ImageRequest.Builder.() -> Unit = {}) = ImageRequest.Builder(this).apply(builder).build()
|
||||
inline fun diskCache(builder: DiskCache.Builder.() -> Unit) = DiskCache.Builder().apply(builder).build()
|
||||
@@ -39,7 +39,7 @@ import com.hippo.ehviewer.Settings
|
||||
import com.hippo.ehviewer.client.EhUrl
|
||||
import com.hippo.ehviewer.client.EhUtils
|
||||
import com.hippo.ehviewer.client.data.GalleryDetail
|
||||
import com.hippo.ehviewer.client.getUrlByThumbKey
|
||||
import com.hippo.ehviewer.client.thumbUrl
|
||||
import com.hippo.ehviewer.ui.login.LocalNavController
|
||||
import com.hippo.ehviewer.util.tellClipboardWithToast
|
||||
|
||||
@@ -83,7 +83,7 @@ fun GalleryInfoBottomSheet(
|
||||
EhUrl.getGalleryDetailUrl(gid, token),
|
||||
title,
|
||||
titleJpn,
|
||||
getUrlByThumbKey(thumbKey!!),
|
||||
thumbUrl,
|
||||
EhUtils.getCategory(category),
|
||||
uploader,
|
||||
posted,
|
||||
|
||||
@@ -12,17 +12,18 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import coil.compose.AsyncImage
|
||||
import coil.compose.AsyncImagePainter
|
||||
import coil.request.ImageRequest
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo
|
||||
import com.hippo.ehviewer.coil.imageRequest
|
||||
|
||||
@Composable
|
||||
@ReadOnlyComposable
|
||||
fun requestOf(model: String): ImageRequest {
|
||||
fun requestOf(model: GalleryInfo): ImageRequest {
|
||||
return LocalContext.current.imageRequest(model)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun EhAsyncThumb(
|
||||
model: String,
|
||||
model: GalleryInfo,
|
||||
modifier: Modifier = Modifier,
|
||||
contentScale: ContentScale = ContentScale.Fit,
|
||||
) = AsyncImage(
|
||||
@@ -34,7 +35,7 @@ fun EhAsyncThumb(
|
||||
|
||||
@Composable
|
||||
fun EhAsyncCropThumb(
|
||||
key: String,
|
||||
key: GalleryInfo,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
var contentScale by remember { mutableStateOf(ContentScale.Fit) }
|
||||
|
||||
@@ -103,7 +103,7 @@ fun GalleryDetailHeaderCard(
|
||||
Row {
|
||||
Card {
|
||||
EhAsyncCropThumb(
|
||||
key = remember(info.thumbKey!!) { info.thumbKey!! },
|
||||
key = remember(info.gid) { info },
|
||||
modifier = Modifier.height(dimensionResource(id = R.dimen.gallery_detail_thumb_height)).width(dimensionResource(id = R.dimen.gallery_detail_thumb_width)),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ fun GalleryInfoListItem(
|
||||
Row {
|
||||
Card {
|
||||
EhAsyncCropThumb(
|
||||
key = info.thumbKey!!,
|
||||
key = info,
|
||||
modifier = Modifier.aspectRatio(0.6666667F).fillMaxSize(),
|
||||
)
|
||||
}
|
||||
@@ -141,7 +141,7 @@ fun GalleryInfoGridItem(
|
||||
) {
|
||||
Box {
|
||||
EhAsyncThumb(
|
||||
model = info.thumbKey!!,
|
||||
model = info,
|
||||
modifier = Modifier.aspectRatio(aspect).fillMaxWidth(),
|
||||
contentScale = ContentScale.Crop,
|
||||
)
|
||||
|
||||
@@ -19,6 +19,7 @@ import android.graphics.drawable.AnimatedImageDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import coil.imageLoader
|
||||
import coil.request.ImageRequest
|
||||
import coil.size.Size
|
||||
import com.hippo.ehviewer.coil.imageRequest
|
||||
|
||||
class UnikeryDrawable(private val mTextView: ObservedTextView, url: String) :
|
||||
@@ -28,8 +29,10 @@ class UnikeryDrawable(private val mTextView: ObservedTextView, url: String) :
|
||||
|
||||
init {
|
||||
mTextView.setOnWindowAttachListener(this)
|
||||
mImageRequest = mTextView.context.imageRequest(url) {
|
||||
mImageRequest = mTextView.context.imageRequest {
|
||||
target(onSuccess = { onGetValue(it) })
|
||||
size(Size.ORIGINAL)
|
||||
data(url)
|
||||
}
|
||||
load()
|
||||
}
|
||||
|
||||
@@ -867,10 +867,8 @@ class DownloadsScene :
|
||||
onClick = ::onClick.partially1(binding.thumb),
|
||||
) {
|
||||
EhAsyncCropThumb(
|
||||
key = info.thumbKey!!,
|
||||
modifier = Modifier
|
||||
.height(height)
|
||||
.aspectRatio(0.6666667F),
|
||||
key = info,
|
||||
modifier = Modifier.height(height).aspectRatio(0.6666667F),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1053,7 +1053,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H
|
||||
private fun onGetGalleryListSuccess(result: GalleryListParser.Result, taskId: Int) {
|
||||
if (Settings.preloadThumbAggressively) {
|
||||
lifecycleScope.launchIO {
|
||||
result.galleryInfoList.forEach { context?.run { imageLoader.enqueue(imageRequest(it.thumbKey!!) { justDownload() }) } }
|
||||
result.galleryInfoList.forEach { context?.run { imageLoader.enqueue(imageRequest(it) { justDownload() }) } }
|
||||
}
|
||||
}
|
||||
if (mHelper != null && mHelper!!.isCurrentTask(taskId)) {
|
||||
|
||||
Reference in new issue
Block a user