@ -23,7 +23,7 @@ function MessageReceiver(username, password, signalingKey, options = {}) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  this . username  =  username ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  this . password  =  password ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  this . lokiMessageAPI  =  window . LokiMessageAPI ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  this . localServer  =  new  window . LocalLokiServer ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  this . localServer  =  window . LocalLokiServer ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  if  ( ! options . serverTrustRoot )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    throw  new  Error ( 'Server trust root is required!' ) ; 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -82,15 +82,13 @@ MessageReceiver.prototype.extend({
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    this . localServer . removeAllListeners ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    this . localServer . on ( 'message' ,  this . httpPollingResource . handleMessage ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    // Passing 0 as the port will automatically assign an unused port
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    this . localServer 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      . start ( 0 ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      . then ( port  => 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        window . log . info ( ` Local Server started at localhost: ${ port } ` ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      . start ( window . localServerPort ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      . then ( port  =>  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        window . log . info ( ` Local Server started at localhost: ${ port } ` ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        window . libloki . api . broadcastOnlineStatus ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        this . localServer . on ( 'message' ,  this . httpPollingResource . handleMessage ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      } ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    // TODO: Rework this socket stuff to work with online messaging
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    const  useWebSocket  =  false ; 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -135,7 +133,7 @@ MessageReceiver.prototype.extend({
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( this . localServer )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      this . localServer . remove AllListeners(  ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      this . localServer . remove Listener( 'message' ,  this . httpPollingResource . handleMessage  ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      this . localServer  =  null ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  } , 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -713,6 +711,13 @@ MessageReceiver.prototype.extend({
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          . then ( this . unpad ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          . then ( handleSessionReset ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        break ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      case  textsecure . protobuf . Envelope . Type . ONLINE _BROADCAST : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        window . log . info ( 'Online broadcast message from' ,  this . getEnvelopeId ( envelope ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        promise  =  captureActiveSession ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          . then ( ( )  =>  sessionCipher . decryptWhisperMessage ( ciphertext ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          . then ( this . unpad ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          . then ( handleSessionReset ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        break ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      case  textsecure . protobuf . Envelope . Type . FRIEND _REQUEST :  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        window . log . info ( 'friend-request message from ' ,  envelope . source ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        promise  =  fallBackSessionCipher 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -899,6 +904,9 @@ MessageReceiver.prototype.extend({
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      } ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  handleOnlineBroadcastMessage ( envelope ,  onlineBroadcastMessage )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  this . removeFromCache ( envelope ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  } , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				  handleDataMessage ( envelope ,  msg )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    window . log . info ( 'data message from' ,  this . getEnvelopeId ( envelope ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    let  p  =  Promise . resolve ( ) ; 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -1013,6 +1021,8 @@ MessageReceiver.prototype.extend({
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        envelope . source , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        content . preKeyBundleMessage 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( content . onlineBroadcastMessage ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      return  this . handleOnlineBroadcastMessage ( envelope ,  content . onlineBroadcastMessage ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( content . syncMessage ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      return  this . handleSyncMessage ( envelope ,  content . syncMessage ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( content . dataMessage )