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