Do not process messages while change number is happening.

This commit is contained in:
Greyson Parrelli
2023-04-03 16:22:49 -04:00
committed by Alex Hart
parent bbdf54097e
commit 99bd8e82ca
6 changed files with 67 additions and 4 deletions

View File

@@ -0,0 +1,27 @@
package org.thoughtcrime.securesms.jobmanager.impl
import android.app.job.JobInfo
import org.thoughtcrime.securesms.jobmanager.Constraint
import org.thoughtcrime.securesms.keyvalue.SignalStore
/**
* Constraint that, when added, means that a job cannot be performed while a change number operation is in progress.
*/
object ChangeNumberConstraint : Constraint {
const val KEY = "ChangeNumberConstraint"
override fun isMet(): Boolean {
return !SignalStore.misc().isChangeNumberLocked
}
override fun getFactoryKey(): String = KEY
override fun applyToJobInfo(jobInfoBuilder: JobInfo.Builder) = Unit
class Factory : Constraint.Factory<ChangeNumberConstraint> {
override fun create(): ChangeNumberConstraint {
return ChangeNumberConstraint
}
}
}

View File

@@ -0,0 +1,25 @@
package org.thoughtcrime.securesms.jobmanager.impl
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver
/**
* An observer for the [ChangeNumberConstraint]. This class expects to be told when a change happens,
* since the points at which it happens are triggered by application code.
*/
object ChangeNumberConstraintObserver : ConstraintObserver {
private const val REASON = "ChangeNumberConstraint"
private var notifier: ConstraintObserver.Notifier? = null
override fun register(notifier: ConstraintObserver.Notifier) {
this.notifier = notifier
}
/**
* Let the observer know that the change number state has changed.
*/
fun onChange() {
notifier?.onConstraintMet(REASON)
}
}