Tính năng Message Status cho phép người dùng biết được trạng thái của tin nhắn đã gửi:
- Đã gửi (Sent): Tin nhắn đã được gửi thành công
- Đã nhận (Delivered): Tin nhắn đã được chuyển đến người nhận
- Đã xem (Read): Người nhận đã đọc tin nhắn
- Một tick xám: Đã gửi
- Hai tick xám: Đã nhận
- Hai tick xanh: Đã xem
- Khi gửi tin nhắn: Status = "sent"
- Khi người nhận vào chat: Status = "delivered"
- Khi người nhận xem tin nhắn (sau 1 giây): Status = "read"
- Hiển thị số tin nhắn chưa đọc bằng badge đỏ trong danh sách chat
- Badge sẽ biến mất khi người dùng đọc hết tin nhắn
{
id: string;
text: string;
senderId: string;
receiverId: string;
timestamp: Date;
chatId: string;
status: 'sent' | 'delivered' | 'read';
readAt?: Date;
}{
id: string;
participants: string[];
lastMessage: string;
lastMessageTime: Date;
unreadCount?: number; // Tính toán thời gian thực
}Đánh dấu tất cả tin nhắn trong chat thành "read"
Đánh dấu tin nhắn từ "sent" thành "delivered"
Đếm số tin nhắn chưa đọc của user trong chat
Component hiển thị icon trạng thái tin nhắn với props:
status: Trạng thái tin nhắnisOwn: Có phải tin nhắn của mình khôngisDarkBackground: Để điều chỉnh màu icon phù hợp
- Trên mobile: Chỉ hiển thị icon
- Trên desktop: Hiển thị cả icon và text
- Badge unread count responsive với kích thước phù hợp
- Debounce marking read messages (1 giây)
- Batch update multiple messages
- Efficient Firestore queries với composite indexes