Правки

This commit is contained in:
Халимов Рустам
2026-05-13 13:48:34 +03:00
parent 00ed4b5959
commit df4feeeee5
12 changed files with 263 additions and 82 deletions

View File

@@ -31,6 +31,7 @@ import chats.domain.model.MediaType
import chats.domain.model.Media
import chats.domain.model.MessageStatus
import coil.compose.AsyncImage
import coil.request.ImageRequest
import core.presentation.components.AppVideoPlayer
import core.presentation.components.AppAudioPlayer
import core.presentation.components.AppAvatar
@@ -225,7 +226,10 @@ fun MessageBubble(
if (isReplyImage && reply.media.isNotEmpty()) {
AsyncImage(
model = reply.media.first().url,
model = ImageRequest.Builder(context)
.data(reply.media.first().url)
.crossfade(true)
.build(),
contentDescription = null,
modifier = Modifier
.fillMaxHeight()
@@ -281,17 +285,24 @@ fun MessageBubble(
// GIF Content (Klipy)
if (message.mediaType == MediaType.GIF) {
AsyncImage(
model = message.content,
imageLoader = core.utils.CoilUtils.getGifImageLoader(context),
contentDescription = null,
Box(
modifier = Modifier
.fillMaxWidth()
.heightIn(max = 300.dp)
.clip(RoundedCornerShape(8.dp))
.clickable { /* Handle click */ },
contentScale = ContentScale.Crop
)
.clickable { /* Handle click */ }
) {
AsyncImage(
model = ImageRequest.Builder(context)
.data(message.content)
.crossfade(true)
.build(),
imageLoader = core.utils.CoilUtils.getGifImageLoader(context),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
}
Spacer(modifier = Modifier.height(4.dp))
}
@@ -321,17 +332,25 @@ fun MessageBubble(
val mediaItem = message.media[0]
when {
mediaItem.type.startsWith("image") || message.mediaType == MediaType.IMAGE -> {
AsyncImage(
model = mediaItem.url,
imageLoader = core.utils.CoilUtils.getGifImageLoader(context),
contentDescription = null,
Box(
modifier = Modifier
.fillMaxWidth()
.heightIn(max = 300.dp)
.clip(RoundedCornerShape(8.dp))
.clickable { onMediaClick(mediaItem) },
contentScale = ContentScale.Crop
)
.clickable { onMediaClick(mediaItem) }
) {
AsyncImage(
model = ImageRequest.Builder(context)
.data(mediaItem.url)
.crossfade(true)
.memoryCacheKey(mediaItem.url)
.build(),
imageLoader = core.utils.CoilUtils.getGifImageLoader(context),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
}
}
message.mediaType == MediaType.VIDEO || mediaItem.type.startsWith("video") -> {
Box(
@@ -708,7 +727,10 @@ fun GridItem(media: Media, modifier: Modifier = Modifier) {
Box(modifier = modifier.background(Color.White.copy(alpha = 0.1f))) {
if (isImage || isVideo) {
AsyncImage(
model = media.url,
model = ImageRequest.Builder(context)
.data(media.url)
.crossfade(true)
.build(),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop