@ -130,13 +130,6 @@
var source = message . get ( 'source' ) ;
var timestamp = message . get ( 'sent_at' ) ;
return textsecure . processDecrypted ( pushMessageContent , source ) . then ( function ( pushMessageContent ) {
var type = 'incoming' ;
if ( pushMessageContent . sync ) {
type = 'outgoing' ;
timestamp = pushMessageContent . sync . timestamp . toNumber ( ) ;
}
var now = new Date ( ) . getTime ( ) ;
var conversationId = source ;
if ( pushMessageContent . sync ) {
conversationId = pushMessageContent . sync . destination ;
@ -144,8 +137,41 @@
conversationId = pushMessageContent . group . id ;
}
var conversation = new Whisper . Conversation ( { id : conversationId } ) ;
var attributes = { } ;
conversation . fetch ( ) . always ( function ( ) {
var type = 'incoming' ;
if ( pushMessageContent . sync ) {
type = 'outgoing' ;
timestamp = pushMessageContent . sync . timestamp . toNumber ( ) ;
// lazy hack - check for receipts that arrived early.
if ( pushMessageContent . sync . destination ) {
var receipt = window . receipts . findWhere ( {
timestamp : timestamp ,
source : pushMessageContent . sync . destination
} ) ;
if ( receipt ) {
window . receipts . remove ( receipt ) ;
message . set ( {
delivered : ( message . get ( 'delivered' ) || 0 ) + 1
} ) ;
}
} else if ( pushMessageContent . group . id ) { // group sync
var members = conversation . get ( 'members' ) ;
var receipts = window . receipts . where ( { timestamp : timestamp } ) ;
for ( var i in receipts ) {
if ( members . indexOf ( receipts [ i ] . get ( 'source' ) ) > - 1 ) {
window . receipts . remove ( receipts [ i ] ) ;
message . set ( {
delivered : ( message . get ( 'delivered' ) || 0 ) + 1
} ) ;
}
}
} else {
throw new Error ( 'Received sync message with no destination and no group id' ) ;
}
}
var now = new Date ( ) . getTime ( ) ;
var attributes = { } ;
if ( pushMessageContent . group ) {
var group _update = { } ;
attributes = {