Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / user_has_chat_room / user_has_chat_room.socket.js
index 1a7b18e..c58a829 100644 (file)
@@ -1 +1,58 @@
-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);
+}