Rename PushMediaSendJob -> IndividualSendJob.

This commit is contained in:
Greyson Parrelli 2022-12-15 09:19:34 -05:00
parent 3850c9c89d
commit 32b66643c5
8 changed files with 32 additions and 35 deletions

View file

@ -38,7 +38,7 @@ import org.thoughtcrime.securesms.jobs.MarkerJob;
import org.thoughtcrime.securesms.jobs.PreKeysSyncJob; import org.thoughtcrime.securesms.jobs.PreKeysSyncJob;
import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob; import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob;
import org.thoughtcrime.securesms.jobs.PushGroupSendJob; import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
import org.thoughtcrime.securesms.jobs.PushMediaSendJob; import org.thoughtcrime.securesms.jobs.IndividualSendJob;
import org.thoughtcrime.securesms.jobs.PushProcessMessageJob; import org.thoughtcrime.securesms.jobs.PushProcessMessageJob;
import org.thoughtcrime.securesms.jobs.ReactionSendJob; import org.thoughtcrime.securesms.jobs.ReactionSendJob;
import org.thoughtcrime.securesms.jobs.TypingSendJob; import org.thoughtcrime.securesms.jobs.TypingSendJob;
@ -180,7 +180,7 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
.setJobStorage(new FastJobStorage(JobDatabase.getInstance(context))) .setJobStorage(new FastJobStorage(JobDatabase.getInstance(context)))
.setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(context), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(context))) .setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(context), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(context)))
.addReservedJobRunner(new FactoryJobPredicate(PushDecryptMessageJob.KEY, PushProcessMessageJob.KEY, MarkerJob.KEY)) .addReservedJobRunner(new FactoryJobPredicate(PushDecryptMessageJob.KEY, PushProcessMessageJob.KEY, MarkerJob.KEY))
.addReservedJobRunner(new FactoryJobPredicate(PushMediaSendJob.KEY, PushGroupSendJob.KEY, ReactionSendJob.KEY, TypingSendJob.KEY, GroupCallUpdateSendJob.KEY)) .addReservedJobRunner(new FactoryJobPredicate(IndividualSendJob.KEY, PushGroupSendJob.KEY, ReactionSendJob.KEY, TypingSendJob.KEY, GroupCallUpdateSendJob.KEY))
.build(); .build();
return new JobManager(context, config); return new JobManager(context, config);
} }

View file

@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.MmsException;
import org.thoughtcrime.securesms.mms.OutgoingMessage; import org.thoughtcrime.securesms.mms.OutgoingMessage;
@ -56,22 +57,29 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit;
public class PushMediaSendJob extends PushSendJob { public class IndividualSendJob extends PushSendJob {
public static final String KEY = "PushMediaSendJob"; public static final String KEY = "PushMediaSendJob";
private static final String TAG = Log.tag(PushMediaSendJob.class); private static final String TAG = Log.tag(IndividualSendJob.class);
private static final String KEY_MESSAGE_ID = "message_id"; private static final String KEY_MESSAGE_ID = "message_id";
private long messageId; private final long messageId;
public PushMediaSendJob(long messageId, @NonNull Recipient recipient, boolean hasMedia) { public IndividualSendJob(long messageId, @NonNull Recipient recipient, boolean hasMedia) {
this(constructParameters(recipient, hasMedia), messageId); this(new Parameters.Builder()
.setQueue(recipient.getId().toQueueKey(hasMedia))
.addConstraint(NetworkConstraint.KEY)
.setLifespan(TimeUnit.DAYS.toMillis(1))
.setMaxAttempts(Parameters.UNLIMITED)
.build(),
messageId);
} }
private PushMediaSendJob(Job.Parameters parameters, long messageId) { private IndividualSendJob(Job.Parameters parameters, long messageId) {
super(parameters); super(parameters);
this.messageId = messageId; this.messageId = messageId;
} }
@ -83,11 +91,10 @@ public class PushMediaSendJob extends PushSendJob {
throw new AssertionError("No ServiceId!"); throw new AssertionError("No ServiceId!");
} }
MessageTable database = SignalDatabase.messages(); OutgoingMessage message = SignalDatabase.messages().getOutgoingMessage(messageId);
OutgoingMessage message = database.getOutgoingMessage(messageId);
Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message); Set<String> attachmentUploadIds = enqueueCompressingAndUploadAttachmentsChains(jobManager, message);
jobManager.add(new PushMediaSendJob(messageId, recipient, attachmentUploadIds.size() > 0), attachmentUploadIds, recipient.getId().toQueueKey()); jobManager.add(new IndividualSendJob(messageId, recipient, attachmentUploadIds.size() > 0), attachmentUploadIds, recipient.getId().toQueueKey());
} catch (NoSuchMessageException | MmsException e) { } catch (NoSuchMessageException | MmsException e) {
Log.w(TAG, "Failed to enqueue message.", e); Log.w(TAG, "Failed to enqueue message.", e);
@ -322,10 +329,10 @@ public class PushMediaSendJob extends PushSendJob {
return data.getLong(KEY_MESSAGE_ID); return data.getLong(KEY_MESSAGE_ID);
} }
public static final class Factory implements Job.Factory<PushMediaSendJob> { public static final class Factory implements Job.Factory<IndividualSendJob> {
@Override @Override
public @NonNull PushMediaSendJob create(@NonNull Parameters parameters, @NonNull Data data) { public @NonNull IndividualSendJob create(@NonNull Parameters parameters, @NonNull Data data) {
return new PushMediaSendJob(parameters, data.getLong(KEY_MESSAGE_ID)); return new IndividualSendJob(parameters, data.getLong(KEY_MESSAGE_ID));
} }
} }
} }

View file

@ -108,6 +108,7 @@ public final class JobManagerFactories {
put(GroupCallPeekJob.KEY, new GroupCallPeekJob.Factory()); put(GroupCallPeekJob.KEY, new GroupCallPeekJob.Factory());
put(GroupCallPeekWorkerJob.KEY, new GroupCallPeekWorkerJob.Factory()); put(GroupCallPeekWorkerJob.KEY, new GroupCallPeekWorkerJob.Factory());
put(GroupV2UpdateSelfProfileKeyJob.KEY, new GroupV2UpdateSelfProfileKeyJob.Factory()); put(GroupV2UpdateSelfProfileKeyJob.KEY, new GroupV2UpdateSelfProfileKeyJob.Factory());
put(IndividualSendJob.KEY, new IndividualSendJob.Factory());
put(KbsEnclaveMigrationWorkerJob.KEY, new KbsEnclaveMigrationWorkerJob.Factory()); put(KbsEnclaveMigrationWorkerJob.KEY, new KbsEnclaveMigrationWorkerJob.Factory());
put(LeaveGroupV2Job.KEY, new LeaveGroupV2Job.Factory()); put(LeaveGroupV2Job.KEY, new LeaveGroupV2Job.Factory());
put(LeaveGroupV2WorkerJob.KEY, new LeaveGroupV2WorkerJob.Factory()); put(LeaveGroupV2WorkerJob.KEY, new LeaveGroupV2WorkerJob.Factory());
@ -151,7 +152,6 @@ public final class JobManagerFactories {
put(PushDistributionListSendJob.KEY, new PushDistributionListSendJob.Factory()); put(PushDistributionListSendJob.KEY, new PushDistributionListSendJob.Factory());
put(PushGroupSendJob.KEY, new PushGroupSendJob.Factory()); put(PushGroupSendJob.KEY, new PushGroupSendJob.Factory());
put(PushGroupSilentUpdateSendJob.KEY, new PushGroupSilentUpdateSendJob.Factory()); put(PushGroupSilentUpdateSendJob.KEY, new PushGroupSilentUpdateSendJob.Factory());
put(PushMediaSendJob.KEY, new PushMediaSendJob.Factory());
put(PushNotificationReceiveJob.KEY, new PushNotificationReceiveJob.Factory()); put(PushNotificationReceiveJob.KEY, new PushNotificationReceiveJob.Factory());
put(PushProcessEarlyMessagesJob.KEY, new PushProcessEarlyMessagesJob.Factory()); put(PushProcessEarlyMessagesJob.KEY, new PushProcessEarlyMessagesJob.Factory());
put(PushProcessMessageJob.KEY, new PushProcessMessageJob.Factory()); put(PushProcessMessageJob.KEY, new PushProcessMessageJob.Factory());
@ -253,7 +253,7 @@ public final class JobManagerFactories {
put("CreateSignedPreKeyJob", new PreKeysSyncJob.Factory()); put("CreateSignedPreKeyJob", new PreKeysSyncJob.Factory());
put("RefreshPreKeysJob", new PreKeysSyncJob.Factory()); put("RefreshPreKeysJob", new PreKeysSyncJob.Factory());
put("RecipientChangedNumberJob", new FailingJob.Factory()); put("RecipientChangedNumberJob", new FailingJob.Factory());
put("PushTextSendJob", new PushMediaSendJob.Factory()); put("PushTextSendJob", new IndividualSendJob.Factory());
}}; }};
} }

View file

@ -15,7 +15,7 @@ import kotlin.time.Duration.Companion.seconds
/** /**
* Crafts a [OutgoingPaymentsNotificationMessage] and uses the regular media sending framework to send it * Crafts a [OutgoingPaymentsNotificationMessage] and uses the regular media sending framework to send it
* instead of attempting to send directly. The logic for actually creating over-the-wire representation is * instead of attempting to send directly. The logic for actually creating over-the-wire representation is
* now in [PushMediaSendJob] which gets enqueued by [MessageSender.send]. * now in [IndividualSendJob] which gets enqueued by [MessageSender.send].
*/ */
class PaymentNotificationSendJobV2 private constructor( class PaymentNotificationSendJobV2 private constructor(
parameters: Parameters, parameters: Parameters,

View file

@ -36,7 +36,6 @@ import org.thoughtcrime.securesms.events.PartProgressEvent;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil; import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.CertificateType; import org.thoughtcrime.securesms.keyvalue.CertificateType;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreview;
@ -90,15 +89,6 @@ public abstract class PushSendJob extends SendJob {
super(parameters); super(parameters);
} }
protected static Job.Parameters constructParameters(@NonNull Recipient recipient, boolean hasMedia) {
return new Parameters.Builder()
.setQueue(recipient.getId().toQueueKey(hasMedia))
.addConstraint(NetworkConstraint.KEY)
.setLifespan(TimeUnit.DAYS.toMillis(1))
.setMaxAttempts(Parameters.UNLIMITED)
.build();
}
@Override @Override
protected final void onSend() throws Exception { protected final void onSend() throws Exception {
if (SignalStore.account().aciPreKeys().getSignedPreKeyFailureCount() > 5) { if (SignalStore.account().aciPreKeys().getSignedPreKeyFailureCount() > 5) {

View file

@ -10,7 +10,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobs.PushGroupSendJob; import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
import org.thoughtcrime.securesms.jobs.PushMediaSendJob; import org.thoughtcrime.securesms.jobs.IndividualSendJob;
import java.util.Set; import java.util.Set;
@ -38,7 +38,7 @@ public final class RateLimitUtil {
ApplicationDependencies.getJobManager().update((job, serializer) -> { ApplicationDependencies.getJobManager().update((job, serializer) -> {
Data data = serializer.deserialize(job.getSerializedData()); Data data = serializer.deserialize(job.getSerializedData());
if (job.getFactoryKey().equals(PushMediaSendJob.KEY) && messageIds.contains(PushMediaSendJob.getMessageId(data))) { if (job.getFactoryKey().equals(IndividualSendJob.KEY) && messageIds.contains(IndividualSendJob.getMessageId(data))) {
return job.withNextRunAttemptTime(System.currentTimeMillis()); return job.withNextRunAttemptTime(System.currentTimeMillis());
} else if (job.getFactoryKey().equals(PushGroupSendJob.KEY) && messageIds.contains(PushGroupSendJob.getMessageId(data))) { } else if (job.getFactoryKey().equals(PushGroupSendJob.KEY) && messageIds.contains(PushGroupSendJob.getMessageId(data))) {
return job.withNextRunAttemptTime(System.currentTimeMillis()); return job.withNextRunAttemptTime(System.currentTimeMillis());

View file

@ -58,7 +58,7 @@ import org.thoughtcrime.securesms.jobs.MmsSendJob;
import org.thoughtcrime.securesms.jobs.ProfileKeySendJob; import org.thoughtcrime.securesms.jobs.ProfileKeySendJob;
import org.thoughtcrime.securesms.jobs.PushDistributionListSendJob; import org.thoughtcrime.securesms.jobs.PushDistributionListSendJob;
import org.thoughtcrime.securesms.jobs.PushGroupSendJob; import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
import org.thoughtcrime.securesms.jobs.PushMediaSendJob; import org.thoughtcrime.securesms.jobs.IndividualSendJob;
import org.thoughtcrime.securesms.jobs.ReactionSendJob; import org.thoughtcrime.securesms.jobs.ReactionSendJob;
import org.thoughtcrime.securesms.jobs.RemoteDeleteSendJob; import org.thoughtcrime.securesms.jobs.RemoteDeleteSendJob;
import org.thoughtcrime.securesms.jobs.ResumableUploadSpecJob; import org.thoughtcrime.securesms.jobs.ResumableUploadSpecJob;
@ -407,7 +407,7 @@ public class MessageSender {
} else if (recipient.isDistributionList()) { } else if (recipient.isDistributionList()) {
jobManager.add(new PushDistributionListSendJob(messageId, recipient.getId(), true, Collections.emptySet()), messageDependsOnIds, recipient.getId().toQueueKey()); jobManager.add(new PushDistributionListSendJob(messageId, recipient.getId(), true, Collections.emptySet()), messageDependsOnIds, recipient.getId().toQueueKey());
} else { } else {
jobManager.add(new PushMediaSendJob(messageId, recipient, true), messageDependsOnIds, recipient.getId().toQueueKey()); jobManager.add(new IndividualSendJob(messageId, recipient, true), messageDependsOnIds, recipient.getId().toQueueKey());
} }
} }
} }
@ -533,10 +533,10 @@ public class MessageSender {
JobManager jobManager = ApplicationDependencies.getJobManager(); JobManager jobManager = ApplicationDependencies.getJobManager();
if (uploadJobIds.size() > 0) { if (uploadJobIds.size() > 0) {
Job mediaSend = new PushMediaSendJob(messageId, recipient, true); Job mediaSend = new IndividualSendJob(messageId, recipient, true);
jobManager.add(mediaSend, uploadJobIds); jobManager.add(mediaSend, uploadJobIds);
} else { } else {
PushMediaSendJob.enqueue(context, jobManager, messageId, recipient); IndividualSendJob.enqueue(context, jobManager, messageId, recipient);
} }
} }

View file

@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.jobs.MultiDeviceReadUpdateJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceVerifiedUpdateJob; import org.thoughtcrime.securesms.jobs.MultiDeviceVerifiedUpdateJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceViewOnceOpenJob; import org.thoughtcrime.securesms.jobs.MultiDeviceViewOnceOpenJob;
import org.thoughtcrime.securesms.jobs.PushGroupSendJob; import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
import org.thoughtcrime.securesms.jobs.PushMediaSendJob; import org.thoughtcrime.securesms.jobs.IndividualSendJob;
import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob; import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob;
import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob; import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob;
import org.thoughtcrime.securesms.jobs.SmsSendJob; import org.thoughtcrime.securesms.jobs.SmsSendJob;
@ -258,7 +258,7 @@ public class RecipientIdJobMigrationTest {
assertEquals(RecipientId.from(1).toQueueKey(), converted.getQueueKey()); assertEquals(RecipientId.from(1).toQueueKey(), converted.getQueueKey());
assertEquals(1, converted.getData().getLong("message_id")); assertEquals(1, converted.getData().getLong("message_id"));
new PushMediaSendJob.Factory().create(mock(Job.Parameters.class), converted.getData()); new IndividualSendJob.Factory().create(mock(Job.Parameters.class), converted.getData());
} }
@Test @Test