diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/BlurHashImage.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/BlurHashImage.kt index 96cc3044a..23716cc64 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/BlurHashImage.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/BlurHashImage.kt @@ -31,18 +31,16 @@ import coil3.key.Keyer import coil3.request.Options import com.vitorpamplona.amethyst.commons.blurhash.BlurHashDecoder -class Blurhash( +data class BlurhashWrapper( val blurhash: String, ) @Stable class BlurHashFetcher( private val options: Options, - private val data: Blurhash, + private val data: BlurhashWrapper, ) : Fetcher { override suspend fun fetch(): FetchResult { - checkNotInMainThread() - val hash = data.blurhash val bitmap = BlurHashDecoder.decodeKeepAspectRatio(hash, 25) ?: throw Exception("Unable to convert Blurhash $data") @@ -54,17 +52,17 @@ class BlurHashFetcher( ) } - object Factory : Fetcher.Factory { + object Factory : Fetcher.Factory { override fun create( - data: Blurhash, + data: BlurhashWrapper, options: Options, imageLoader: ImageLoader, ): Fetcher = BlurHashFetcher(options, data) } - object BKeyer : Keyer { + object BKeyer : Keyer { override fun key( - data: Blurhash, + data: BlurhashWrapper, options: Options, ): String = data.blurhash } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt index 10930e14e..e87fbf306 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/FileHeader.kt @@ -26,7 +26,7 @@ import android.media.MediaDataSource import android.media.MediaMetadataRetriever import android.util.Log 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.nip94FileMetadata.tags.DimensionTag import com.vitorpamplona.quartz.utils.sha256.sha256 @@ -38,7 +38,7 @@ class FileHeader( val hash: String, val size: Int, val dim: DimensionTag?, - val blurHash: Blurhash?, + val blurHash: BlurhashWrapper?, ) { class UnableToDownload( val fileUrl: String, @@ -79,13 +79,13 @@ class FileHeader( val opt = BitmapFactory.Options() opt.inPreferredConfig = Bitmap.Config.ARGB_8888 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) { val mediaMetadataRetriever = MediaMetadataRetriever() mediaMetadataRetriever.setDataSource(ByteArrayMediaDataSource(data)) 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) { Pair(blurhash, newDim) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt index 356b056fd..9823d76e3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/components/ZoomableContentView.kt @@ -79,7 +79,7 @@ import com.vitorpamplona.amethyst.commons.richtext.MediaUrlContent import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage import com.vitorpamplona.amethyst.commons.richtext.MediaUrlVideo 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.ui.actions.CrossfadeIfEnabled import com.vitorpamplona.amethyst.ui.actions.InformationDialog @@ -637,7 +637,7 @@ fun DisplayBlurHash( if (blurhash == null) return AsyncImage( - model = Blurhash(blurhash), + model = BlurhashWrapper(blurhash), contentDescription = description, contentScale = contentScale, modifier = modifier,