From 3e73f8f0baf917dec18772ce4f6a02fc0942d072 Mon Sep 17 00:00:00 2001 From: lilia Date: Fri, 31 Jul 2015 17:20:33 -0700 Subject: [PATCH] Resolve conflicts in series Attempting to resolve outgoing conflicts in parallel triggers multiple requests for new keys from the server and causes it to return a 500 error. --- js/models/conversations.js | 6 +++++- js/models/messages.js | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index 90d33c71c..7a78986fb 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -273,11 +273,15 @@ return textsecure.storage.axolotl.removeIdentityKey(number).then(function() { return textsecure.storage.axolotl.putIdentityKey(number, identityKey).then(function() { + var promise = Promise.resolve(); this.messageCollection.each(function(message) { if (message.hasKeyConflict(number)) { - message.resolveConflict(number); + promise = promise.then(function() { + return message.resolveConflict(number); + }); } }); + return promise; }.bind(this)); }.bind(this)); }, diff --git a/js/models/messages.js b/js/models/messages.js index a45b5315f..c0bac9178 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -121,6 +121,7 @@ this.save({sent: true, errors: errors}); }.bind(this)); } + return promise; } }, handleDataMessage: function(dataMessage) {