Add replayable error for signed key failure

Disable message sending if signed key updates fail too many times, but
allow the user to retry sending.

// FREEBIE
This commit is contained in:
lilia 2017-02-15 18:27:06 -08:00
parent e0fd188d42
commit cd0fe7037b
5 changed files with 77 additions and 7 deletions

View file

@ -211,6 +211,9 @@
if (result instanceof Error) {
errors = [result];
this.saveErrors(errors);
if (result.name === 'SignedPreKeyRotationError') {
getAccountManager().rotateSignedPreKey();
}
} else {
errors = result.errors;
this.saveErrors(errors);
@ -283,7 +286,8 @@
var error = _.find(this.get('errors'), function(e) {
return (e.name === 'MessageError' ||
e.name === 'OutgoingMessageError' ||
e.name === 'SendMessageNetworkError');
e.name === 'SendMessageNetworkError' ||
e.name === 'SignedPreKeyRotationError');
});
return !!error;
},
@ -292,11 +296,18 @@
return e.number === number &&
(e.name === 'MessageError' ||
e.name === 'OutgoingMessageError' ||
e.name === 'SendMessageNetworkError');
e.name === 'SendMessageNetworkError' ||
e.name === 'SignedPreKeyRotationError');
});
this.set({errors: errors[1]});
return errors[0][0];
},
isReplayableError: function(e) {
return (e.name === 'MessageError' ||
e.name === 'OutgoingMessageError' ||
e.name === 'SendMessageNetworkError' ||
e.name === 'SignedPreKeyRotationError');
},
resend: function(number) {
var error = this.removeOutgoingErrors(number);