diff --git a/Signal/Backups/BackupSettingsViewController.swift b/Signal/Backups/BackupSettingsViewController.swift index c4940c30fe..c513c8a2a3 100644 --- a/Signal/Backups/BackupSettingsViewController.swift +++ b/Signal/Backups/BackupSettingsViewController.swift @@ -1150,21 +1150,37 @@ class BackupSettingsViewController: fileprivate func setIsBackupDownloadQueueSuspended(_ isSuspended: Bool, backupPlan: BackupPlan) { if isSuspended { + let warningTitle: String? + let warningMessage: String? + switch backupPlan { - case .disabled, .disabling, .free, .paid, .paidAsTester: - db.write { tx in - backupSettingsStore.setIsBackupDownloadQueueSuspended(true, tx: tx) - } - case .paidExpiringSoon: + case .disabled, .disabling: + warningTitle = OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_DISABLING_WARNING_SHEET_TITLE", + comment: "Title for a sheet warning the user about skipping downloads while disabling Backups.", + ) + warningMessage = OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_DISABLING_WARNING_SHEET_MESSAGE", + comment: "Message for a sheet warning the user about skipping downloads while disabling Backups.", + ) + case .free, .paidExpiringSoon: + warningTitle = OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_EXPIRING_WARNING_SHEET_TITLE", + comment: "Title for a sheet warning the user about skipping downloads that will expire.", + ) + warningMessage = OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_EXPIRING_WARNING_SHEET_MESSAGE", + comment: "Message for a sheet warning the user about skipping downloads that will expire.", + ) + case .paid, .paidAsTester: + warningTitle = nil + warningMessage = nil + } + + if let warningTitle, let warningMessage { let warningSheet = ActionSheetController( - title: OWSLocalizedString( - "BACKUP_SETTINGS_SKIP_DOWNLOADS_WARNING_SHEET_TITLE", - comment: "Title for a sheet warning the user about skipping downloads.", - ), - message: OWSLocalizedString( - "BACKUP_SETTINGS_SKIP_DOWNLOADS_WARNING_SHEET_MESSAGE", - comment: "Message for a sheet warning the user about skipping downloads.", - ), + title: warningTitle, + message: warningMessage, ) warningSheet.addAction(ActionSheetAction( title: OWSLocalizedString( @@ -1173,9 +1189,31 @@ class BackupSettingsViewController: ), style: .destructive, handler: { [self] _ in - db.write { tx in - backupSettingsStore.setIsBackupDownloadQueueSuspended(true, tx: tx) - } + let secondWarningSheet = ActionSheetController( + title: OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_TITLE", + comment: "Title for a double-confirmation sheet warning the user about skipping downloads.", + ), + message: OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_MESSAGE", + comment: "Message for a double-confirmation sheet warning the user about skipping downloads.", + ), + ) + secondWarningSheet.addAction(ActionSheetAction( + title: OWSLocalizedString( + "BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_ACTION_SKIP", + comment: "Title for an action in a double-confirmation sheet warning the user about skipping downloads.", + ), + style: .destructive, + handler: { [self] _ in + db.write { tx in + backupSettingsStore.setIsBackupDownloadQueueSuspended(true, tx: tx) + } + }, + )) + secondWarningSheet.addAction(.cancel) + + presentActionSheet(secondWarningSheet) }, )) warningSheet.addAction(ActionSheetAction( @@ -1190,6 +1228,10 @@ class BackupSettingsViewController: warningSheet.addAction(.cancel) presentActionSheet(warningSheet) + } else { + db.write { tx in + backupSettingsStore.setIsBackupDownloadQueueSuspended(true, tx: tx) + } } } else { db.write { tx in diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index fee4de1658..248060c7de 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -824,7 +824,7 @@ "BACKUP_SETTINGS_BACKUPS_DISABLED_SECTION_FOOTER" = "Backups have been turned off and your data has been deleted from Signal’s secure storage service."; /* Description for a progress view tracking media being downloaded in service of disabling Backups. */ -"BACKUP_SETTINGS_BACKUPS_DISABLING_DOWNLOADING_MEDIA_PROGRESS_VIEW_DESCRIPTION" = "Backups have been turned off, any media that is not on device is downloading now. Once downloaded your data will be deleted from Signal’s secure storage service."; +"BACKUP_SETTINGS_BACKUPS_DISABLING_DOWNLOADING_MEDIA_PROGRESS_VIEW_DESCRIPTION" = "Backups have been turned off, and any media that is not on this device is downloading now. Once downloaded your data will be deleted from Signal’s secure storage service."; /* Message for a view indicating we failed to delete the user's Backup due to an unexpected error. */ "BACKUP_SETTINGS_BACKUPS_DISABLING_GENERIC_ERROR_MESSAGE" = "An error occurred. Please contact support."; @@ -1006,15 +1006,30 @@ /* Title for a button allowing users to re-enable Backups, after it had been previously disabled. */ "BACKUP_SETTINGS_REENABLE_BACKUPS_BUTTON_TITLE" = "Re-enable Backups"; +/* Message for a sheet warning the user about skipping downloads while disabling Backups. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_DISABLING_WARNING_SHEET_MESSAGE" = "You have backup media that’s not on this device. Undownloaded media will be permanently deleted once backups are disabled."; + +/* Title for a sheet warning the user about skipping downloads while disabling Backups. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_DISABLING_WARNING_SHEET_TITLE" = "Skip Download?"; + +/* Message for a sheet warning the user about skipping downloads that will expire. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_EXPIRING_WARNING_SHEET_MESSAGE" = "You have backup media that’s not on this device. Undownloaded media will be permanently deleted without a paid subscription."; + +/* Title for a sheet warning the user about skipping downloads that will expire. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_EXPIRING_WARNING_SHEET_TITLE" = "Skip Download?"; + +/* Title for an action in a double-confirmation sheet warning the user about skipping downloads. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_ACTION_SKIP" = "Skip Download"; + +/* Message for a double-confirmation sheet warning the user about skipping downloads. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_MESSAGE" = "Are you sure you want to skip downloading your media?"; + +/* Title for a double-confirmation sheet warning the user about skipping downloads. */ +"BACKUP_SETTINGS_SKIP_DOWNLOADS_SECOND_WARNING_SHEET_TITLE" = "Skip Download?"; + /* Title for an action in a sheet warning the user about skipping downloads. */ "BACKUP_SETTINGS_SKIP_DOWNLOADS_WARNING_SHEET_ACTION_SKIP" = "Skip Download"; -/* Message for a sheet warning the user about skipping downloads. */ -"BACKUP_SETTINGS_SKIP_DOWNLOADS_WARNING_SHEET_MESSAGE" = "You have backup data that’s not on this device. Your media and attachments will be permanently deleted without a paid subscription."; - -/* Title for a sheet warning the user about skipping downloads. */ -"BACKUP_SETTINGS_SKIP_DOWNLOADS_WARNING_SHEET_TITLE" = "Skip Download?"; - /* Title for detail button in notice that the user's Backups subscription couldn't be redeemed. */ "BACKUP_SETTINGS_SUBSCRIPTION_ALREADY_REDEEMED_NOTICE_DETAIL_BUTTON" = "Details";