diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt index c016354..3264d48 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatViewModel.kt @@ -2737,6 +2737,14 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) { } else { dialogDao.updateDialogFromMessages(account, opponent) } + + // 🔥 FIX: updateDialogFromMessages создаёт новый диалог с пустым title/username + // когда диалога ещё не было. Обновляем метаданные из уже известных данных. + if (opponent != account && opponentTitle.isNotEmpty()) { + dialogDao.updateOpponentInfo( + account, opponent, opponentTitle, opponentUsername, 0 + ) + } } catch (e: Exception) {} } @@ -2763,6 +2771,13 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) { } else { dialogDao.updateDialogFromMessages(account, opponentKey) } + + // 🔥 FIX: Сохраняем title/username после пересчёта счётчиков + if (opponentKey != account && opponentTitle.isNotEmpty()) { + dialogDao.updateOpponentInfo( + account, opponentKey, opponentTitle, opponentUsername, 0 + ) + } } catch (e: Exception) {} } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt index 2266a65..f7e1253 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatsListScreen.kt @@ -2042,6 +2042,7 @@ fun SwipeableDialogItem( isDarkTheme = isDarkTheme, isTyping = isTyping, isPinned = isPinned, + isBlocked = isBlocked, avatarRepository = avatarRepository, onClick = onClick ) @@ -2064,6 +2065,7 @@ fun DialogItemContent( isDarkTheme: Boolean, isTyping: Boolean = false, isPinned: Boolean = false, + isBlocked: Boolean = false, avatarRepository: com.rosetta.messenger.repository.AvatarRepository? = null, onClick: () -> Unit ) { @@ -2241,6 +2243,16 @@ fun DialogItemContent( Spacer(modifier = Modifier.width(4.dp)) VerifiedBadge(verified = dialog.verified, size = 16) } + // 🔒 Красная иконка замочка для заблокированных пользователей + if (isBlocked) { + Spacer(modifier = Modifier.width(4.dp)) + Icon( + imageVector = TablerIcons.Lock, + contentDescription = "Blocked", + tint = Color(0xFFFF3B30), + modifier = Modifier.size(14.dp) + ) + } } Row(