This commit is contained in:
Professional 2025-05-24 02:34:45 +07:00
parent c14811bdac
commit 49eaf17c34

View File

@ -513,16 +513,23 @@ const deleteMessage = async (messageId) => {
}
};
const handleMessagesReadByOther = ({ conversationId: readConversationId, readerId }) => {
const handleMessagesReadByOther = ({ conversationId: readConversationId, readerId, status }) => {
if (readConversationId === conversationId.value) {
console.log(`[ChatView] Сообщения в диалоге ${readConversationId} прочитаны пользователем ${readerId}`);
messages.value = messages.value.map(msg => {
if (msg.sender?._id === currentUser.value?._id) {
// Обновляем массив readBy
const updatedReadBy = msg.readBy ? [...msg.readBy] : [];
if (!updatedReadBy.includes(readerId)) {
updatedReadBy.push(readerId);
}
return { ...msg, readBy: updatedReadBy };
// Обновляем статус сообщения на 'read'
return {
...msg,
readBy: updatedReadBy,
status: 'read'
};
}
return msg;
});
@ -655,13 +662,30 @@ const formatMessageTimestamp = (timestamp) => {
};
const getMessageStatusIcon = (message) => {
// Приоритет отдаем полю status, если оно есть
if (message.status) {
switch (message.status) {
case 'sending':
return 'bi bi-clock';
case 'delivered':
return 'bi bi-check2';
case 'read':
return 'bi bi-check2-all';
default:
return 'bi bi-check2';
}
}
// Для обратной совместимости проверяем старую логику, если поле status не установлено
if (message.isSending) {
return 'bi bi-clock';
}
const otherParticipant = getOtherParticipant();
if (otherParticipant && message.readBy && message.readBy.includes(otherParticipant._id)) {
return 'bi bi-check2-all';
}
return 'bi bi-check2';
};