Make backup jobs cancelable.

This commit is contained in:
Greyson Parrelli
2024-10-09 21:45:33 -04:00
parent 58a48e38eb
commit dcb5015290
8 changed files with 117 additions and 12 deletions

View File

@@ -29,6 +29,7 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Checkbox
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu
@@ -56,6 +57,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
@@ -185,7 +187,8 @@ class InternalBackupPlaygroundFragment : ComposeFragment() {
.setPositiveButton("Wipe and restore") { _, _ -> viewModel.wipeAllDataAndRestoreFromRemote() }
.show()
},
onBackupTierSelected = { tier -> viewModel.onBackupTierSelected(tier) }
onBackupTierSelected = { tier -> viewModel.onBackupTierSelected(tier) },
onHaltAllJobs = { viewModel.haltAllJobs() }
)
},
mediaContent = { snackbarHostState ->
@@ -279,7 +282,8 @@ fun Screen(
onCheckRemoteBackupStateClicked: () -> Unit = {},
onTriggerBackupJobClicked: () -> Unit = {},
onWipeDataAndRestoreClicked: () -> Unit = {},
onBackupTierSelected: (MessageBackupTier?) -> Unit = {}
onBackupTierSelected: (MessageBackupTier?) -> Unit = {},
onHaltAllJobs: () -> Unit = {}
) {
val scrollState = rememberScrollState()
val options = remember {
@@ -320,12 +324,19 @@ fun Screen(
Text("Enqueue remote backup")
}
Buttons.LargeTonal(
onClick = onWipeDataAndRestoreClicked
Button(
onClick = onWipeDataAndRestoreClicked,
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFC33C00))
) {
Text("Wipe data and restore")
}
Buttons.LargeTonal(
onClick = onHaltAllJobs
) {
Text("Halt all backup jobs")
}
Dividers.Default()
Row(

View File

@@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.database.MessageType
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.jobs.AttachmentUploadJob
import org.thoughtcrime.securesms.jobs.BackfillDigestJob
import org.thoughtcrime.securesms.jobs.BackupMessagesJob
import org.thoughtcrime.securesms.jobs.BackupRestoreJob
import org.thoughtcrime.securesms.jobs.BackupRestoreMediaJob
@@ -514,4 +515,11 @@ class InternalBackupPlaygroundViewModel : ViewModel() {
fun <T> MutableState<T>.set(update: T.() -> T) {
this.value = this.value.update()
}
fun haltAllJobs() {
AppDependencies.jobManager.cancelAllInQueue(BackfillDigestJob.QUEUE)
AppDependencies.jobManager.cancelAllInQueue("ArchiveAttachmentJobs_0")
AppDependencies.jobManager.cancelAllInQueue("ArchiveAttachmentJobs_1")
AppDependencies.jobManager.cancelAllInQueue("ArchiveThumbnailUploadJob")
}
}