From b7addedac33bb0f8553f79c9b06bf845231b47f1 Mon Sep 17 00:00:00 2001 From: Pete Walters Date: Tue, 28 Oct 2025 17:37:46 -0500 Subject: [PATCH] Add Terms & Privacy Policy link to backups subscription screen --- .../ChooseBackupPlanViewController.swift | 22 +++++++++++++++++++ .../translations/en.lproj/Localizable.strings | 7 ++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Signal/Backups/ChooseBackupPlanViewController.swift b/Signal/Backups/ChooseBackupPlanViewController.swift index 763436eeed..f364132a18 100644 --- a/Signal/Backups/ChooseBackupPlanViewController.swift +++ b/Signal/Backups/ChooseBackupPlanViewController.swift @@ -316,6 +316,10 @@ struct ChooseBackupPlanView: View { ) } .padding(.horizontal, 16) + + Spacer().frame(height: 16) + + termsAndConditionsLink() } pinnedFooter: { Button { viewModel.confirmSelection() @@ -356,6 +360,24 @@ struct ChooseBackupPlanView: View { .multilineTextAlignment(.center) .background(Color.Signal.groupedBackground) } + + private func termsAndConditionsLink() -> some View { + let label = OWSLocalizedString( + "CHOOSE_BACKUP_PLAN_TERM_AND_PRIVACY_POLICY_TEXT", + comment: "Title for a label allowing users to view Signal's Terms & Conditions." + ) + return Text(" [\(label)](https://support.signal.org/)") + .font(.subheadline.weight(.bold)) + .environment(\.openURL, OpenURLAction { _ in + CurrentAppContext().open( + TSConstants.legalTermsUrl, + completion: nil + ) + return .handled + }) + .foregroundStyle(Color.Signal.secondaryLabel) + .tint(Color.Signal.secondaryLabel) + } } // MARK: - diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index b83dc1a805..4a5311db34 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -1667,10 +1667,13 @@ "CHOOSE_BACKUP_PLAN_SUBSCRIBE_PAID_BUTTON_TEXT" = "Subscribe for %1$@/month"; /* Subtitle for a view allowing users to choose a Backup plan. */ -"CHOOSE_BACKUP_PLAN_SUBTITLE" = "All backups are end-to-end encrypted. Signal is a non-profit — paying for backups helps support our mission."; +"CHOOSE_BACKUP_PLAN_SUBTITLE" = "Backups are end-to-end encrypted. Signal is a non profit. Paying for backups helps support us."; + +/* Title for a label allowing users to view Signal's Terms & Conditions. */ +"CHOOSE_BACKUP_PLAN_TERM_AND_PRIVACY_POLICY_TEXT" = "Terms & Privacy Policy"; /* Title for a view allowing users to choose a Backup plan. */ -"CHOOSE_BACKUP_PLAN_TITLE" = "Choose Your Backup Plan"; +"CHOOSE_BACKUP_PLAN_TITLE" = "Choose Backup Plan"; /* Title for the color & wallpaper settings view. */ "COLOR_AND_WALLPAPER_SETTINGS_TITLE" = "Chat Color & Wallpaper";