Update some BackupValues stuff.

This commit is contained in:
Greyson Parrelli
2024-10-09 11:42:27 -04:00
parent 88ea258b45
commit 229a78305f
7 changed files with 71 additions and 34 deletions

View File

@@ -37,6 +37,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.RadioButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Surface
@@ -57,6 +58,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -72,6 +74,7 @@ import org.signal.core.util.getLength
import org.signal.core.util.roundedString
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.attachments.AttachmentId
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
import org.thoughtcrime.securesms.components.settings.app.internal.backup.InternalBackupPlaygroundViewModel.BackupState
import org.thoughtcrime.securesms.components.settings.app.internal.backup.InternalBackupPlaygroundViewModel.BackupUploadState
import org.thoughtcrime.securesms.components.settings.app.internal.backup.InternalBackupPlaygroundViewModel.ScreenState
@@ -181,7 +184,8 @@ class InternalBackupPlaygroundFragment : ComposeFragment() {
.setMessage("This will delete all of your chats! Make sure you've finished a backup first, we don't check for you. Only do this on a test device!")
.setPositiveButton("Wipe and restore") { _, _ -> viewModel.wipeAllDataAndRestoreFromRemote() }
.show()
}
},
onBackupTierSelected = { tier -> viewModel.onBackupTierSelected(tier) }
)
},
mediaContent = { snackbarHostState ->
@@ -274,9 +278,17 @@ fun Screen(
onUploadToRemoteClicked: () -> Unit = {},
onCheckRemoteBackupStateClicked: () -> Unit = {},
onTriggerBackupJobClicked: () -> Unit = {},
onWipeDataAndRestoreClicked: () -> Unit = {}
onWipeDataAndRestoreClicked: () -> Unit = {},
onBackupTierSelected: (MessageBackupTier?) -> Unit = {}
) {
val scrollState = rememberScrollState()
val options = remember {
mapOf(
"None" to null,
"Free" to MessageBackupTier.FREE,
"Paid" to MessageBackupTier.PAID
)
}
Surface {
Column(
@@ -287,6 +299,21 @@ fun Screen(
.verticalScroll(scrollState)
.padding(16.dp)
) {
Row(verticalAlignment = Alignment.CenterVertically) {
Text("Tier", fontWeight = FontWeight.Bold)
options.forEach { option ->
Row(verticalAlignment = Alignment.CenterVertically) {
RadioButton(
selected = option.value == state.backupTier,
onClick = { onBackupTierSelected(option.value) }
)
Text(option.key)
}
}
}
Dividers.Default()
Buttons.LargePrimary(
onClick = onTriggerBackupJobClicked
) {

View File

@@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.attachments.AttachmentId
import org.thoughtcrime.securesms.attachments.DatabaseAttachment
import org.thoughtcrime.securesms.backup.v2.BackupMetadata
import org.thoughtcrime.securesms.backup.v2.BackupRepository
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
import org.thoughtcrime.securesms.backup.v2.local.ArchiveFileSystem
import org.thoughtcrime.securesms.backup.v2.local.ArchiveResult
import org.thoughtcrime.securesms.backup.v2.local.LocalArchiver
@@ -65,7 +66,8 @@ class InternalBackupPlaygroundViewModel : ViewModel() {
canReadWriteBackupDirectory = SignalStore.settings.signalBackupDirectory?.let {
val file = DocumentFile.fromTreeUri(AppDependencies.application, it)
file != null && file.canWrite() && file.canRead()
} ?: false
} ?: false,
backupTier = SignalStore.backup.backupTier
)
)
val state: State<ScreenState> = _state
@@ -217,6 +219,11 @@ class InternalBackupPlaygroundViewModel : ViewModel() {
}
}
fun onBackupTierSelected(backupTier: MessageBackupTier?) {
SignalStore.backup.backupTier = backupTier
_state.value = _state.value.copy(backupTier = backupTier)
}
private fun restoreFromRemote() {
_state.value = _state.value.copy(backupState = BackupState.IMPORT_IN_PROGRESS)
@@ -417,7 +424,8 @@ class InternalBackupPlaygroundViewModel : ViewModel() {
val uploadState: BackupUploadState = BackupUploadState.NONE,
val remoteBackupState: RemoteBackupState = RemoteBackupState.Unknown,
val plaintext: Boolean,
val canReadWriteBackupDirectory: Boolean = false
val canReadWriteBackupDirectory: Boolean = false,
val backupTier: MessageBackupTier? = null
)
enum class BackupState(val inProgress: Boolean = false) {