Add wiring and notification for out of remote space error.

This commit is contained in:
Alex Hart
2025-06-16 13:14:33 -03:00
committed by Michelle Tang
parent fed6a0db5e
commit b35b1db4bc
8 changed files with 79 additions and 14 deletions

View File

@@ -511,6 +511,7 @@ private fun RemoteBackupsSettingsContent(
backupsFrequency = state.backupsFrequency,
canBackUpUsingCellular = state.canBackUpUsingCellular,
canRestoreUsingCellular = state.canRestoreUsingCellular,
canBackUpNow = !state.isOutOfStorageSpace,
contentCallbacks = contentCallbacks
)
} else {
@@ -813,6 +814,7 @@ private fun LazyListScope.appendBackupDetailsItems(
backupsFrequency: BackupFrequency,
canBackUpUsingCellular: Boolean,
canRestoreUsingCellular: Boolean,
canBackUpNow: Boolean,
contentCallbacks: ContentCallbacks
) {
item {
@@ -845,6 +847,7 @@ private fun LazyListScope.appendBackupDetailsItems(
item {
LastBackupRow(
lastBackupTimestamp = lastBackupTimestamp,
enabled = canBackUpNow,
onBackupNowClick = contentCallbacks::onBackupNowClick
)
}
@@ -1421,6 +1424,7 @@ private fun getBackupUploadPhaseProgressString(state: ArchiveUploadProgressState
@Composable
private fun LastBackupRow(
lastBackupTimestamp: Long,
enabled: Boolean,
onBackupNowClick: () -> Unit
) {
Row(
@@ -1462,7 +1466,7 @@ private fun LastBackupRow(
}
}
Buttons.MediumTonal(onClick = onBackupNowClick) {
Buttons.MediumTonal(onClick = onBackupNowClick, enabled = enabled) {
Text(text = stringResource(id = R.string.RemoteBackupsSettingsFragment__back_up_now))
}
}
@@ -1909,6 +1913,7 @@ private fun LastBackupRowPreview() {
Previews.Preview {
LastBackupRow(
lastBackupTimestamp = -1,
enabled = true,
onBackupNowClick = {}
)
}

View File

@@ -22,6 +22,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.reactive.asFlow
import org.signal.core.util.bytes
import org.signal.core.util.logging.Log
import org.signal.core.util.mebiBytes
import org.signal.core.util.throttleLatest
import org.signal.donations.InAppPaymentType
import org.thoughtcrime.securesms.backup.ArchiveUploadProgress
@@ -223,6 +224,25 @@ class RemoteBackupsSettingsViewModel : ViewModel() {
}
private suspend fun performStateRefresh(lastPurchase: InAppPaymentTable.InAppPayment?) {
if (BackupRepository.shouldDisplayOutOfStorageSpaceUx()) {
val paidType = BackupRepository.getBackupsType(MessageBackupTier.PAID) as? MessageBackupsType.Paid
if (paidType != null) {
val remoteStorageAllowance = paidType.storageAllowanceBytes.bytes
val estimatedSize = SignalDatabase.attachments.getEstimatedArchiveMediaSize().bytes
if (estimatedSize + 300.mebiBytes <= remoteStorageAllowance) {
BackupRepository.clearOutOfRemoteStorageError()
}
_state.update {
it.copy(
totalAllowedStorageSpace = estimatedSize.toUnitString()
)
}
}
}
_state.update {
it.copy(
tier = SignalStore.backup.backupTier,
@@ -237,17 +257,6 @@ class RemoteBackupsSettingsViewModel : ViewModel() {
)
}
if (BackupRepository.shouldDisplayOutOfStorageSpaceUx()) {
val paidType = BackupRepository.getBackupsType(MessageBackupTier.PAID) as? MessageBackupsType.Paid
if (paidType != null) {
_state.update {
it.copy(
totalAllowedStorageSpace = paidType.storageAllowanceBytes.bytes.toUnitString()
)
}
}
}
val state = BackupStateRepository.resolveBackupState(lastPurchase)
_state.update {
it.copy(backupState = state)

View File

@@ -70,6 +70,7 @@ import org.signal.core.util.Base64
import org.signal.core.util.Hex
import org.signal.core.util.getLength
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.backup.v2.BackupRepository
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
import org.thoughtcrime.securesms.components.settings.app.internal.backup.InternalBackupPlaygroundViewModel.DialogState
import org.thoughtcrime.securesms.components.settings.app.internal.backup.InternalBackupPlaygroundViewModel.ScreenState
@@ -521,6 +522,13 @@ fun Screen(
}
)
Rows.TextRow(
text = "Mark out of remote storage space",
onClick = {
BackupRepository.markOutOfRemoteStorageError()
}
)
Spacer(modifier = Modifier.height(8.dp))
}
}