mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Create a WebsocketDrainedConstraint.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package org.thoughtcrime.securesms.jobmanager.impl;
|
||||
|
||||
import android.app.job.JobInfo;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.jobmanager.Constraint;
|
||||
|
||||
/**
|
||||
* A constraint that is met once we have pulled down all messages from the websocket during initial
|
||||
* load. See {@link org.thoughtcrime.securesms.messages.InitialMessageRetriever}.
|
||||
*/
|
||||
public final class WebsocketDrainedConstraint implements Constraint {
|
||||
|
||||
public static final String KEY = "WebsocketDrainedConstraint";
|
||||
|
||||
private WebsocketDrainedConstraint() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMet() {
|
||||
return ApplicationDependencies.getInitialMessageRetriever().isCaughtUp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String getFactoryKey() {
|
||||
return KEY;
|
||||
}
|
||||
|
||||
@RequiresApi(26)
|
||||
@Override
|
||||
public void applyToJobInfo(@NonNull JobInfo.Builder jobInfoBuilder) {
|
||||
}
|
||||
|
||||
public static final class Factory implements Constraint.Factory<WebsocketDrainedConstraint> {
|
||||
|
||||
@Override
|
||||
public WebsocketDrainedConstraint create() {
|
||||
return new WebsocketDrainedConstraint();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.thoughtcrime.securesms.jobmanager.impl;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver;
|
||||
|
||||
/**
|
||||
* An observer for {@link WebsocketDrainedConstraint}. Will fire when the
|
||||
* {@link org.thoughtcrime.securesms.messages.InitialMessageRetriever} is caught up.
|
||||
*/
|
||||
public class WebsocketDrainedConstraintObserver implements ConstraintObserver {
|
||||
|
||||
private static final String REASON = WebsocketDrainedConstraintObserver.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
public void register(@NonNull Notifier notifier) {
|
||||
ApplicationDependencies.getInitialMessageRetriever().addListener(() -> {
|
||||
notifier.onConstraintMet(REASON);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user