Better name for the Blurhash class to avoid mistakes with its field.

This commit is contained in:
Vitor Pamplona
2025-04-03 20:49:44 -04:00
parent ed860454a7
commit 2b7cfa5560
3 changed files with 12 additions and 14 deletions
@@ -31,18 +31,16 @@ import coil3.key.Keyer
import coil3.request.Options import coil3.request.Options
import com.vitorpamplona.amethyst.commons.blurhash.BlurHashDecoder import com.vitorpamplona.amethyst.commons.blurhash.BlurHashDecoder
class Blurhash( data class BlurhashWrapper(
val blurhash: String, val blurhash: String,
) )
@Stable @Stable
class BlurHashFetcher( class BlurHashFetcher(
private val options: Options, private val options: Options,
private val data: Blurhash, private val data: BlurhashWrapper,
) : Fetcher { ) : Fetcher {
override suspend fun fetch(): FetchResult { override suspend fun fetch(): FetchResult {
checkNotInMainThread()
val hash = data.blurhash val hash = data.blurhash
val bitmap = BlurHashDecoder.decodeKeepAspectRatio(hash, 25) ?: throw Exception("Unable to convert Blurhash $data") val bitmap = BlurHashDecoder.decodeKeepAspectRatio(hash, 25) ?: throw Exception("Unable to convert Blurhash $data")
@@ -54,17 +52,17 @@ class BlurHashFetcher(
) )
} }
object Factory : Fetcher.Factory<Blurhash> { object Factory : Fetcher.Factory<BlurhashWrapper> {
override fun create( override fun create(
data: Blurhash, data: BlurhashWrapper,
options: Options, options: Options,
imageLoader: ImageLoader, imageLoader: ImageLoader,
): Fetcher = BlurHashFetcher(options, data) ): Fetcher = BlurHashFetcher(options, data)
} }
object BKeyer : Keyer<Blurhash> { object BKeyer : Keyer<BlurhashWrapper> {
override fun key( override fun key(
data: Blurhash, data: BlurhashWrapper,
options: Options, options: Options,
): String = data.blurhash ): String = data.blurhash
} }
@@ -26,7 +26,7 @@ import android.media.MediaDataSource
import android.media.MediaMetadataRetriever import android.media.MediaMetadataRetriever
import android.util.Log import android.util.Log
import com.vitorpamplona.amethyst.commons.blurhash.toBlurhash import com.vitorpamplona.amethyst.commons.blurhash.toBlurhash
import com.vitorpamplona.amethyst.service.Blurhash import com.vitorpamplona.amethyst.service.BlurhashWrapper
import com.vitorpamplona.quartz.nip01Core.core.toHexKey import com.vitorpamplona.quartz.nip01Core.core.toHexKey
import com.vitorpamplona.quartz.nip94FileMetadata.tags.DimensionTag import com.vitorpamplona.quartz.nip94FileMetadata.tags.DimensionTag
import com.vitorpamplona.quartz.utils.sha256.sha256 import com.vitorpamplona.quartz.utils.sha256.sha256
@@ -38,7 +38,7 @@ class FileHeader(
val hash: String, val hash: String,
val size: Int, val size: Int,
val dim: DimensionTag?, val dim: DimensionTag?,
val blurHash: Blurhash?, val blurHash: BlurhashWrapper?,
) { ) {
class UnableToDownload( class UnableToDownload(
val fileUrl: String, val fileUrl: String,
@@ -79,13 +79,13 @@ class FileHeader(
val opt = BitmapFactory.Options() val opt = BitmapFactory.Options()
opt.inPreferredConfig = Bitmap.Config.ARGB_8888 opt.inPreferredConfig = Bitmap.Config.ARGB_8888
val mBitmap = BitmapFactory.decodeByteArray(data, 0, data.size, opt) val mBitmap = BitmapFactory.decodeByteArray(data, 0, data.size, opt)
Pair(Blurhash(mBitmap.toBlurhash()), DimensionTag(mBitmap.width, mBitmap.height)) Pair(BlurhashWrapper(mBitmap.toBlurhash()), DimensionTag(mBitmap.width, mBitmap.height))
} else if (mimeType?.startsWith("video/") == true) { } else if (mimeType?.startsWith("video/") == true) {
val mediaMetadataRetriever = MediaMetadataRetriever() val mediaMetadataRetriever = MediaMetadataRetriever()
mediaMetadataRetriever.setDataSource(ByteArrayMediaDataSource(data)) mediaMetadataRetriever.setDataSource(ByteArrayMediaDataSource(data))
val newDim = mediaMetadataRetriever.prepareDimFromVideo() ?: dimPrecomputed val newDim = mediaMetadataRetriever.prepareDimFromVideo() ?: dimPrecomputed
val blurhash = mediaMetadataRetriever.getThumbnail()?.toBlurhash()?.let { Blurhash(it) } val blurhash = mediaMetadataRetriever.getThumbnail()?.toBlurhash()?.let { BlurhashWrapper(it) }
if (newDim?.hasSize() == true) { if (newDim?.hasSize() == true) {
Pair(blurhash, newDim) Pair(blurhash, newDim)
@@ -79,7 +79,7 @@ import com.vitorpamplona.amethyst.commons.richtext.MediaUrlContent
import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage
import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo
import com.vitorpamplona.amethyst.model.MediaAspectRatioCache import com.vitorpamplona.amethyst.model.MediaAspectRatioCache
import com.vitorpamplona.amethyst.service.Blurhash import com.vitorpamplona.amethyst.service.BlurhashWrapper
import com.vitorpamplona.amethyst.service.playback.composable.VideoView import com.vitorpamplona.amethyst.service.playback.composable.VideoView
import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled
import com.vitorpamplona.amethyst.ui.actions.InformationDialog import com.vitorpamplona.amethyst.ui.actions.InformationDialog
@@ -637,7 +637,7 @@ fun DisplayBlurHash(
if (blurhash == null) return if (blurhash == null) return
AsyncImage( AsyncImage(
model = Blurhash(blurhash), model = BlurhashWrapper(blurhash),
contentDescription = description, contentDescription = description,
contentScale = contentScale, contentScale = contentScale,
modifier = modifier, modifier = modifier,