Stop clobbering conversation attributes
Unless the background page fetches the latest details of a conversation before updating it, it may clobber or nullify some attributes e.g., the contact's name.
This commit is contained in:
parent
29bf70b76f
commit
ce4ce164af
1 changed files with 35 additions and 33 deletions
|
@ -93,42 +93,44 @@
|
||||||
type : 'private'
|
type : 'private'
|
||||||
}, { merge : true } );
|
}, { merge : true } );
|
||||||
|
|
||||||
var message = messages.add({
|
conversation.fetch().always(function() {
|
||||||
source : pushMessage.source,
|
var message = messages.add({
|
||||||
sourceDevice : pushMessage.sourceDevice,
|
source : pushMessage.source,
|
||||||
relay : pushMessage.relay,
|
sourceDevice : pushMessage.sourceDevice,
|
||||||
sent_at : timestamp,
|
relay : pushMessage.relay,
|
||||||
received_at : now,
|
sent_at : timestamp,
|
||||||
conversationId : pushMessage.source,
|
received_at : now,
|
||||||
type : 'incoming'
|
conversationId : pushMessage.source,
|
||||||
});
|
type : 'incoming'
|
||||||
|
});
|
||||||
|
|
||||||
var newUnreadCount = textsecure.storage.getUnencrypted("unreadCount", 0) + 1;
|
var newUnreadCount = textsecure.storage.getUnencrypted("unreadCount", 0) + 1;
|
||||||
textsecure.storage.putUnencrypted("unreadCount", newUnreadCount);
|
textsecure.storage.putUnencrypted("unreadCount", newUnreadCount);
|
||||||
extension.navigator.setBadgeText(newUnreadCount);
|
extension.navigator.setBadgeText(newUnreadCount);
|
||||||
|
|
||||||
conversation.save().then(function() {
|
conversation.save().then(function() {
|
||||||
message.save().then(function() {
|
message.save().then(function() {
|
||||||
return new Promise(function(resolve) {
|
return new Promise(function(resolve) {
|
||||||
resolve(textsecure.protocol.handleIncomingPushMessageProto(pushMessage).then(
|
resolve(textsecure.protocol.handleIncomingPushMessageProto(pushMessage).then(
|
||||||
function(pushMessageContent) {
|
function(pushMessageContent) {
|
||||||
handlePushMessageContent(pushMessageContent, message);
|
handlePushMessageContent(pushMessageContent, message);
|
||||||
|
}
|
||||||
|
));
|
||||||
|
}).catch(function(e) {
|
||||||
|
if (e.name === 'IncomingIdentityKeyError') {
|
||||||
|
e.args.push(message.id);
|
||||||
|
message.save({ errors : [e] }).then(function() {
|
||||||
|
extension.trigger('message', message); // notify frontend listeners
|
||||||
|
});
|
||||||
|
} else if (e.message === 'Bad MAC') {
|
||||||
|
message.save({ errors : [ _.pick(e, ['name', 'message'])]}).then(function() {
|
||||||
|
extension.trigger('message', message); // notify frontend listeners
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log(e);
|
||||||
|
throw e;
|
||||||
}
|
}
|
||||||
));
|
});
|
||||||
}).catch(function(e) {
|
|
||||||
if (e.name === 'IncomingIdentityKeyError') {
|
|
||||||
e.args.push(message.id);
|
|
||||||
message.save({ errors : [e] }).then(function() {
|
|
||||||
extension.trigger('message', message); // notify frontend listeners
|
|
||||||
});
|
|
||||||
} else if (e.message === 'Bad MAC') {
|
|
||||||
message.save({ errors : [ _.pick(e, ['name', 'message'])]}).then(function() {
|
|
||||||
extension.trigger('message', message); // notify frontend listeners
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.log(e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue