diff --git a/js/models/messages.js b/js/models/messages.js index 8ac319122a..d88635e777 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -202,6 +202,7 @@ var promise = new textsecure.ReplayableError(error).replay(); if (this.isIncoming()) { promise = promise.then(function(dataMessage) { + this.removeConflictFor(number); this.handleDataMessage(dataMessage); }.bind(this)); } else { diff --git a/js/views/message_view.js b/js/views/message_view.js index 6add9a9600..c8c2617bd2 100644 --- a/js/views/message_view.js +++ b/js/views/message_view.js @@ -9,7 +9,7 @@ tagName: "li", template: $('#message').html(), initialize: function() { - this.listenTo(this.model, 'change:errors', this.renderErrors); + this.listenTo(this.model, 'change:errors', this.onErrorsChanged); this.listenTo(this.model, 'change:body', this.render); this.listenTo(this.model, 'change:delivered', this.renderDelivered); this.listenTo(this.model, 'change', this.renderSent); @@ -44,6 +44,13 @@ renderDelivered: function() { if (this.model.get('delivered')) { this.$el.addClass('delivered'); } }, + onErrorsChanged: function() { + if (this.model.isIncoming()) { + this.render(); + } else { + this.renderErrors(); + } + }, renderErrors: function() { var errors = this.model.get('errors'); if (_.size(errors) > 0) {