| 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, |
| }; |
|
|