diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ThreadUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ThreadUpdateJob.java index 6bc5beb775..1ec9e5075c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ThreadUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ThreadUpdateJob.java @@ -2,13 +2,12 @@ package org.thoughtcrime.securesms.jobs; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.WorkerThread; import org.signal.core.util.ThreadUtil; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; -import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JsonJobData; +import org.thoughtcrime.securesms.jobmanager.Job; /** * A job that effectively debounces thread updates through a combination of having a max instance count @@ -20,7 +19,8 @@ public final class ThreadUpdateJob extends BaseJob { private static final String KEY_THREAD_ID = "thread_id"; - private static final long DEBOUNCE_INTERVAL = 3000; + private static final long DEBOUNCE_INTERVAL = 500; + private static final long DEBOUNCE_INTERVAL_WITH_BACKLOG = 3000; private final long threadId; @@ -37,13 +37,8 @@ public final class ThreadUpdateJob extends BaseJob { this.threadId = threadId; } - @WorkerThread public static void enqueue(long threadId) { - if (ApplicationDependencies.getIncomingMessageObserver().getDecryptionDrained()) { - SignalDatabase.threads().update(threadId, true); - } else { - ApplicationDependencies.getJobManager().add(new ThreadUpdateJob(threadId)); - } + ApplicationDependencies.getJobManager().add(new ThreadUpdateJob(threadId)); } @Override @@ -59,7 +54,11 @@ public final class ThreadUpdateJob extends BaseJob { @Override protected void onRun() throws Exception { SignalDatabase.threads().update(threadId, true); - ThreadUtil.sleep(DEBOUNCE_INTERVAL); + if (ApplicationDependencies.getIncomingMessageObserver().getDecryptionDrained()) { + ThreadUtil.sleep(DEBOUNCE_INTERVAL); + } else { + ThreadUtil.sleep(DEBOUNCE_INTERVAL_WITH_BACKLOG); + } } @Override