Create a write-through cache for PendingRetryReceiptDatabase.

This commit is contained in:
Greyson Parrelli
2021-07-01 12:56:25 -04:00
committed by Alex Hart
parent 0921ebe5f1
commit 62040d06b4
9 changed files with 152 additions and 34 deletions

View File

@@ -9,7 +9,6 @@ import org.thoughtcrime.securesms.KbsEnclave;
import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.database.DatabaseObserver;
import org.thoughtcrime.securesms.database.model.PendingRetryReceiptModel;
import org.thoughtcrime.securesms.groups.GroupsV2Authorization;
import org.thoughtcrime.securesms.groups.GroupsV2AuthorizationMemoryValueCache;
import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor;
@@ -19,7 +18,7 @@ import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.messages.BackgroundMessageRetriever;
import org.thoughtcrime.securesms.messages.IncomingMessageObserver;
import org.thoughtcrime.securesms.messages.IncomingMessageProcessor;
import org.thoughtcrime.securesms.net.ContentProxySelector;
import org.thoughtcrime.securesms.database.PendingRetryReceiptCache;
import org.thoughtcrime.securesms.net.PipeConnectivityListener;
import org.thoughtcrime.securesms.net.StandardUserAgentInterceptor;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
@@ -90,6 +89,7 @@ public class ApplicationDependencies {
private static volatile ShakeToReport shakeToReport;
private static volatile OkHttpClient okHttpClient;
private static volatile PendingRetryReceiptManager pendingRetryReceiptManager;
private static volatile PendingRetryReceiptCache pendingRetryReceiptCache;
@MainThread
public static void init(@NonNull Application application, @NonNull Provider provider) {
@@ -480,6 +480,18 @@ public class ApplicationDependencies {
return appForegroundObserver;
}
public static @NonNull PendingRetryReceiptCache getPendingRetryReceiptCache() {
if (pendingRetryReceiptCache == null) {
synchronized (LOCK) {
if (pendingRetryReceiptCache == null) {
pendingRetryReceiptCache = provider.providePendingRetryReceiptCache();
}
}
}
return pendingRetryReceiptCache;
}
public interface Provider {
@NonNull PipeConnectivityListener providePipeListener();
@@ -508,5 +520,6 @@ public class ApplicationDependencies {
@NonNull AppForegroundObserver provideAppForegroundObserver();
@NonNull SignalCallManager provideSignalCallManager();
@NonNull PendingRetryReceiptManager providePendingRetryReceiptManager();
@NonNull PendingRetryReceiptCache providePendingRetryReceiptCache();
}
}

View File

@@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.messages.BackgroundMessageRetriever;
import org.thoughtcrime.securesms.messages.IncomingMessageObserver;
import org.thoughtcrime.securesms.messages.IncomingMessageProcessor;
import org.thoughtcrime.securesms.database.PendingRetryReceiptCache;
import org.thoughtcrime.securesms.net.PipeConnectivityListener;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.notifications.OptimizedMessageNotifier;
@@ -255,6 +256,11 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new PendingRetryReceiptManager(context);
}
@Override
public @NonNull PendingRetryReceiptCache providePendingRetryReceiptCache() {
return new PendingRetryReceiptCache(context);
}
private static class DynamicCredentialsProvider implements CredentialsProvider {
private final Context context;