diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver.java deleted file mode 100644 index 3c7b8d4ea3..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/CellServiceConstraintObserver.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.thoughtcrime.securesms.jobmanager.impl; - -import android.app.Application; -import android.os.Build; -import android.os.Handler; -import android.os.HandlerThread; -import android.telephony.PhoneStateListener; -import android.telephony.ServiceState; -import android.telephony.TelephonyCallback; -import android.telephony.TelephonyManager; - -import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; - -import org.signal.core.util.concurrent.SignalExecutors; -import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.jobmanager.ConstraintObserver; -import org.signal.core.util.ServiceUtil; - -public class CellServiceConstraintObserver implements ConstraintObserver { - - private static final String TAG = Log.tag(CellServiceConstraintObserver.class); - - private static final String REASON = Log.tag(CellServiceConstraintObserver.class); - - private volatile Notifier notifier; - private volatile ServiceState lastKnownState; - - private static volatile CellServiceConstraintObserver instance; - - public static CellServiceConstraintObserver getInstance(@NonNull Application application) { - if (instance == null) { - synchronized (CellServiceConstraintObserver.class) { - if (instance == null) { - instance = new CellServiceConstraintObserver(application); - } - } - } - return instance; - } - - private CellServiceConstraintObserver(@NonNull Application application) { - TelephonyManager telephonyManager = ServiceUtil.getTelephonyManager(application); - LegacyServiceStateListener serviceStateListener = new LegacyServiceStateListener(); - - if (Build.VERSION.SDK_INT >= 31) { - telephonyManager.registerTelephonyCallback(SignalExecutors.BOUNDED, new ServiceStateListenerApi31()); - } else { - HandlerThread handlerThread = SignalExecutors.getAndStartHandlerThread("CellServiceConstraintObserver", Thread.NORM_PRIORITY); - Handler handler = new Handler(handlerThread.getLooper()); - - handler.post(() -> { - telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE); - }); - } - } - - @Override - public void register(@NonNull Notifier notifier) { - this.notifier = notifier; - } - - public boolean hasService() { - return lastKnownState != null && lastKnownState.getState() == ServiceState.STATE_IN_SERVICE; - } - - @RequiresApi(31) - private class ServiceStateListenerApi31 extends TelephonyCallback implements TelephonyCallback.ServiceStateListener { - @Override - public void onServiceStateChanged(@NonNull ServiceState serviceState) { - lastKnownState = serviceState; - - if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) { - Log.i(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service available."); - - if (notifier != null) { - notifier.onConstraintMet(REASON); - } - } else { - Log.w(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service unavailable. State: " + serviceState.getState()); - } - } - } - - private class LegacyServiceStateListener extends PhoneStateListener { - - LegacyServiceStateListener() { - super(); - } - - @Override - public void onServiceStateChanged(ServiceState serviceState) { - lastKnownState = serviceState; - - if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) { - Log.i(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service available."); - - if (notifier != null) { - notifier.onConstraintMet(REASON); - } - } else { - Log.w(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service unavailable. State: " + serviceState.getState()); - } - } - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkOrCellServiceConstraint.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkOrCellServiceConstraint.java deleted file mode 100644 index fea29c4c31..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkOrCellServiceConstraint.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.thoughtcrime.securesms.jobmanager.impl; - -import android.app.Application; -import android.app.job.JobInfo; - -import androidx.annotation.NonNull; - -import org.thoughtcrime.securesms.jobmanager.Constraint; -import org.thoughtcrime.securesms.keyvalue.SignalStore; - -public class NetworkOrCellServiceConstraint implements Constraint { - - public static final String KEY = "NetworkOrCellServiceConstraint"; - public static final String LEGACY_KEY = "CellServiceConstraint"; - - private final Application application; - private final NetworkConstraint networkConstraint; - - private NetworkOrCellServiceConstraint(@NonNull Application application) { - this.application = application; - this.networkConstraint = new NetworkConstraint.Factory(application).create(); - } - - @Override - public @NonNull String getFactoryKey() { - return KEY; - } - - @Override - public boolean isMet() { - if (SignalStore.settings().isWifiCallingCompatibilityModeEnabled()) { - return networkConstraint.isMet() || hasCellService(application); - } else { - return hasCellService(application); - } - } - - @Override - public void applyToJobInfo(@NonNull JobInfo.Builder jobInfoBuilder) { - } - - private static boolean hasCellService(@NonNull Application application) { - return CellServiceConstraintObserver.getInstance(application).hasService(); - } - - public static class Factory implements Constraint.Factory { - - private final Application application; - - public Factory(@NonNull Application application) { - this.application = application; - } - - @Override - public NetworkOrCellServiceConstraint create() { - return new NetworkOrCellServiceConstraint(application); - } - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java index ef3fba57ed..466e6710bc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/JobManagerFactories.java @@ -13,10 +13,8 @@ import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint; import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraint; import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.BatteryNotLowConstraint; -import org.thoughtcrime.securesms.jobmanager.impl.CellServiceConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint; import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraintObserver; -import org.thoughtcrime.securesms.jobmanager.impl.SealedSenderConstraint; import org.thoughtcrime.securesms.jobmanager.impl.ChargingAndBatteryIsNotLowConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.ChargingConstraint; import org.thoughtcrime.securesms.jobmanager.impl.DataRestoreConstraint; @@ -27,13 +25,13 @@ import org.thoughtcrime.securesms.jobmanager.impl.DeletionNotAwaitingMediaDownlo import org.thoughtcrime.securesms.jobmanager.impl.DiskSpaceNotLowConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraintObserver; -import org.thoughtcrime.securesms.jobmanager.impl.NetworkOrCellServiceConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NoRemoteArchiveGarbageCollectionPendingConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NotInCallConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NotInCallConstraintObserver; import org.thoughtcrime.securesms.jobmanager.impl.RegisteredConstraint; import org.thoughtcrime.securesms.jobmanager.impl.RestoreAttachmentConstraint; import org.thoughtcrime.securesms.jobmanager.impl.RestoreAttachmentConstraintObserver; +import org.thoughtcrime.securesms.jobmanager.impl.SealedSenderConstraint; import org.thoughtcrime.securesms.jobmanager.impl.StickersNotDownloadingConstraint; import org.thoughtcrime.securesms.jobmanager.impl.WifiConstraint; import org.thoughtcrime.securesms.jobmanager.migrations.DeprecatedJobMigration; @@ -91,16 +89,16 @@ import org.thoughtcrime.securesms.migrations.ProfileSharingUpdateMigrationJob; import org.thoughtcrime.securesms.migrations.QuoteThumbnailBackfillMigrationJob; import org.thoughtcrime.securesms.migrations.RebuildMessageSearchIndexMigrationJob; import org.thoughtcrime.securesms.migrations.RecheckPaymentsMigrationJob; -import org.thoughtcrime.securesms.migrations.ReleaseChannelRecipientFixMigrationJob; import org.thoughtcrime.securesms.migrations.RecipientSearchMigrationJob; +import org.thoughtcrime.securesms.migrations.ReleaseChannelRecipientFixMigrationJob; import org.thoughtcrime.securesms.migrations.ResetArchiveTierMigrationJob; import org.thoughtcrime.securesms.migrations.ResetKeyTransparencyMigrationJob; import org.thoughtcrime.securesms.migrations.SelfRegisteredStateMigrationJob; import org.thoughtcrime.securesms.migrations.StickerAdditionMigrationJob; import org.thoughtcrime.securesms.migrations.StickerDayByDayMigrationJob; -import org.thoughtcrime.securesms.migrations.StickerPackAddition2MigrationJob; import org.thoughtcrime.securesms.migrations.StickerLaunchMigrationJob; import org.thoughtcrime.securesms.migrations.StickerMyDailyLifeMigrationJob; +import org.thoughtcrime.securesms.migrations.StickerPackAddition2MigrationJob; import org.thoughtcrime.securesms.migrations.StorageCapabilityMigrationJob; import org.thoughtcrime.securesms.migrations.StorageFixLocalUnknownMigrationJob; import org.thoughtcrime.securesms.migrations.StorageServiceMigrationJob; @@ -450,8 +448,8 @@ public final class JobManagerFactories { put(DeletionNotAwaitingMediaDownloadConstraint.KEY, new DeletionNotAwaitingMediaDownloadConstraint.Factory()); put(DiskSpaceNotLowConstraint.KEY, new DiskSpaceNotLowConstraint.Factory()); put(NetworkConstraint.KEY, new NetworkConstraint.Factory(application)); - put(NetworkOrCellServiceConstraint.KEY, new NetworkOrCellServiceConstraint.Factory(application)); - put(NetworkOrCellServiceConstraint.LEGACY_KEY, new NetworkOrCellServiceConstraint.Factory(application)); + put("NetworkOrCellServiceConstraint", new NetworkConstraint.Factory(application)); + put("CellServiceConstraint", new NetworkConstraint.Factory(application)); put(NotInCallConstraint.KEY, new NotInCallConstraint.Factory()); put(RegisteredConstraint.KEY, new RegisteredConstraint.Factory()); put(RestoreAttachmentConstraint.KEY, new RestoreAttachmentConstraint.Factory(application)); @@ -462,8 +460,7 @@ public final class JobManagerFactories { } public static List getConstraintObservers(@NonNull Application application) { - return Arrays.asList(CellServiceConstraintObserver.getInstance(application), - new ChargingAndBatteryIsNotLowConstraintObserver(application), + return Arrays.asList(new ChargingAndBatteryIsNotLowConstraintObserver(application), new NetworkConstraintObserver(application), new DecryptionsDrainedConstraintObserver(), new NotInCallConstraintObserver(),