diff --git a/src/node/db/API.js b/src/node/db/API.js index 97d5162d..7b5a7b37 100644 --- a/src/node/db/API.js +++ b/src/node/db/API.js @@ -510,15 +510,19 @@ exports.appendChatMessage = function(padID, text, authorID, time, callback) callback(new customError("text is no string","apierror")); return; } - - //get the pad - getPadSafe(padID, true, function(err, pad) + + // if time is not an integer value + if(time === undefined || !is_int(time)) { - if(ERR(err, callback)) return; - - pad.appendChatMessage(text, authorID, parseInt(time)); - callback(); - }); + // set time to current timestamp + time = new Date().getTime(); + } + + var padMessage = require("ep_etherpad-lite/node/handler/PadMessageHandler.js"); + // save chat message to database and send message to all connected clients + padMessage.sendChatMessageToPadClients(parseInt(time), authorID, text, padID); + + callback(); } /*****************/ diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 248dc128..91fa37e4 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -375,6 +375,17 @@ function handleChatMessage(client, message) var text = message.data.text; var padId = sessioninfos[client.id].padId; + exports.sendChatMessageToPadClients(time, userId, text, padId); +} + +/** + * Sends a chat message to all clients of this pad + * @param time the timestamp of the chat message + * @param userId the author id of the chat message + * @param text the text of the chat message + * @param padId the padId to send the chat message to + */ +exports.sendChatMessageToPadClients = function (time, userId, text, padId) { var pad; var userName;