@ -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 ( ) ;
}
}
}