This commit is contained in:
Professional 2025-05-25 00:05:52 +07:00
parent 579a9a0346
commit 214db82ba1
2 changed files with 33 additions and 10 deletions

View File

@ -83,14 +83,28 @@ const handleNewMessage = (message) => {
// ВАЖНО: Увеличиваем счетчик ТОЛЬКО если сообщение пришло от другого пользователя // ВАЖНО: Увеличиваем счетчик ТОЛЬКО если сообщение пришло от другого пользователя
if (senderId !== user.value?._id) { if (senderId !== user.value?._id) {
const conversation = conversations.value.find(c => c._id === message.conversationId); // Добавляем небольшую задержку, чтобы дать время событию messagesRead сработать
if (conversation) { // если пользователь находится в том же чате
conversation.unreadCount = (conversation.unreadCount || 0) + 1; setTimeout(() => {
console.log('[App] Увеличен счетчик в навигации для диалога:', message.conversationId); const conversation = conversations.value.find(c => c._id === message.conversationId);
} else { if (conversation) {
// Если диалога нет в списке, обновим весь список // Проверяем текущий маршрут - если пользователь находится в этом чате,
fetchConversations(); // то сообщение уже могло быть автоматически помечено как прочитанное
} const currentRoute = route.path;
const isInThisChat = currentRoute === `/chat/${message.conversationId}`;
if (!isInThisChat) {
// Увеличиваем счетчик только если пользователь НЕ находится в этом чате
conversation.unreadCount = (conversation.unreadCount || 0) + 1;
console.log('[App] Увеличен счетчик в навигации для диалога:', message.conversationId);
} else {
console.log('[App] Пользователь находится в этом чате, счетчик не увеличиваем');
}
} else {
// Если диалога нет в списке, обновим весь список
fetchConversations();
}
}, 100); // Задержка 100ms
} else { } else {
console.log('[App] Сообщение от текущего пользователя, счетчик в навигации не изменяется'); console.log('[App] Сообщение от текущего пользователя, счетчик в навигации не изменяется');
} }

View File

@ -230,8 +230,17 @@ const handleNewMessageEvent = (message) => {
// ВАЖНО: Увеличиваем счетчик ТОЛЬКО если сообщение пришло от другого пользователя // ВАЖНО: Увеличиваем счетчик ТОЛЬКО если сообщение пришло от другого пользователя
if (senderId !== user.value._id) { if (senderId !== user.value._id) {
conversation.unreadCount = (conversation.unreadCount || 0) + 1; // Проверяем, находится ли пользователь в текущем чате
console.log('[ChatListView] Увеличен счетчик непрочитанных для диалога:', message.conversationId, 'новый счетчик:', conversation.unreadCount); const currentRoute = window.location.pathname;
const isInThisChat = currentRoute === `/chat/${message.conversationId}`;
if (!isInThisChat) {
// Увеличиваем счетчик только если пользователь НЕ находится в этом чате
conversation.unreadCount = (conversation.unreadCount || 0) + 1;
console.log('[ChatListView] Увеличен счетчик непрочитанных для диалога:', message.conversationId, 'новый счетчик:', conversation.unreadCount);
} else {
console.log('[ChatListView] Пользователь находится в этом чате, счетчик не увеличиваем');
}
} else { } else {
console.log('[ChatListView] Сообщение от текущего пользователя, счетчик не изменяется'); console.log('[ChatListView] Сообщение от текущего пользователя, счетчик не изменяется');
} }