mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-27 12:15:50 +01:00
Add initial flag / watermark system for backup failure UX.
This commit is contained in:
committed by
Greyson Parrelli
parent
4446510916
commit
4282d88191
@@ -55,6 +55,7 @@ import org.signal.core.ui.horizontalGutters
|
||||
import org.signal.core.ui.theme.SignalTheme
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.avatar.AvatarImage
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupRepository
|
||||
import org.thoughtcrime.securesms.banner.Banner
|
||||
import org.thoughtcrime.securesms.banner.BannerManager
|
||||
import org.thoughtcrime.securesms.banner.banners.DeprecatedBuildBanner
|
||||
@@ -187,42 +188,39 @@ private fun AppSettingsContent(
|
||||
)
|
||||
}
|
||||
|
||||
if (state.backupFailureState != BackupFailureState.NONE) {
|
||||
item {
|
||||
Dividers.Default()
|
||||
}
|
||||
when (state.backupFailureState) {
|
||||
BackupFailureState.SUBSCRIPTION_STATE_MISMATCH -> {
|
||||
item {
|
||||
Dividers.Default()
|
||||
|
||||
item {
|
||||
Rows.TextRow(
|
||||
text = {
|
||||
Text(text = stringResource(R.string.AppSettingsFragment__renew_your_signal_backups_subscription))
|
||||
},
|
||||
icon = {
|
||||
Box {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.symbol_backup_24),
|
||||
tint = MaterialTheme.colorScheme.onSurface,
|
||||
contentDescription = null
|
||||
)
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.absoluteOffset(3.dp, (-2).dp)
|
||||
.background(color = Color(0xFFFFCC00), shape = CircleShape)
|
||||
.size(12.dp)
|
||||
.align(Alignment.TopEnd)
|
||||
)
|
||||
BackupsWarningRow(
|
||||
text = stringResource(R.string.AppSettingsFragment__renew_your_signal_backups_subscription),
|
||||
onClick = {
|
||||
callbacks.navigate(R.id.action_appSettingsFragment_to_remoteBackupsSettingsFragment)
|
||||
}
|
||||
},
|
||||
onClick = {
|
||||
callbacks.navigate(R.id.action_appSettingsFragment_to_remoteBackupsSettingsFragment)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
Dividers.Default()
|
||||
}
|
||||
}
|
||||
|
||||
item {
|
||||
Dividers.Default()
|
||||
BackupFailureState.COULD_NOT_COMPLETE_BACKUP -> {
|
||||
item {
|
||||
Dividers.Default()
|
||||
|
||||
BackupsWarningRow(
|
||||
text = stringResource(R.string.AppSettingsFragment__couldnt_complete_backup),
|
||||
onClick = {
|
||||
BackupRepository.markBackupFailedIndicatorClicked()
|
||||
callbacks.navigate(R.id.action_appSettingsFragment_to_remoteBackupsSettingsFragment)
|
||||
}
|
||||
)
|
||||
|
||||
Dividers.Default()
|
||||
}
|
||||
}
|
||||
|
||||
BackupFailureState.NONE -> Unit
|
||||
}
|
||||
|
||||
item {
|
||||
@@ -467,6 +465,36 @@ private fun AppSettingsContent(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun BackupsWarningRow(
|
||||
text: String,
|
||||
onClick: () -> Unit
|
||||
) {
|
||||
Rows.TextRow(
|
||||
text = {
|
||||
Text(text = text)
|
||||
},
|
||||
icon = {
|
||||
Box {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.symbol_backup_24),
|
||||
tint = MaterialTheme.colorScheme.onSurface,
|
||||
contentDescription = null
|
||||
)
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.absoluteOffset(3.dp, (-2).dp)
|
||||
.background(color = Color(0xFFFFCC00), shape = CircleShape)
|
||||
.size(12.dp)
|
||||
.align(Alignment.TopEnd)
|
||||
)
|
||||
}
|
||||
},
|
||||
onClick = onClick
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun BioRow(
|
||||
self: BioRecipientState,
|
||||
|
||||
@@ -6,6 +6,7 @@ import androidx.lifecycle.map
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupRepository
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppDonations
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository
|
||||
import org.thoughtcrime.securesms.conversationlist.model.UnreadPaymentsLiveData
|
||||
@@ -70,7 +71,9 @@ class AppSettingsViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
private fun getBackupFailureState(): BackupFailureState {
|
||||
return if (SignalStore.backup.subscriptionStateMismatchDetected) {
|
||||
return if (BackupRepository.shouldDisplayBackupFailedSettingsRow()) {
|
||||
BackupFailureState.COULD_NOT_COMPLETE_BACKUP
|
||||
} else if (SignalStore.backup.subscriptionStateMismatchDetected) {
|
||||
BackupFailureState.SUBSCRIPTION_STATE_MISMATCH
|
||||
} else {
|
||||
BackupFailureState.NONE
|
||||
|
||||
@@ -10,5 +10,6 @@ package org.thoughtcrime.securesms.components.settings.app
|
||||
*/
|
||||
enum class BackupFailureState {
|
||||
NONE,
|
||||
COULD_NOT_COMPLETE_BACKUP,
|
||||
SUBSCRIPTION_STATE_MISMATCH
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.signal.donations.InAppPaymentType
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupFrequency
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupRepository
|
||||
import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
|
||||
import org.thoughtcrime.securesms.backup.v2.ui.status.BackupStatusData
|
||||
import org.thoughtcrime.securesms.backup.v2.ui.subscription.MessageBackupsType
|
||||
import org.thoughtcrime.securesms.banner.banners.MediaRestoreProgressBanner
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationSerializationHelper.toFiatMoney
|
||||
@@ -90,6 +91,8 @@ class RemoteBackupsSettingsViewModel : ViewModel() {
|
||||
}
|
||||
} else if (SignalStore.backup.totalRestorableAttachmentSize > 0L) {
|
||||
_restoreState.update { BackupRestoreState.Ready(SignalStore.backup.totalRestorableAttachmentSize.bytes.toUnitString()) }
|
||||
} else if (BackupRepository.shouldDisplayBackupFailedSettingsRow()) {
|
||||
_restoreState.update { BackupRestoreState.FromBackupStatusData(BackupStatusData.CouldNotCompleteBackup) }
|
||||
} else {
|
||||
_restoreState.update { BackupRestoreState.None }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user