From 0a2d46e81bdee95a12bf8b80178cda741e3b81f8 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Thu, 2 Apr 2026 10:58:23 +0530 Subject: [PATCH] fix: standardize message timestamps to ISO strings and update delivery status in real-time events --- src/messages/messages.controller.ts | 2 +- src/messages/messages.gateway.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/messages/messages.controller.ts b/src/messages/messages.controller.ts index 90cf02a..9308ee6 100644 --- a/src/messages/messages.controller.ts +++ b/src/messages/messages.controller.ts @@ -226,7 +226,7 @@ export class MessagesController { const readEvent = { conversationId, readBy: userId, - readAt: new Date(), + readAt: new Date().toISOString(), }; this.messagesGateway.sendToUser(otherUserId, 'messages_read', readEvent); } diff --git a/src/messages/messages.gateway.ts b/src/messages/messages.gateway.ts index 9d65096..28baf4b 100644 --- a/src/messages/messages.gateway.ts +++ b/src/messages/messages.gateway.ts @@ -140,7 +140,7 @@ export class MessagesGateway implements OnGatewayConnection, OnGatewayDisconnect const deliveredEvent = { messageIds: result.messageIds, conversationId: result.conversationId, - deliveredAt: result.deliveredAt, + deliveredAt: result.deliveredAt.toISOString(), }; this.sendToUser(result.senderId, 'message_delivered', deliveredEvent); } @@ -228,7 +228,7 @@ export class MessagesGateway implements OnGatewayConnection, OnGatewayDisconnect } try { - const message = await this.messagesService.createMessage( + let message = await this.messagesService.createMessage( data.conversationId, client.userId, data.message, @@ -246,13 +246,17 @@ export class MessagesGateway implements OnGatewayConnection, OnGatewayDisconnect // Auto-mark as DELIVERED if recipient is online if (this.isUserOnline(otherUserId)) { + const deliveredAt = new Date().toISOString(); await this.messagesService.markMessageDelivered(message.id); + // Update message object so sender gets correct status in callback + message = { ...message, status: 'DELIVERED' as any, deliveredAt } as any; + const deliveredEvent = { messageId: message.id, conversationId: data.conversationId, - deliveredAt: new Date(), + deliveredAt, }; - // Notify sender that message was delivered + // Also send event for clients that might have the old status cached this.sendToUser(client.userId, 'message_delivered', deliveredEvent); } } @@ -327,7 +331,7 @@ export class MessagesGateway implements OnGatewayConnection, OnGatewayDisconnect const readEvent = { conversationId: data.conversationId, readBy: client.userId, - readAt: new Date(), + readAt: new Date().toISOString(), }; // Notify via room (for clients viewing this conversation)