feat(dashboard): add unread count for match chats
Track unread messages in match chats and display count badge: - Schema: Add user1LastReadAt/user2LastReadAt to Match model - Backend: Calculate unreadCount in dashboard API - Socket: Update lastReadAt when user joins match room - Frontend: Display red badge with unread count on match avatar
This commit is contained in:
@@ -180,6 +180,14 @@ router.get('/', authenticate, async (req, res, next) => {
|
||||
const lastMessage = match.room?.messages[0];
|
||||
const lastMessageAt = lastMessage ? lastMessage.createdAt : match.createdAt;
|
||||
|
||||
// Calculate unread count
|
||||
const myLastReadAt = isUser1 ? match.user1LastReadAt : match.user2LastReadAt;
|
||||
const unreadCount = myLastReadAt
|
||||
? (match.room?.messages || []).filter(
|
||||
(m) => m.userId !== userId && new Date(m.createdAt) > new Date(myLastReadAt)
|
||||
).length
|
||||
: (match.room?.messages || []).filter((m) => m.userId !== userId).length;
|
||||
|
||||
return {
|
||||
id: match.id,
|
||||
slug: match.slug,
|
||||
@@ -197,6 +205,7 @@ router.get('/', authenticate, async (req, res, next) => {
|
||||
},
|
||||
videoExchange,
|
||||
ratings,
|
||||
unreadCount,
|
||||
lastMessageAt,
|
||||
status: match.status,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user