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) {
const conversation = conversations.value.find(c => c._id === message.conversationId);
if (conversation) {
conversation.unreadCount = (conversation.unreadCount || 0) + 1;
console.log('[App] Увеличен счетчик в навигации для диалога:', message.conversationId);
} else {
// Если диалога нет в списке, обновим весь список
fetchConversations();
}
// Добавляем небольшую задержку, чтобы дать время событию messagesRead сработать
// если пользователь находится в том же чате
setTimeout(() => {
const conversation = conversations.value.find(c => c._id === message.conversationId);
if (conversation) {
// Проверяем текущий маршрут - если пользователь находится в этом чате,
// то сообщение уже могло быть автоматически помечено как прочитанное
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 {
console.log('[App] Сообщение от текущего пользователя, счетчик в навигации не изменяется');
}

View File

@ -230,8 +230,17 @@ const handleNewMessageEvent = (message) => {
// ВАЖНО: Увеличиваем счетчик ТОЛЬКО если сообщение пришло от другого пользователя
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 {
console.log('[ChatListView] Сообщение от текущего пользователя, счетчик не изменяется');
}