mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-24 18:29:11 +00:00
Transition the outbound pipeline to JobManager jobs.
This commit is contained in:
@@ -29,6 +29,11 @@ public class MasterSecretRequirementProvider implements RequirementProvider {
|
||||
context.registerReceiver(newKeyReceiver, filter, KeyCachingService.KEY_PERMISSION, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "master_secret";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListener(RequirementListener listener) {
|
||||
this.listener = listener;
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package org.thoughtcrime.securesms.jobs.requirements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Looper;
|
||||
import android.os.MessageQueue;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.sms.TelephonyServiceState;
|
||||
import org.whispersystems.jobqueue.dependencies.ContextDependent;
|
||||
import org.whispersystems.jobqueue.requirements.Requirement;
|
||||
|
||||
public class ServiceRequirement implements Requirement, ContextDependent {
|
||||
|
||||
private static final String TAG = ServiceRequirement.class.getSimpleName();
|
||||
|
||||
private final transient ServiceRequirementProvider provider;
|
||||
|
||||
private transient Context context;
|
||||
|
||||
public ServiceRequirement(Context context) {
|
||||
this.context = context;
|
||||
this.provider = (ServiceRequirementProvider)ApplicationContext.getInstance(context)
|
||||
.getJobManager()
|
||||
.getRequirementProvider("telephony-service");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContext(Context context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPresent() {
|
||||
TelephonyServiceState telephonyServiceState = new TelephonyServiceState();
|
||||
return telephonyServiceState.isConnected(context);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package org.thoughtcrime.securesms.jobs.requirements;
|
||||
|
||||
import android.content.Context;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import org.whispersystems.jobqueue.requirements.RequirementListener;
|
||||
import org.whispersystems.jobqueue.requirements.RequirementProvider;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class ServiceRequirementProvider implements RequirementProvider {
|
||||
|
||||
private final TelephonyManager telephonyManager;
|
||||
private final ServiceStateListener serviceStateListener;
|
||||
private final AtomicBoolean listeningForServiceState;
|
||||
|
||||
private RequirementListener requirementListener;
|
||||
|
||||
public ServiceRequirementProvider(Context context) {
|
||||
this.telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
this.serviceStateListener = new ServiceStateListener();
|
||||
this.listeningForServiceState = new AtomicBoolean(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "telephony-service";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setListener(RequirementListener requirementListener) {
|
||||
this.requirementListener = requirementListener;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
if (listeningForServiceState.compareAndSet(false, true)) {
|
||||
this.telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleInService() {
|
||||
if (listeningForServiceState.compareAndSet(true, false)) {
|
||||
this.telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
|
||||
if (requirementListener != null) {
|
||||
requirementListener.onRequirementStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private class ServiceStateListener extends PhoneStateListener {
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState serviceState) {
|
||||
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
|
||||
handleInService();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user