diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/FastJobStorage.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/FastJobStorage.java index 697309aeff..3b50dc2733 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/FastJobStorage.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/FastJobStorage.java @@ -90,6 +90,7 @@ public class FastJobStorage implements JobStorage { @Override public synchronized @NonNull List getPendingJobsWithNoDependenciesInCreatedOrder(long currentTime) { return Stream.of(jobs) + .filter(j -> JobManagerFactories.hasFactoryForKey(j.getFactoryKey())) .filterNot(JobSpec::isRunning) .filter(this::firstInQueue) .filter(j -> !dependenciesByJobId.containsKey(j.getId()) || dependenciesByJobId.get(j.getId()).isEmpty()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java index b5ab7a0e66..e011323647 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java @@ -20,15 +20,20 @@ import org.thoughtcrime.securesms.loki.protocol.ClosedGroupUpdateMessageSendJob; import org.thoughtcrime.securesms.loki.protocol.ClosedGroupUpdateMessageSendJobV2; import org.thoughtcrime.securesms.loki.protocol.NullMessageSendJob; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public final class JobManagerFactories { + private static Collection factoryKeys = new ArrayList<>(); + public static Map getJobFactories(@NonNull Application application) { - return new HashMap() {{ + HashMap factoryHashMap = new HashMap() {{ put(AttachmentDownloadJob.KEY, new AttachmentDownloadJob.Factory()); put(AttachmentUploadJob.KEY, new AttachmentUploadJob.Factory()); put(AvatarDownloadJob.KEY, new AvatarDownloadJob.Factory()); @@ -61,6 +66,8 @@ public final class JobManagerFactories { put(PrepareAttachmentAudioExtrasJob.KEY, new PrepareAttachmentAudioExtrasJob.Factory()); put(ResetThreadSessionJob.KEY, new ResetThreadSessionJob.Factory()); }}; + factoryKeys.addAll(factoryHashMap.keySet()); + return factoryHashMap; } public static Map getConstraintFactories(@NonNull Application application) { @@ -77,4 +84,8 @@ public final class JobManagerFactories { new NetworkConstraintObserver(application), new SqlCipherMigrationConstraintObserver()); } + + public static boolean hasFactoryForKey(String factoryKey) { + return factoryKeys.contains(factoryKey); + } }