Исправление работы доставки, прочтения сообщений

This commit is contained in:
Халимов Рустам
2026-04-20 22:17:29 +03:00
parent fc1cf1fd6e
commit 962323814c
13 changed files with 99 additions and 24 deletions
@@ -16,15 +16,21 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.runtime.remember
import chats.domain.model.Chat
import chats.domain.model.Message
import chats.domain.model.MediaType
import core.presentation.components.AppAvatar
import ru.knot.messager.R
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Done
import androidx.compose.material.icons.filled.DoneAll
@Composable
fun ChatItem(
chat: Chat,
onClick: (String) -> Unit
) {
val currentUserId = "current_user_id" // TODO: Get from AuthManager/TokenManager
Row(
modifier = Modifier
.fillMaxWidth()
@@ -100,20 +106,44 @@ fun ChatItem(
modifier = Modifier.weight(1f)
)
if (chat.unreadCount > 0) {
Box(
modifier = Modifier
.padding(start = 8.dp)
.background(MaterialTheme.colorScheme.primary, CircleShape)
.padding(horizontal = 6.dp, vertical = 2.dp),
contentAlignment = Alignment.Center
) {
Text(
text = chat.unreadCount.toString(),
color = Color.White,
fontSize = 10.sp,
fontWeight = FontWeight.Bold
)
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(start = 8.dp)
) {
// Галочки прочтения только для своих сообщений
chat.lastMessage?.let { lastMessage ->
if (lastMessage.senderId == currentUserId && !lastMessage.isRead) {
Icon(
imageVector = Icons.Default.Done,
contentDescription = null,
tint = Color.Gray,
modifier = Modifier.size(14.dp)
)
} else if (lastMessage.senderId == currentUserId && lastMessage.isRead) {
Icon(
imageVector = Icons.Default.DoneAll,
contentDescription = null,
tint = Color.Blue,
modifier = Modifier.size(14.dp)
)
}
}
if (chat.unreadCount > 0) {
Spacer(modifier = Modifier.width(4.dp))
Box(
modifier = Modifier
.background(MaterialTheme.colorScheme.primary, CircleShape)
.padding(horizontal = 6.dp, vertical = 2.dp),
contentAlignment = Alignment.Center
) {
Text(
text = chat.unreadCount.toString(),
color = Color.White,
fontSize = 10.sp,
fontWeight = FontWeight.Bold
)
}
}
}
}