-var _0x528e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x63\x68\x61\x74\x52\x6F\x6F\x6D","\x6C\x6F\x67","\x69\x64","\x70\x6C\x75\x63\x6B","\x75\x73\x65\x72\x49\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x65\x6D\x61\x69\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A\x72\x65\x6D\x6F\x76\x65"];_0x528e[0];var _=require(_0x528e[1]);var User=require(_0x528e[3])[_0x528e[2]];var ChatRoom=require(_0x528e[3])[_0x528e[4]];var ChatVisitor=require(_0x528e[3])[_0x528e[5]];var UserHasChatRoom=require(_0x528e[3])[_0x528e[6]];exports[_0x528e[7]]=function(_0x1183x6){UserHasChatRoom[_0x528e[8]](function(_0x1183x7){onSave(_0x1183x6,_0x1183x7)});UserHasChatRoom[_0x528e[9]](function(_0x1183x7){onRemove(_0x1183x6,_0x1183x7)});};function onSave(_0x1183x6,_0x1183x7){var _0x1183x9;return ChatRoom[_0x528e[26]](_0x1183x7.ChatRoomId,{include:[{model:ChatVisitor,attributes:[_0x528e[16],_0x528e[23],_0x528e[24]]},{model:User,attributes:[_0x528e[16],_0x528e[23],_0x528e[25],_0x528e[24]]}]})[_0x528e[22]](function(_0x1183xb){_0x1183x9=_0x1183xb;_0x1183x9[_0x528e[13]][_0x528e[12]]=[];console[_0x528e[15]](_0x528e[14],_0x1183x9);var _0x1183xc=_[_0x528e[17]](_0x1183x9.Users,_0x528e[16]);_0x1183xc[_0x528e[21]](function(_0x1183xd){if(_0x1183x6[_0x528e[18]]==_0x1183xd){_0x1183x6[_0x528e[20]](_0x528e[19],_0x1183x9[_0x528e[13]])}});return ;})[_0x528e[11]](function(_0x1183xa){console[_0x528e[10]](_0x1183xa)});}function onRemove(_0x1183x6,_0x1183x7){_0x1183x6[_0x528e[20]](_0x528e[27],_0x1183x7)}
\ No newline at end of file
+/**
+ * Broadcast updates to client when the model changes
+ */
+
+'use strict';
+var _ = require('lodash');
+var User = require('../../models').User;
+var ChatRoom = require('../../models').ChatRoom;
+var ChatVisitor = require('../../models').ChatVisitor;
+var UserHasChatRoom = require('../../models').UserHasChatRoom;
+
+exports.register = function (socket) {
+ UserHasChatRoom.afterCreate(function (doc) {
+ onSave(socket, doc);
+ });
+ UserHasChatRoom.afterDestroy(function (doc) {
+ onRemove(socket, doc);
+ });
+}
+
+function onSave(socket, doc) {
+
+ var _chatRoom;
+
+ return ChatRoom
+ .findById(doc.ChatRoomId, {
+ include: [{
+ model: ChatVisitor,
+ attributes: ['id', 'email', 'fullname']
+ }, {
+ model: User,
+ attributes: ['id', 'email', 'name', 'fullname']
+ }]
+ })
+ .then(function (chatRoom) {
+ _chatRoom = chatRoom;
+ _chatRoom.dataValues.ChatMessages = [];
+
+ console.log('_chatRoom', _chatRoom);
+
+ var ids = _.pluck(_chatRoom.Users, 'id');
+
+ ids.forEach(function (id) {
+ if (socket.userId == id) {
+ socket.emit('user_has_chat_room:save', _chatRoom.dataValues)
+ }
+ });
+
+ return;
+ })
+ .catch(function (err) {
+ console.error(err);
+ });
+}
+
+function onRemove(socket, doc) {
+ socket.emit('user_has_chat_room:remove', doc);
+}