diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt
index 35a4f618ef..2cfc4defaa 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt
@@ -496,6 +496,11 @@ private fun ActiveBackupsRow(
is MessageBackupsType.Paid -> {
val body = if (backupState is BackupState.Canceled) {
stringResource(R.string.BackupsSettingsFragment__subscription_canceled)
+ } else if (type.pricePerMonth.amount == BigDecimal.ZERO) {
+ stringResource(
+ R.string.BackupsSettingsFragment_renews_s,
+ DateUtils.formatDateWithYear(Locale.getDefault(), backupState.renewalTime.inWholeMilliseconds)
+ )
} else {
stringResource(
R.string.BackupsSettingsFragment_s_month_renews_s,
@@ -694,6 +699,25 @@ private fun ActivePaidBackupsRowPreview() {
}
}
+@SignalPreview
+@Composable
+private fun ActivePaidBackupsRowNoPricePreview() {
+ Previews.Preview {
+ ActiveBackupsRow(
+ backupState = BackupState.ActivePaid(
+ messageBackupsType = MessageBackupsType.Paid(
+ pricePerMonth = FiatMoney(BigDecimal.ZERO, Currency.getInstance("CAD")),
+ storageAllowanceBytes = 1_000_000,
+ mediaTtl = 30.days
+ ),
+ renewalTime = 0.seconds,
+ price = FiatMoney(BigDecimal.valueOf(4), Currency.getInstance("CAD"))
+ ),
+ lastBackupAt = 0.seconds
+ )
+ }
+}
+
@SignalPreview
@Composable
private fun ActiveFreeBackupsRowPreview() {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c6638b5126..1b6585fd76 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8142,6 +8142,8 @@
%1$s/month, renews %2$s
+
+ Renews %1$s
Last backup %1$s