@ -38568,11 +38568,11 @@ OutgoingMessage.prototype = {
} ,
reloadDevicesAndSend : function ( number , recurse ) {
return function ( ) {
return textsecure . storage . devices. getDeviceObjectsForNumber ( number ) . then ( function ( device sForNumber ) {
if ( device sForNumber . length == 0 ) {
return textsecure . storage . protocol. getDeviceIds ( number ) . then ( function ( device Id s) {
if ( device Id s. length == 0 ) {
return this . registerError ( number , "Got empty device list when loading device keys" , null ) ;
}
return this . doSendMessage ( number , device sForNumber , recurse ) ;
return this . doSendMessage ( number , device Id s, recurse ) ;
} . bind ( this ) ) ;
} . bind ( this ) ;
} ,
@ -38623,14 +38623,14 @@ OutgoingMessage.prototype = {
} ) ;
} ,
doSendMessage : function ( number , device sForNumber , recurse ) {
doSendMessage : function ( number , device Id s, recurse ) {
var ciphers = { } ;
var plaintext = this . message . toArrayBuffer ( ) ;
return Promise . all ( device sForNumber . map ( function ( device ) {
var address = libsignal . SignalProtocolAddress .fromString ( device . encodedNumber ) ;
return Promise . all ( device Id s. map ( function ( device Id ) {
var address = new libsignal . SignalProtocolAddress (number , deviceId ) ;
var sessionCipher = new libsignal . SessionCipher ( textsecure . storage . protocol , address ) ;
ciphers [ address . getDeviceId ( ) ] = sessionCipher ;
return this . encryptToDevice ( device , plaintext , sessionCipher ) ;
return this . encryptToDevice ( address , plaintext , sessionCipher ) ;
} . bind ( this ) ) ) . then ( function ( jsonData ) {
return this . transmitMessage ( number , jsonData , this . timestamp ) . then ( function ( ) {
this . successfulNumbers [ this . successfulNumbers . length ] = number ;
@ -38664,19 +38664,19 @@ OutgoingMessage.prototype = {
} . bind ( this ) ) ;
} ,
encryptToDevice : function ( device , plaintext , sessionCipher ) {
encryptToDevice : function ( address , plaintext , sessionCipher ) {
return Promise . all ( [
sessionCipher . encrypt ( plaintext ) ,
sessionCipher . getRemoteRegistrationId ( )
] ) . then ( function ( result ) {
return this . toJSON ( device , result [ 0 ] , result [ 1 ] ) ;
return this . toJSON ( address , result [ 0 ] , result [ 1 ] ) ;
} . bind ( this ) ) ;
} ,
toJSON : function ( device , encryptedMsg , registrationId ) {
toJSON : function ( address , encryptedMsg , registrationId ) {
var json = {
type : encryptedMsg . type ,
destinationDeviceId : textsecure. utils . unencodeNumber ( device . encodedNumber ) [ 1 ] ,
destinationDeviceId : address. getDeviceId ( ) ,
destinationRegistrationId : registrationId
} ;
@ -38998,11 +38998,10 @@ MessageSender.prototype = {
proto . body = "TERMINATE" ;
proto . flags = textsecure . protobuf . DataMessage . Flags . END _SESSION ;
return this . sendIndividualProto ( number , proto , timestamp ) . then ( function ( res ) {
return textsecure . storage . devices . getDeviceObjectsForNumber ( number ) . then ( function ( devices ) {
return Promise . all ( devices . map ( function ( device ) {
console . log ( 'closing session for' , device . encodedNumber ) ;
var address = libsignal . SignalProtocolAddress . fromString ( device . encodedNumber ) ;
return textsecure . storage . protocol . getDeviceIds ( number ) . then ( function ( deviceIds ) {
return Promise . all ( deviceIds . map ( function ( deviceId ) {
var address = new libsignal . SignalProtocolAddress ( number , deviceId ) ;
console . log ( 'closing session for' , address . toString ( ) ) ;
var sessionCipher = new libsignal . SessionCipher ( textsecure . storage . protocol , address ) ;
return sessionCipher . closeOpenSessionForDevice ( ) ;
} ) ) . then ( function ( ) {