Adding blurhash when images are not supposed to be downloaded.
This commit is contained in:
@@ -22,6 +22,7 @@ import androidx.compose.foundation.layout.defaultMinSize
|
|||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -70,6 +71,7 @@ import androidx.media3.ui.AspectRatioFrameLayout
|
|||||||
import androidx.media3.ui.PlayerView
|
import androidx.media3.ui.PlayerView
|
||||||
import com.linc.audiowaveform.infiniteLinearGradient
|
import com.linc.audiowaveform.infiniteLinearGradient
|
||||||
import com.vitorpamplona.amethyst.service.playback.PlaybackClientController
|
import com.vitorpamplona.amethyst.service.playback.PlaybackClientController
|
||||||
|
import com.vitorpamplona.amethyst.ui.note.DownloadForOfflineIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.LyricsIcon
|
import com.vitorpamplona.amethyst.ui.note.LyricsIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.LyricsOffIcon
|
import com.vitorpamplona.amethyst.ui.note.LyricsOffIcon
|
||||||
import com.vitorpamplona.amethyst.ui.note.MuteIcon
|
import com.vitorpamplona.amethyst.ui.note.MuteIcon
|
||||||
@@ -79,6 +81,7 @@ import com.vitorpamplona.amethyst.ui.theme.PinBottomIconSize
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.Size0dp
|
import com.vitorpamplona.amethyst.ui.theme.Size0dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size22Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size22Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size50Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size50Modifier
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size75dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.VolumeBottomIconSize
|
import com.vitorpamplona.amethyst.ui.theme.VolumeBottomIconSize
|
||||||
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
@@ -180,7 +183,26 @@ fun VideoView(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!automaticallyStartPlayback.value) {
|
if (!automaticallyStartPlayback.value) {
|
||||||
ImageUrlWithDownloadButton(url = videoUri, showImage = automaticallyStartPlayback)
|
if (blurhash != null) {
|
||||||
|
val ratio = aspectRatio(dimensions)
|
||||||
|
val modifier = if (ratio != null && roundedCorner) {
|
||||||
|
Modifier.aspectRatio(ratio)
|
||||||
|
} else {
|
||||||
|
Modifier
|
||||||
|
}
|
||||||
|
|
||||||
|
Box(modifier, contentAlignment = Alignment.Center) {
|
||||||
|
DisplayBlurHash(blurhash, null, ContentScale.Crop, MaterialTheme.colorScheme.imageModifier)
|
||||||
|
IconButton(
|
||||||
|
modifier = Modifier.size(Size75dp),
|
||||||
|
onClick = { automaticallyStartPlayback.value = true }
|
||||||
|
) {
|
||||||
|
DownloadForOfflineIcon(Size75dp, Color.White)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ImageUrlWithDownloadButton(url = videoUri, showImage = automaticallyStartPlayback)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
val ratio = aspectRatio(dimensions)
|
val ratio = aspectRatio(dimensions)
|
||||||
val modifier = if (ratio != null && roundedCorner) {
|
val modifier = if (ratio != null && roundedCorner) {
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ import androidx.compose.runtime.remember
|
|||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalClipboardManager
|
import androidx.compose.ui.platform.LocalClipboardManager
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
@@ -102,6 +103,7 @@ import com.vitorpamplona.amethyst.ui.theme.Size24dp
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.Size30dp
|
import com.vitorpamplona.amethyst.ui.theme.Size30dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size55dp
|
import com.vitorpamplona.amethyst.ui.theme.Size55dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size5dp
|
import com.vitorpamplona.amethyst.ui.theme.Size5dp
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.Size75dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
||||||
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
import com.vitorpamplona.amethyst.ui.theme.imageModifier
|
||||||
import com.vitorpamplona.quartz.crypto.CryptoUtils
|
import com.vitorpamplona.quartz.crypto.CryptoUtils
|
||||||
@@ -528,7 +530,17 @@ private fun AddedImageFeatures(
|
|||||||
showImage: MutableState<Boolean>
|
showImage: MutableState<Boolean>
|
||||||
) {
|
) {
|
||||||
if (!showImage.value) {
|
if (!showImage.value) {
|
||||||
ImageUrlWithDownloadButton(content.url, showImage)
|
if (content.blurhash != null) {
|
||||||
|
DisplayBlurHash(content.blurhash, content.description, contentScale, myModifier)
|
||||||
|
IconButton(
|
||||||
|
modifier = Modifier.size(Size75dp),
|
||||||
|
onClick = { showImage.value = true }
|
||||||
|
) {
|
||||||
|
DownloadForOfflineIcon(Size75dp, Color.White)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ImageUrlWithDownloadButton(content.url, showImage)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
var verifiedHash by remember {
|
var verifiedHash by remember {
|
||||||
mutableStateOf<Boolean?>(null)
|
mutableStateOf<Boolean?>(null)
|
||||||
|
|||||||
@@ -78,12 +78,12 @@ fun MessageIcon(modifier: Modifier) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DownloadForOfflineIcon(iconSize: Dp) {
|
fun DownloadForOfflineIcon(iconSize: Dp, tint: Color = MaterialTheme.colorScheme.primary) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.DownloadForOffline,
|
imageVector = Icons.Default.DownloadForOffline,
|
||||||
null,
|
null,
|
||||||
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
modifier = remember(iconSize) { Modifier.size(iconSize) },
|
||||||
tint = MaterialTheme.colorScheme.primary
|
tint = tint
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user