diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt index a1df161..e4ff8bd 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt @@ -506,107 +506,107 @@ fun FileAttachment( } } - // Telegram-style файл + // Telegram-style файл - как в desktop: без внутреннего фона, просто иконка + текст Row( modifier = Modifier .fillMaxWidth() - .clip(RoundedCornerShape(8.dp)) - .background( - if (isOutgoing) { - Color.White.copy(alpha = 0.15f) - } else { - if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFFF0F0F0) - } - ) .clickable(enabled = downloadStatus == DownloadStatus.NOT_DOWNLOADED || downloadStatus == DownloadStatus.ERROR) { download() } - .padding(10.dp), + .padding(vertical = 4.dp), verticalAlignment = Alignment.CenterVertically ) { - // File icon с индикатором прогресса + // File icon с индикатором прогресса - круглая иконка как в desktop Box( - modifier = Modifier.size(44.dp), + modifier = Modifier.size(40.dp), contentAlignment = Alignment.Center ) { - // Фон иконки + // Круглый фон иконки Box( modifier = Modifier .fillMaxSize() .clip(CircleShape) .background( - if (isOutgoing) Color.White.copy(0.2f) - else PrimaryBlue.copy(alpha = 0.15f) + if (downloadStatus == DownloadStatus.ERROR) Color(0xFFE53935) + else PrimaryBlue ), contentAlignment = Alignment.Center ) { when (downloadStatus) { DownloadStatus.DOWNLOADING, DownloadStatus.DECRYPTING -> { CircularProgressIndicator( - modifier = Modifier.size(28.dp), - color = if (isOutgoing) Color.White else PrimaryBlue, - strokeWidth = 2.5.dp + modifier = Modifier.size(24.dp), + color = Color.White, + strokeWidth = 2.dp ) } DownloadStatus.NOT_DOWNLOADED -> { Icon( Icons.Default.ArrowDownward, contentDescription = "Download", - tint = if (isOutgoing) Color.White else PrimaryBlue, - modifier = Modifier.size(22.dp) + tint = Color.White, + modifier = Modifier.size(20.dp) ) } DownloadStatus.DOWNLOADED -> { Icon( Icons.Default.InsertDriveFile, contentDescription = null, - tint = if (isOutgoing) Color.White else PrimaryBlue, - modifier = Modifier.size(22.dp) + tint = Color.White, + modifier = Modifier.size(20.dp) ) } DownloadStatus.ERROR -> { Icon( - Icons.Default.ErrorOutline, + Icons.Default.Close, contentDescription = "Error", - tint = Color(0xFFE53935), - modifier = Modifier.size(22.dp) + tint = Color.White, + modifier = Modifier.size(20.dp) ) } else -> { Icon( Icons.Default.InsertDriveFile, contentDescription = null, - tint = if (isOutgoing) Color.White else PrimaryBlue, - modifier = Modifier.size(22.dp) + tint = Color.White, + modifier = Modifier.size(20.dp) ) } } } } - Spacer(modifier = Modifier.width(12.dp)) + Spacer(modifier = Modifier.width(10.dp)) // File info Column(modifier = Modifier.weight(1f)) { Text( text = fileName, fontSize = 14.sp, - fontWeight = FontWeight.Medium, + fontWeight = FontWeight.Normal, color = if (isOutgoing) Color.White else (if (isDarkTheme) Color.White else Color.Black), maxLines = 1, overflow = TextOverflow.Ellipsis ) Spacer(modifier = Modifier.height(2.dp)) + + // Размер файла и тип + val fileExtension = fileName.substringAfterLast('.', "").uppercase() Text( text = when (downloadStatus) { DownloadStatus.DOWNLOADING -> "Downloading..." DownloadStatus.DECRYPTING -> "Decrypting..." - DownloadStatus.ERROR -> "Download failed" - else -> formatFileSize(fileSize) + DownloadStatus.ERROR -> "File expired" + else -> "${formatFileSize(fileSize)} $fileExtension" }, fontSize = 12.sp, - color = if (isOutgoing) Color.White.copy(alpha = 0.7f) - else (if (isDarkTheme) Color.White.copy(alpha = 0.5f) else Color.Gray) + color = if (downloadStatus == DownloadStatus.ERROR) { + Color(0xFFE53935) + } else if (isOutgoing) { + Color.White.copy(alpha = 0.7f) + } else { + PrimaryBlue + } ) } }