PageRenderTime 49ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/server/chat.js

https://bitbucket.org/mpuckett/iostudio-whiteboard
JavaScript | 59 lines | 46 code | 12 blank | 1 comment | 5 complexity | 244b369636c737061ac01392814bf3f7 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, MIT
  1. // Chat
  2. exports.init = function(d) {
  3. var _ = d._
  4. , Backbone = d.Backbone;
  5. var MessageModel = Backbone.Model.extend({
  6. defaults: {
  7. },
  8. initialize: function () {
  9. this.set('id', this.cid);
  10. }
  11. });
  12. var MessagesCollection = Backbone.Collection.extend({
  13. model: MessageModel
  14. });
  15. ChatController = Backbone.Controller.extend({
  16. initialize: function () {
  17. var t = this;
  18. var messagesCollection = this.messagesCollection = new MessagesCollection();
  19. this.on('messageAdded', function (message) {
  20. t.messagesCollection.add(message);
  21. });
  22. messagesCollection.on('add', function (message) {
  23. console.log(message.toJSON());
  24. t.trigger('_chatMessageAdded', message.toJSON() );
  25. });
  26. messagesCollection.on('change', function (message) {
  27. t.trigger('_chatMessageUpdated', message.toJSON() );
  28. });
  29. },
  30. render: function () {
  31. return this.messagesCollection.toJSON();
  32. },
  33. update: function (data, params) {
  34. var t = this;
  35. if (params && params.type === 'user') {
  36. var messageModels = this.messagesCollection.each(function (model) {
  37. if (model.toJSON().user.id === data.id) {
  38. model.set('user', data);
  39. }
  40. });
  41. } else if (data.id) {
  42. var messageModel = t.messagesCollection.get(data.id);
  43. messageModel.update(data);
  44. }
  45. }
  46. });
  47. };