|
const crypto = require('crypto'); |
|
const { sendMessage, sendError } = require('../utils'); |
|
const { getResponseSender } = require('../routes/endpoints/schemas'); |
|
const { saveMessage } = require('../../models'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const denyRequest = async (req, res, errorMessage) => { |
|
let responseText = errorMessage; |
|
if (typeof errorMessage === 'object') { |
|
responseText = JSON.stringify(errorMessage); |
|
} |
|
|
|
const { messageId, conversationId: _convoId, parentMessageId, text } = req.body; |
|
const conversationId = _convoId ?? crypto.randomUUID(); |
|
|
|
const userMessage = { |
|
sender: 'User', |
|
messageId: messageId ?? crypto.randomUUID(), |
|
parentMessageId, |
|
conversationId, |
|
isCreatedByUser: true, |
|
text, |
|
}; |
|
sendMessage(res, { message: userMessage, created: true }); |
|
|
|
const shouldSaveMessage = |
|
_convoId && parentMessageId && parentMessageId !== '00000000-0000-0000-0000-000000000000'; |
|
|
|
if (shouldSaveMessage) { |
|
await saveMessage({ ...userMessage, user: req.user.id }); |
|
} |
|
|
|
return await sendError(res, { |
|
sender: getResponseSender(req.body), |
|
messageId: crypto.randomUUID(), |
|
conversationId, |
|
parentMessageId: userMessage.messageId, |
|
text: responseText, |
|
shouldSaveMessage, |
|
user: req.user.id, |
|
}); |
|
}; |
|
|
|
module.exports = denyRequest; |
|
|