Delay conversation creation til post-decrypt

This commit is contained in:
lilia 2015-05-20 15:52:25 -07:00
parent 12eb553a3f
commit b83ce7a015
2 changed files with 33 additions and 42 deletions

View file

@ -53,51 +53,42 @@
var now = new Date().getTime(); var now = new Date().getTime();
var timestamp = pushMessage.timestamp.toNumber(); var timestamp = pushMessage.timestamp.toNumber();
var conversation = getConversation({ var message = new Whisper.Message({
id : pushMessage.source, source : pushMessage.source,
type : 'private' sourceDevice : pushMessage.sourceDevice,
relay : pushMessage.relay,
sent_at : timestamp,
received_at : now,
conversationId : pushMessage.source,
type : 'incoming'
}); });
conversation.fetch().always(function() { var newUnreadCount = storage.get("unreadCount", 0) + 1;
var message = conversation.messageCollection.add({ storage.put("unreadCount", newUnreadCount);
source : pushMessage.source, extension.navigator.setBadgeText(newUnreadCount);
sourceDevice : pushMessage.sourceDevice,
relay : pushMessage.relay,
sent_at : timestamp,
received_at : now,
conversationId : pushMessage.source,
type : 'incoming'
});
var newUnreadCount = storage.get("unreadCount", 0) + 1; message.save().then(function() {
storage.put("unreadCount", newUnreadCount); return new Promise(function(resolve) {
extension.navigator.setBadgeText(newUnreadCount); resolve(textsecure.protocol_wrapper.handleIncomingPushMessageProto(pushMessage).then(
function(pushMessageContent) {
conversation.save().then(function() { message.handlePushMessageContent(pushMessageContent);
message.save().then(function() { }
return new Promise(function(resolve) { ));
resolve(textsecure.protocol_wrapper.handleIncomingPushMessageProto(pushMessage).then( }).catch(function(e) {
function(pushMessageContent) { if (e.name === 'IncomingIdentityKeyError') {
message.handlePushMessageContent(pushMessageContent); message.save({ errors : [e] }).then(function() {
} extension.trigger('updateInbox');
)); notifyConversation(message);
}).catch(function(e) {
if (e.name === 'IncomingIdentityKeyError') {
message.save({ errors : [e] }).then(function() {
extension.trigger('updateInbox');
notifyConversation(message);
});
} else if (e.message === 'Bad MAC') {
message.save({ errors : [ _.pick(e, ['name', 'message'])]}).then(function() {
extension.trigger('updateInbox');
notifyConversation(message);
});
} else {
console.log(e);
throw e;
}
}); });
}); } else if (e.message === 'Bad MAC') {
message.save({ errors : [ _.pick(e, ['name', 'message'])]}).then(function() {
extension.trigger('updateInbox');
notifyConversation(message);
});
} else {
console.log(e);
throw e;
}
}); });
}); });
} }

View file

@ -17,7 +17,7 @@
'use strict'; 'use strict';
window.Whisper = window.Whisper || {}; window.Whisper = window.Whisper || {};
var Message = Backbone.Model.extend({ var Message = window.Whisper.Message = Backbone.Model.extend({
database : Whisper.Database, database : Whisper.Database,
storeName : 'messages', storeName : 'messages',
defaults : function() { defaults : function() {