WhisperNet / READ_RECEIPTS.md
bonesmasher's picture
Upload 56 files
abc1805 verified

Read Receipts Implementation

Overview

Read receipts are now fully functional in the chat application. Messages show different status indicators based on their delivery and read state.

How It Works

Client Side (ChatRoom.tsx)

  1. Sending Messages: When a user sends a message, it's added locally with status "sent"
  2. Receiving Messages: When a message is received:
    • Client immediately emits message-delivered event to server
    • After successful decryption and display, client emits message-read event
  3. Status Updates: Client listens for message-status events and updates message status accordingly

Server Side (server.ts)

  1. message-delivered: Broadcasts status update to all users in the room
  2. message-read: Broadcasts status update to all users in the room
  3. Original sender filters updates by checking originalSenderId === socket.id

Status Progression

  • sent (single gray check): Message sent to server
  • delivered (double gray check): Message received by recipient
  • read (double blue check): Message decrypted and displayed by recipient

Visual Indicators

  • βœ“ (gray) = Sent
  • βœ“βœ“ (gray) = Delivered
  • βœ“βœ“ (blue) = Read

Testing

  1. Open two browser windows/tabs
  2. Join the same room from both
  3. Send a message from Window A
  4. Watch the status indicator change:
    • Starts as single gray check (sent)
    • Changes to double gray checks (delivered)
    • Changes to double blue checks (read)

Technical Details

  • Message IDs are used to track status updates
  • Status updates only apply to the original sender
  • Status can only upgrade (sent β†’ delivered β†’ read), never downgrade
  • All communication is end-to-end encrypted