Don't enqueue duplicate PushDecryptMessageJobs.

This commit is contained in:
Greyson Parrelli 2020-05-28 08:58:40 -04:00
parent ea8e13b1c8
commit 1cd6b58ece
2 changed files with 13 additions and 6 deletions

View File

@ -50,7 +50,7 @@ public class PushDatabase extends Database {
Optional<Long> messageId = find(envelope); Optional<Long> messageId = find(envelope);
if (messageId.isPresent()) { if (messageId.isPresent()) {
return messageId.get(); return -1;
} else { } else {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(TYPE, envelope.getType()); values.put(TYPE, envelope.getType());

View File

@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob; import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob;
import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope; import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
import java.io.Closeable; import java.io.Closeable;
@ -90,15 +91,21 @@ public class IncomingMessageProcessor {
} }
} }
private @NonNull String processMessage(@NonNull SignalServiceEnvelope envelope) { private @Nullable String processMessage(@NonNull SignalServiceEnvelope envelope) {
Log.i(TAG, "Received message. Inserting in PushDatabase."); Log.i(TAG, "Received message. Inserting in PushDatabase.");
long id = pushDatabase.insert(envelope); long id = pushDatabase.insert(envelope);
if (id > 0) {
PushDecryptMessageJob job = new PushDecryptMessageJob(context, id); PushDecryptMessageJob job = new PushDecryptMessageJob(context, id);
jobManager.add(job); jobManager.add(job);
return job.getId(); return job.getId();
} else {
Log.w(TAG, "The envelope was already present in the PushDatabase.");
return null;
}
} }
private void processReceipt(@NonNull SignalServiceEnvelope envelope) { private void processReceipt(@NonNull SignalServiceEnvelope envelope) {