@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.database.EncryptingSmsDatabase;
 
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.database.NoSuchMessageException ; import  org.thoughtcrime.securesms.database.NoSuchMessageException ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.database.model.SmsMessageRecord ; import  org.thoughtcrime.securesms.database.model.SmsMessageRecord ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement ; import  org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.jobs.requirements.NetworkOrServiceRequirement ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.jobs.requirements.ServiceRequirement ; import  org.thoughtcrime.securesms.jobs.requirements.ServiceRequirement ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.notifications.MessageNotifier ; import  org.thoughtcrime.securesms.notifications.MessageNotifier ;  
			
		
	
		
		
			
				
					
					import  org.thoughtcrime.securesms.recipients.Recipients ; import  org.thoughtcrime.securesms.recipients.Recipients ;  
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -37,13 +38,7 @@ public class SmsSendJob extends MasterSecretJob {
 
			
		
	
		
		
			
				
					
					  private  final  long  messageId ; 
  private  final  long  messageId ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  public  SmsSendJob ( Context  context ,  long  messageId ,  String  name )  { 
  public  SmsSendJob ( Context  context ,  long  messageId ,  String  name )  { 
 
			
		
	
		
		
			
				
					
					    super ( context ,  JobParameters . newBuilder ( ) 
    super ( context ,  constructParameters ( context ,  name ) ) ; 
 
			
				
				
			
		
	
		
		
			
				
					
					                                . withPersistence ( ) 
 
			
		
	
		
		
			
				
					
					                                . withRequirement ( new  MasterSecretRequirement ( context ) ) 
 
			
		
	
		
		
			
				
					
					                                . withRequirement ( new  ServiceRequirement ( context ) ) 
 
			
		
	
		
		
			
				
					
					                                . withGroupId ( name ) 
 
			
		
	
		
		
			
				
					
					                                . create ( ) ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
	
		
		
			
				
					
					    this . messageId  =  messageId ; 
    this . messageId  =  messageId ; 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -105,7 +100,7 @@ public class SmsSendJob extends MasterSecretJob {
 
			
		
	
		
		
			
				
					
					      throws  UndeliverableMessageException ,  InsecureFallbackApprovalException 
      throws  UndeliverableMessageException ,  InsecureFallbackApprovalException 
 
			
		
	
		
		
			
				
					
					  { 
  { 
 
			
		
	
		
		
			
				
					
					    MultipartSmsMessageHandler  multipartMessageHandler  =  new  MultipartSmsMessageHandler ( ) ; 
    MultipartSmsMessageHandler  multipartMessageHandler  =  new  MultipartSmsMessageHandler ( ) ; 
 
			
		
	
		
		
			
				
					
					    OutgoingTextMessage  transportMessage                 =  OutgoingTextMessage . from ( message ) ; 
    OutgoingTextMessage          transportMessage         =  OutgoingTextMessage . from ( message ) ; 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  ( message . isSecure ( )  | |  message . isEndSession ( ) )  { 
    if  ( message . isSecure ( )  | |  message . isEndSession ( ) )  { 
 
			
		
	
		
		
			
				
					
					      transportMessage  =  getAsymmetricEncrypt ( masterSecret ,  transportMessage ) ; 
      transportMessage  =  getAsymmetricEncrypt ( masterSecret ,  transportMessage ) ; 
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -227,7 +222,7 @@ public class SmsSendJob extends MasterSecretJob {
 
			
		
	
		
		
			
				
					
					    return  pending ; 
    return  pending ; 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  pr otected  Intent  constructDeliveredIntent ( Context  context ,  long  messageId ,  long  type )  { 
  pr ivate  Intent  constructDeliveredIntent ( Context  context ,  long  messageId ,  long  type )  { 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					    Intent  pending  =  new  Intent ( SmsDeliveryListener . DELIVERED_SMS_ACTION , 
    Intent  pending  =  new  Intent ( SmsDeliveryListener . DELIVERED_SMS_ACTION , 
 
			
		
	
		
		
			
				
					
					                                Uri . parse ( "custom://"  +  messageId  +  System . currentTimeMillis ( ) ) , 
                                Uri . parse ( "custom://"  +  messageId  +  System . currentTimeMillis ( ) ) , 
 
			
		
	
		
		
			
				
					
					                                context ,  SmsDeliveryListener . class ) ; 
                                context ,  SmsDeliveryListener . class ) ; 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -237,5 +232,20 @@ public class SmsSendJob extends MasterSecretJob {
 
			
		
	
		
		
			
				
					
					    return  pending ; 
    return  pending ; 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  private  static  JobParameters  constructParameters ( Context  context ,  String  name )  { 
 
			
		
	
		
		
			
				
					
					    JobParameters . Builder  builder  =  JobParameters . newBuilder ( ) 
 
			
		
	
		
		
			
				
					
					                                                 . withPersistence ( ) 
 
			
		
	
		
		
			
				
					
					                                                 . withRequirement ( new  MasterSecretRequirement ( context ) ) 
 
			
		
	
		
		
			
				
					
					                                                 . withGroupId ( name ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    if  ( TextSecurePreferences . isWifiSmsEnabled ( context ) )  { 
 
			
		
	
		
		
			
				
					
					      builder . withRequirement ( new  NetworkOrServiceRequirement ( context ) ) ; 
 
			
		
	
		
		
			
				
					
					    }  else  { 
 
			
		
	
		
		
			
				
					
					      builder . withRequirement ( new  ServiceRequirement ( context ) ) ; 
 
			
		
	
		
		
			
				
					
					    } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					    return  builder . create ( ) ; 
 
			
		
	
		
		
			
				
					
					  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					} }