|
const crypto = require('crypto'); |
|
const { saveMessage } = require('../../models/Message'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleError = (res, message) => { |
|
res.write(`event: error\ndata: ${JSON.stringify(message)}\n\n`); |
|
res.end(); |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const sendMessage = (res, message, event = 'message') => { |
|
if (message.length === 0) { |
|
return; |
|
} |
|
res.write(`event: ${event}\ndata: ${JSON.stringify(message)}\n\n`); |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const sendError = async (res, options, callback) => { |
|
const { user, sender, conversationId, messageId, parentMessageId, text, shouldSaveMessage } = |
|
options; |
|
const errorMessage = { |
|
sender, |
|
messageId: messageId ?? crypto.randomUUID(), |
|
conversationId, |
|
parentMessageId, |
|
unfinished: false, |
|
cancelled: false, |
|
error: true, |
|
final: true, |
|
text, |
|
isCreatedByUser: false, |
|
}; |
|
if (callback && typeof callback === 'function') { |
|
await callback(); |
|
} |
|
|
|
if (shouldSaveMessage) { |
|
await saveMessage({ ...errorMessage, user }); |
|
} |
|
|
|
handleError(res, errorMessage); |
|
}; |
|
|
|
module.exports = { |
|
handleError, |
|
sendMessage, |
|
sendError, |
|
}; |
|
|