Periodic alarm to check for messages.

This commit is contained in:
Alan Evans
2021-02-10 14:01:11 -04:00
committed by Cody Henthorne
parent 29d66f2b92
commit 98cb6b457c
14 changed files with 349 additions and 61 deletions

View File

@@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.util;
import android.os.Build;
import android.text.TextUtils;
import android.util.TimeUtils;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
@@ -16,6 +17,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.SelectionLimits;
import org.thoughtcrime.securesms.jobs.RemoteConfigRefreshJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.messageprocessingalarm.MessageProcessReceiver;
import java.util.HashMap;
import java.util.HashSet;
@@ -75,6 +77,7 @@ public final class FeatureFlags {
private static final String SHARE_SELECTION_LIMIT = "android.share.limit";
private static final String ANIMATED_STICKER_MIN_MEMORY = "android.animatedStickerMinMemory";
private static final String ANIMATED_STICKER_MIN_TOTAL_MEMORY = "android.animatedStickerMinTotalMemory";
private static final String MESSAGE_PROCESSOR_ALARM_INTERVAL = "android.messageProcessor.alarmIntervalMins";
/**
* We will only store remote values for flags in this set. If you want a flag to be controllable
@@ -106,7 +109,8 @@ public final class FeatureFlags {
OKHTTP_AUTOMATIC_RETRY,
SHARE_SELECTION_LIMIT,
ANIMATED_STICKER_MIN_MEMORY,
ANIMATED_STICKER_MIN_TOTAL_MEMORY
ANIMATED_STICKER_MIN_TOTAL_MEMORY,
MESSAGE_PROCESSOR_ALARM_INTERVAL
);
@VisibleForTesting
@@ -148,7 +152,8 @@ public final class FeatureFlags {
OKHTTP_AUTOMATIC_RETRY,
SHARE_SELECTION_LIMIT,
ANIMATED_STICKER_MIN_MEMORY,
ANIMATED_STICKER_MIN_TOTAL_MEMORY
ANIMATED_STICKER_MIN_TOTAL_MEMORY,
MESSAGE_PROCESSOR_ALARM_INTERVAL
);
/**
@@ -171,6 +176,7 @@ public final class FeatureFlags {
* desired test state.
*/
private static final Map<String, OnFlagChange> FLAG_CHANGE_LISTENERS = new HashMap<String, OnFlagChange>() {{
put(MESSAGE_PROCESSOR_ALARM_INTERVAL, change -> MessageProcessReceiver.startOrUpdateAlarm(ApplicationDependencies.getApplication()));
}};
private static final Map<String, Object> REMOTE_VALUES = new TreeMap<>();
@@ -479,6 +485,11 @@ public final class FeatureFlags {
}
}
public static long getBackgroundMessageProcessDelay() {
int delayMinutes = getInteger(MESSAGE_PROCESSOR_ALARM_INTERVAL, (int) TimeUnit.HOURS.toMinutes(6));
return TimeUnit.MINUTES.toMillis(delayMinutes);
}
private enum VersionFlag {
/** The flag is no set */
OFF,