Normalize send-path error handling

Receive and handle an array of errors in both the group and individual
cases.
This commit is contained in:
lilia 2014-12-22 15:09:49 -08:00
parent 80993753de
commit 8ed73d0ce5
2 changed files with 12 additions and 6 deletions

View file

@ -66,14 +66,20 @@
else { else {
sendFunc = textsecure.messaging.sendMessageToGroup; sendFunc = textsecure.messaging.sendMessageToGroup;
} }
sendFunc(this.get('id'), body, attachments, now).catch(function(e) { sendFunc(this.get('id'), body, attachments, now).catch(function(errors) {
if (e.name === 'OutgoingIdentityKeyError') { var keyErrors = [];
e.args.push(message.id); _.each(errors, function(e) {
message.save({ errors : [e] }).then(function() { if (e.error.name === 'OutgoingIdentityKeyError') {
e.error.args.push(message.id);
keyErrors.push(e.error);
}
});
if (keyErrors.length) {
message.save({ errors : keyErrors }).then(function() {
extension.trigger('message', message); // notify frontend listeners extension.trigger('message', message); // notify frontend listeners
}); });
} else { } else {
throw e; throw errors;
} }
}); });
}, },

View file

@ -238,7 +238,7 @@ window.textsecure.messaging = function() {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
sendMessageProto(timestamp, [number], proto, function(res) { sendMessageProto(timestamp, [number], proto, function(res) {
if (res.failure.length > 0) if (res.failure.length > 0)
reject(res.failure[0].error); reject(res.failure);
else else
resolve(); resolve();
}); });