mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 20:55:10 +00:00
Prevent backup from being triggered while a restore is in progress.
This commit is contained in:
committed by
Cody Henthorne
parent
18f7a88d66
commit
79de5f733f
@@ -10,6 +10,7 @@ import org.signal.core.util.isNotNullOrBlank
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.protos.resumableuploads.ResumableUpload
|
||||
import org.thoughtcrime.securesms.backup.ArchiveUploadProgress
|
||||
import org.thoughtcrime.securesms.backup.RestoreState
|
||||
import org.thoughtcrime.securesms.backup.v2.ArchiveMediaItemIterator
|
||||
import org.thoughtcrime.securesms.backup.v2.ArchiveValidator
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupRepository
|
||||
@@ -21,6 +22,7 @@ import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.WifiConstraint
|
||||
import org.thoughtcrime.securesms.jobs.protos.BackupMessagesJobData
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.keyvalue.isDecisionPending
|
||||
import org.thoughtcrime.securesms.providers.BlobProvider
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.storage.StorageSyncHelper
|
||||
@@ -51,7 +53,33 @@ class BackupMessagesJob private constructor(
|
||||
|
||||
const val KEY = "BackupMessagesJob"
|
||||
|
||||
private fun isBackupAllowed(): Boolean {
|
||||
return when {
|
||||
SignalStore.registration.restoreDecisionState.isDecisionPending -> {
|
||||
Log.i(TAG, "Backup not allowed: a restore decision is pending.")
|
||||
false
|
||||
}
|
||||
|
||||
SignalStore.backup.restoreState == RestoreState.PENDING -> {
|
||||
Log.i(TAG, "Backup not allowed: a restore is pending.")
|
||||
false
|
||||
}
|
||||
|
||||
SignalStore.backup.restoreState == RestoreState.RESTORING_DB -> {
|
||||
Log.i(TAG, "Backup not allowed: a restore is in progress.")
|
||||
false
|
||||
}
|
||||
|
||||
else -> true
|
||||
}
|
||||
}
|
||||
|
||||
fun enqueue() {
|
||||
if (!isBackupAllowed()) {
|
||||
Log.d(TAG, "Skip enqueueing BackupMessagesJob.")
|
||||
return
|
||||
}
|
||||
|
||||
val jobManager = AppDependencies.jobManager
|
||||
|
||||
val chain = jobManager.startChain(BackupMessagesJob())
|
||||
@@ -97,6 +125,11 @@ class BackupMessagesJob private constructor(
|
||||
}
|
||||
|
||||
override fun run(): Result {
|
||||
if (!isBackupAllowed()) {
|
||||
Log.d(TAG, "Skip running BackupMessagesJob.")
|
||||
return Result.success()
|
||||
}
|
||||
|
||||
val stopwatch = Stopwatch("BackupMessagesJob")
|
||||
|
||||
SignalDatabase.attachments.createKeyIvDigestForAttachmentsThatNeedArchiveUpload().takeIf { it > 0 }?.let { count -> Log.w(TAG, "Needed to create $count key/iv/digests.") }
|
||||
|
||||
Reference in New Issue
Block a user