Allow restoration over cellular

This commit is contained in:
Michelle Tang
2024-12-05 13:02:36 -05:00
committed by Greyson Parrelli
parent 0c86ff1f84
commit a7d7c1da8d
11 changed files with 128 additions and 10 deletions

View File

@@ -141,6 +141,7 @@ class RemoteBackupsSettingsFragment : ComposeFragment() {
backupsEnabled = state.backupsEnabled,
lastBackupTimestamp = state.lastBackupTimestamp,
canBackUpUsingCellular = state.canBackUpUsingCellular,
canRestoreUsingCellular = state.canRestoreUsingCellular,
backupsFrequency = state.backupsFrequency,
requestedDialog = state.dialog,
requestedSnackbar = state.snackbar,
@@ -239,6 +240,10 @@ class RemoteBackupsSettingsFragment : ComposeFragment() {
override fun onLearnMoreAboutBackupFailure() {
BackupAlertBottomSheet.create(BackupAlert.BackupFailed).show(parentFragmentManager, null)
}
override fun onRestoreUsingCellularClick(canUseCellular: Boolean) {
viewModel.setCanRestoreUsingCellular(canUseCellular)
}
}
private fun displayBackupKey() {
@@ -321,6 +326,7 @@ private interface ContentCallbacks {
fun onLearnMoreAboutLostSubscription() = Unit
fun onContactSupport() = Unit
fun onLearnMoreAboutBackupFailure() = Unit
fun onRestoreUsingCellularClick(canUseCellular: Boolean) = Unit
}
@Composable
@@ -330,6 +336,7 @@ private fun RemoteBackupsSettingsContent(
backupRestoreState: BackupRestoreState,
lastBackupTimestamp: Long,
canBackUpUsingCellular: Boolean,
canRestoreUsingCellular: Boolean,
backupsFrequency: BackupFrequency,
requestedDialog: RemoteBackupsSettingsState.Dialog,
requestedSnackbar: RemoteBackupsSettingsState.Snackbar,
@@ -403,6 +410,14 @@ private fun RemoteBackupsSettingsContent(
onLearnMoreClick = contentCallbacks::onLearnMoreAboutBackupFailure
)
}
item {
Rows.ToggleRow(
checked = canRestoreUsingCellular,
text = stringResource(id = R.string.RemoteBackupsSettingsFragment__restore_using_cellular),
onCheckChanged = contentCallbacks::onRestoreUsingCellularClick
)
}
} else if (backupRestoreState is BackupRestoreState.Ready && backupState is RemoteBackupsSettingsState.BackupState.Canceled) {
item {
BackupReadyToDownloadRow(
@@ -420,6 +435,7 @@ private fun RemoteBackupsSettingsContent(
backupSize = backupSize,
backupsFrequency = backupsFrequency,
canBackUpUsingCellular = canBackUpUsingCellular,
canRestoreUsingCellular = canRestoreUsingCellular,
contentCallbacks = contentCallbacks
)
} else {
@@ -540,6 +556,7 @@ private fun LazyListScope.appendBackupDetailsItems(
backupSize: Long,
backupsFrequency: BackupFrequency,
canBackUpUsingCellular: Boolean,
canRestoreUsingCellular: Boolean,
contentCallbacks: ContentCallbacks
) {
item {
@@ -1205,6 +1222,7 @@ private fun RemoteBackupsSettingsContentPreview() {
backupsEnabled = true,
lastBackupTimestamp = -1,
canBackUpUsingCellular = false,
canRestoreUsingCellular = false,
backupsFrequency = BackupFrequency.MANUAL,
requestedDialog = RemoteBackupsSettingsState.Dialog.NONE,
requestedSnackbar = RemoteBackupsSettingsState.Snackbar.NONE,

View File

@@ -14,6 +14,7 @@ import kotlin.time.Duration.Companion.seconds
data class RemoteBackupsSettingsState(
val backupsEnabled: Boolean,
val canBackUpUsingCellular: Boolean = false,
val canRestoreUsingCellular: Boolean = false,
val backupState: BackupState = BackupState.Loading,
val backupSize: Long = 0,
val backupsFrequency: BackupFrequency = BackupFrequency.DAILY,

View File

@@ -61,7 +61,8 @@ class RemoteBackupsSettingsViewModel : ViewModel() {
lastBackupTimestamp = SignalStore.backup.lastBackupTime,
backupSize = SignalStore.backup.totalBackupSize,
backupsFrequency = SignalStore.backup.backupFrequency,
canBackUpUsingCellular = SignalStore.backup.backupWithCellular
canBackUpUsingCellular = SignalStore.backup.backupWithCellular,
canRestoreUsingCellular = SignalStore.backup.restoreWithCellular
)
)
@@ -109,6 +110,11 @@ class RemoteBackupsSettingsViewModel : ViewModel() {
_state.update { it.copy(canBackUpUsingCellular = canBackUpUsingCellular) }
}
fun setCanRestoreUsingCellular(canRestoreUsingCellular: Boolean) {
SignalStore.backup.restoreWithCellular = canRestoreUsingCellular
_state.update { it.copy(canRestoreUsingCellular = canRestoreUsingCellular) }
}
fun setBackupsFrequency(backupsFrequency: BackupFrequency) {
SignalStore.backup.backupFrequency = backupsFrequency
_state.update { it.copy(backupsFrequency = backupsFrequency) }