Improve detection of websocket drained status.

Will now work when you lose and regain network. Also removes the
unnecessary InitialMessageRetriever.
This commit is contained in:
Greyson Parrelli
2020-07-21 10:38:42 -04:00
committed by GitHub
parent 96ce42ae91
commit 662f0b8fb6
10 changed files with 106 additions and 266 deletions

View File

@@ -14,8 +14,6 @@ import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.keyvalue.KeyValueStore;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.messages.InitialMessageRetriever;
import org.thoughtcrime.securesms.notifications.DefaultMessageNotifier;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.recipients.LiveRecipientCache;
@@ -48,6 +46,7 @@ public class ApplicationDependencies {
private static SignalServiceAccountManager accountManager;
private static SignalServiceMessageSender messageSender;
private static SignalServiceMessageReceiver messageReceiver;
private static IncomingMessageObserver incomingMessageObserver;
private static IncomingMessageProcessor incomingMessageProcessor;
private static BackgroundMessageRetriever backgroundMessageRetriever;
private static LiveRecipientCache recipientCache;
@@ -59,7 +58,6 @@ public class ApplicationDependencies {
private static GroupsV2StateProcessor groupsV2StateProcessor;
private static GroupsV2Operations groupsV2Operations;
private static EarlyMessageCache earlyMessageCache;
private static InitialMessageRetriever initialMessageRetriever;
private static MessageNotifier messageNotifier;
@MainThread
@@ -242,21 +240,21 @@ public class ApplicationDependencies {
return earlyMessageCache;
}
public static synchronized @NonNull InitialMessageRetriever getInitialMessageRetriever() {
assertInitialization();
if (initialMessageRetriever == null) {
initialMessageRetriever = provider.provideInitialMessageRetriever();
}
return initialMessageRetriever;
}
public static synchronized @NonNull MessageNotifier getMessageNotifier() {
assertInitialization();
return messageNotifier;
}
public static synchronized @NonNull IncomingMessageObserver getIncomingMessageObserver() {
assertInitialization();
if (incomingMessageObserver == null) {
incomingMessageObserver = provider.provideIncomingMessageObserver();
}
return incomingMessageObserver;
}
private static void assertInitialization() {
if (application == null || provider == null) {
throw new UninitializedException();
@@ -277,8 +275,8 @@ public class ApplicationDependencies {
@NonNull KeyValueStore provideKeyValueStore();
@NonNull MegaphoneRepository provideMegaphoneRepository();
@NonNull EarlyMessageCache provideEarlyMessageCache();
@NonNull InitialMessageRetriever provideInitialMessageRetriever();
@NonNull MessageNotifier provideMessageNotifier();
@NonNull IncomingMessageObserver provideIncomingMessageObserver();
}
private static class UninitializedException extends IllegalStateException {

View File

@@ -29,7 +29,6 @@ import org.thoughtcrime.securesms.jobs.JobManagerFactories;
import org.thoughtcrime.securesms.keyvalue.KeyValueStore;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.megaphone.MegaphoneRepository;
import org.thoughtcrime.securesms.messages.InitialMessageRetriever;
import org.thoughtcrime.securesms.notifications.DefaultMessageNotifier;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.notifications.OptimizedMessageNotifier;
@@ -55,7 +54,6 @@ import org.whispersystems.signalservice.api.util.UptimeSleepTimer;
import org.whispersystems.signalservice.api.websocket.ConnectivityListener;
import java.util.UUID;
import java.util.concurrent.Executors;
/**
* Implementation of {@link ApplicationDependencies.Provider} that provides real app dependencies.
@@ -171,13 +169,13 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
}
@Override
public @NonNull InitialMessageRetriever provideInitialMessageRetriever() {
return new InitialMessageRetriever();
public @NonNull MessageNotifier provideMessageNotifier() {
return new OptimizedMessageNotifier(new DefaultMessageNotifier());
}
@Override
public @NonNull MessageNotifier provideMessageNotifier() {
return new OptimizedMessageNotifier(new DefaultMessageNotifier());
public @NonNull IncomingMessageObserver provideIncomingMessageObserver() {
return new IncomingMessageObserver(context);
}
private static class DynamicCredentialsProvider implements CredentialsProvider {