send email when message is sent

This commit is contained in:
jackiettran
2025-11-10 13:05:10 -05:00
parent 3442e880d8
commit d8a927ac4e
3 changed files with 308 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ const { authenticateToken } = require('../middleware/auth');
const logger = require('../utils/logger');
const { emitNewMessage, emitMessageRead } = require('../sockets/messageSocket');
const { Op } = require('sequelize');
const emailService = require('../services/emailService');
const router = express.Router();
// Get all messages for the current user (inbox)
@@ -278,6 +279,23 @@ router.post('/', authenticateToken, async (req, res) => {
emitNewMessage(io, receiverId, messageWithSender.toJSON());
}
// Send email notification to receiver
try {
const sender = await User.findByPk(req.user.id, {
attributes: ['id', 'firstName', 'lastName', 'email']
});
await emailService.sendNewMessageNotification(receiver, sender, message);
} catch (emailError) {
// Log email error but don't block the message send
const reqLogger = logger.withRequestId(req.id);
reqLogger.error("Failed to send message notification email", {
error: emailError.message,
messageId: message.id,
receiverId: receiverId
});
}
const reqLogger = logger.withRequestId(req.id);
reqLogger.info("Message sent", {
senderId: req.user.id,