diff --git a/core/model/src/main/kotlin/dev/meloda/fast/model/api/data/VkGiftData.kt b/core/model/src/main/kotlin/dev/meloda/fast/model/api/data/VkGiftData.kt index 36ecabf9..db670454 100644 --- a/core/model/src/main/kotlin/dev/meloda/fast/model/api/data/VkGiftData.kt +++ b/core/model/src/main/kotlin/dev/meloda/fast/model/api/data/VkGiftData.kt @@ -1,12 +1,13 @@ package dev.meloda.fast.model.api.data -import dev.meloda.fast.model.api.domain.VkGiftDomain import com.squareup.moshi.Json import com.squareup.moshi.JsonClass +import dev.meloda.fast.model.api.domain.VkGiftDomain @JsonClass(generateAdapter = true) data class VkGiftData( @Json(name = "id") val id: Long, + @Json(name = "thumb_512") val thumb512: String?, @Json(name = "thumb_256") val thumb256: String?, @Json(name = "thumb_96") val thumb96: String?, @Json(name = "thumb_48") val thumb48: String @@ -14,6 +15,7 @@ data class VkGiftData( fun toDomain() = VkGiftDomain( id = id, + thumb512 = thumb512, thumb256 = thumb256, thumb96 = thumb96, thumb48 = thumb48 diff --git a/core/model/src/main/kotlin/dev/meloda/fast/model/api/domain/VkGiftDomain.kt b/core/model/src/main/kotlin/dev/meloda/fast/model/api/domain/VkGiftDomain.kt index fa2c8680..d67aaf8d 100644 --- a/core/model/src/main/kotlin/dev/meloda/fast/model/api/domain/VkGiftDomain.kt +++ b/core/model/src/main/kotlin/dev/meloda/fast/model/api/domain/VkGiftDomain.kt @@ -4,10 +4,14 @@ import dev.meloda.fast.model.api.data.AttachmentType data class VkGiftDomain( val id: Long, + val thumb512: String?, val thumb256: String?, val thumb96: String?, val thumb48: String ) : VkAttachment { override val type: AttachmentType = AttachmentType.GIFT + + fun getMaxSizeThumb(): String = thumb512 ?: thumb256 ?: thumb96 ?: thumb48 + fun getDefaultThumbSizeOrLess(): String = thumb256 ?: thumb96 ?: thumb48 } diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Attachments.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Attachments.kt index 451aacc5..bcd760ee 100644 --- a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Attachments.kt +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Attachments.kt @@ -37,6 +37,7 @@ import dev.meloda.fast.model.api.domain.VkAttachment import dev.meloda.fast.model.api.domain.VkAudioDomain import dev.meloda.fast.model.api.domain.VkAudioMessageDomain import dev.meloda.fast.model.api.domain.VkFileDomain +import dev.meloda.fast.model.api.domain.VkGiftDomain import dev.meloda.fast.model.api.domain.VkLinkDomain import dev.meloda.fast.model.api.domain.VkPhotoDomain import dev.meloda.fast.model.api.domain.VkStickerDomain @@ -124,6 +125,10 @@ fun Attachments( ) } + AttachmentType.GIFT -> { + Gift(item = attachment as VkGiftDomain) + } + AttachmentType.VIDEO_MESSAGE -> { var isPlaying by remember { mutableStateOf(false) diff --git a/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Gift.kt b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Gift.kt new file mode 100644 index 00000000..dad9cd93 --- /dev/null +++ b/feature/messageshistory/src/main/kotlin/dev/meloda/fast/messageshistory/presentation/attachments/Gift.kt @@ -0,0 +1,64 @@ +package dev.meloda.fast.messageshistory.presentation.attachments + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import coil.compose.AsyncImage +import dev.meloda.fast.model.api.domain.VkGiftDomain +import dev.meloda.fast.ui.R + +@Composable +fun Gift( + modifier: Modifier = Modifier, + item: VkGiftDomain +) { + Column( + modifier = modifier.width(192.dp), + verticalArrangement = Arrangement.spacedBy(4.dp) + ) { + AsyncImage( + model = item.getDefaultThumbSizeOrLess(), + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier + .padding(8.dp) + .fillMaxWidth() + ) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center + ) { + Icon( + imageVector = ImageVector.vectorResource(R.drawable.ic_attachment_gift), + contentDescription = null, + modifier = Modifier.size(16.dp) + ) + Spacer(modifier = Modifier.width(6.dp)) + Text( + text = stringResource(R.string.message_attachments_gift), + style = MaterialTheme.typography.labelMedium, + lineHeight = 18.sp + ) + } + + Spacer(modifier = Modifier.height(6.dp)) + } +}