Use a new DatabaseObserver system.

This commit is contained in:
Greyson Parrelli
2020-12-14 21:06:24 -05:00
parent fa7346f79b
commit 21956e400f
8 changed files with 201 additions and 41 deletions

View File

@@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
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.groups.GroupsV2Authorization;
import org.thoughtcrime.securesms.groups.GroupsV2AuthorizationMemoryValueCache;
import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor;
@@ -66,6 +67,7 @@ public class ApplicationDependencies {
private static volatile EarlyMessageCache earlyMessageCache;
private static volatile TypingStatusRepository typingStatusRepository;
private static volatile TypingStatusSender typingStatusSender;
private static volatile DatabaseObserver databaseObserver;
@MainThread
public static void init(@NonNull Application application, @NonNull Provider provider) {
@@ -299,6 +301,18 @@ public class ApplicationDependencies {
return typingStatusSender;
}
public static @NonNull DatabaseObserver getDatabaseObserver() {
if (databaseObserver == null) {
synchronized (LOCK) {
if (databaseObserver == null) {
databaseObserver = provider.provideDatabaseObserver();
}
}
}
return databaseObserver;
}
public interface Provider {
@NonNull GroupsV2Operations provideGroupsV2Operations();
@NonNull SignalServiceAccountManager provideSignalServiceAccountManager();
@@ -317,5 +331,6 @@ public class ApplicationDependencies {
@NonNull TrimThreadsByDateManager provideTrimThreadsByDateManager();
@NonNull TypingStatusRepository provideTypingStatusRepository();
@NonNull TypingStatusSender provideTypingStatusSender();
@NonNull DatabaseObserver provideDatabaseObserver();
}
}

View File

@@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.crypto.storage.SignalProtocolStoreImpl;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.DatabaseObserver;
import org.thoughtcrime.securesms.events.ReminderUpdateEvent;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.JobMigrator;
@@ -190,6 +191,11 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new TypingStatusSender(context);
}
@Override
public @NonNull DatabaseObserver provideDatabaseObserver() {
return new DatabaseObserver(context);
}
private static class DynamicCredentialsProvider implements CredentialsProvider {
private final Context context;