2 * Broadcast updates to client when the model changes
7 var chat_message = require('../../models').ChatMessage;
8 var _ = require('lodash');
10 exports.register = function (socket) {
11 chat_message.afterCreate(function (doc) {
14 chat_message.afterUpdate(function (doc) {
17 chat_message.afterDestroy(function (doc) {
18 onRemove(socket, doc);
22 function onSave(socket, doc, cb) {
25 .then(function (chatRoom) {
28 attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'],
32 attributes: ['id', 'fullname', 'email'],
37 .spread(function (users, visitor) {
38 var sender = _.find(users, {
42 users.forEach(function (user) {
44 if (socket.userId == user.id && (sender || visitor)) {
45 socket.emit('chat_message:save', _.merge(doc.dataValues, {
46 User: sender, // TODO modify to sender
47 ChatVisitor: visitor // TODO modify to visitor
52 .catch(function (err) {
57 function onRemove(socket, doc, cb) {
58 socket.emit('chat_message:remove', doc);