Add a more generic system for handling early messages.

This commit is contained in:
Greyson Parrelli
2020-04-16 16:09:49 -04:00
parent 2afb939ee6
commit 83f6640bd3
8 changed files with 123 additions and 27 deletions

View File

@@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
import org.thoughtcrime.securesms.service.IncomingMessageObserver;
import org.thoughtcrime.securesms.util.EarlyMessageCache;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.FrameRateTracker;
import org.thoughtcrime.securesms.util.IasKeyStore;
@@ -47,6 +48,7 @@ public class ApplicationDependencies {
private static KeyValueStore keyValueStore;
private static MegaphoneRepository megaphoneRepository;
private static GroupsV2Operations groupsV2Operations;
private static EarlyMessageCache earlyMessageCache;
public static synchronized void init(@NonNull Application application, @NonNull Provider provider) {
if (ApplicationDependencies.application != null || ApplicationDependencies.provider != null) {
@@ -195,6 +197,16 @@ public class ApplicationDependencies {
return megaphoneRepository;
}
public static synchronized @NonNull EarlyMessageCache getEarlyMessageCache() {
assertInitialization();
if (earlyMessageCache == null) {
earlyMessageCache = provider.provideEarlyMessageCache();
}
return earlyMessageCache;
}
private static void assertInitialization() {
if (application == null || provider == null) {
throw new UninitializedException();
@@ -214,6 +226,7 @@ public class ApplicationDependencies {
@NonNull FrameRateTracker provideFrameRateTracker();
@NonNull KeyValueStore provideKeyValueStore();
@NonNull MegaphoneRepository provideMegaphoneRepository();
@NonNull EarlyMessageCache provideEarlyMessageCache();
}
private static class UninitializedException extends IllegalStateException {

View File

@@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
import org.thoughtcrime.securesms.service.IncomingMessageObserver;
import org.thoughtcrime.securesms.util.AlarmSleepTimer;
import org.thoughtcrime.securesms.util.EarlyMessageCache;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.FrameRateTracker;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
@@ -146,6 +147,11 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new MegaphoneRepository(context);
}
@Override
public @NonNull EarlyMessageCache provideEarlyMessageCache() {
return new EarlyMessageCache();
}
private static class DynamicCredentialsProvider implements CredentialsProvider {
private final Context context;