diff --git a/js/models/messages.js b/js/models/messages.js index d46220a94..cf66c1c23 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -7,7 +7,7 @@ var Whisper = Whisper || {}; validate: function(attributes, options) { var required = ['body', 'timestamp', 'threadId']; var missing = _.filter(required, function(attr) { return !attributes[attr]; }); - if (missing.length) { return "Message must have " + missing; } + if (missing.length) { console.log("Message missing attributes: " + missing); } }, thread: function() { @@ -33,7 +33,7 @@ var Whisper = Whisper || {}; body: decrypted.message.body, attachments: attachments, type: 'incoming', - timestamp: decrypted.message.timestamp + timestamp: decrypted.pushMessage.timestamp }); m.save(); @@ -42,7 +42,6 @@ var Whisper = Whisper || {}; thread.set('unreadCount', thread.get('unreadCount') + 1); thread.save(); } - thread.trigger('message', m); return m; }, diff --git a/js/views/conversation.js b/js/views/conversation.js index f8358bec2..13d6a418f 100644 --- a/js/views/conversation.js +++ b/js/views/conversation.js @@ -34,6 +34,7 @@ var Whisper = Whisper || {}; this.listenTo(this.model, 'message', this.addMessage); // auto update this.listenTo(this.model, 'destroy', this.remove); // auto update this.listenTo(this.model, 'select', this.open); + this.listenTo(Whisper.Messages, 'reset', this.addAllMessages); // auto update this.$el.addClass('closed'); this.$destroy = (new destroyer({model: this.model})).$el; @@ -51,7 +52,6 @@ var Whisper = Whisper || {}; this.$collapsable.append(this.$messages, this.$form); this.$el.append(this.$destroy, this.$header, this.$collapsable); - this.addAllMessages(); this.$form.submit(function(input,thread){ return function(e) { if (!input.val().length) { return false; } diff --git a/js/views/messages.js b/js/views/messages.js index baba32d69..cc7f85ed2 100644 --- a/js/views/messages.js +++ b/js/views/messages.js @@ -14,13 +14,14 @@ var Whisper = Whisper || {}; this.listenTo(this.threads, 'add', this.addThread); this.listenTo(this.threads, 'reset', this.addAll); this.listenTo(this.threads, 'all', this.render); + this.listenTo(Whisper.Messages, 'add', this.addMessage); // Suppresses 'add' events with {reset: true} and prevents the app view // from being re-rendered for every model. Only renders when the 'reset' // event is triggered at the end of the fetch. //this.messages.threads({reset: true}); - Whisper.Messages.fetch(); Whisper.Threads.fetch({reset: true}); + Whisper.Messages.fetch(); this.$el.appendTo($('#inbox')); @@ -69,5 +70,9 @@ var Whisper = Whisper || {}; this.$el.html(''); this.threads.each(this.addThread, this); }, + + addMessage: function(message) { + message.thread().trigger('message', message); + } }))(); })();