diff --git a/BraveShared/BraveStrings.swift b/BraveShared/BraveStrings.swift index 46de014ff..b9fa47b62 100644 --- a/BraveShared/BraveStrings.swift +++ b/BraveShared/BraveStrings.swift @@ -563,6 +563,9 @@ extension Strings { public static let OBShieldsTitle = NSLocalizedString("OBShieldsTitle", bundle: Bundle.braveShared, value: "Brave Shields", comment: "Title for shields onboarding screen") public static let OBShieldsDetail = NSLocalizedString("OBShieldsDetail", bundle: Bundle.braveShared, value: "Block privacy-invading trackers so you can browse without being followed around the web", comment: "Detail text for shields onboarding screen") public static let OBRewardsTitle = NSLocalizedString("OBRewardsTitle", bundle: Bundle.braveShared, value: "Brave Rewards", comment: "Title for rewards onboarding screen") + public static let OBAdsOptInTitle = NSLocalizedString("OBAdsOptInTitle", bundle: Bundle.braveShared, value: "Brave Ads is here!", comment: "Title when opting into brave Ads when region becomes available") + public static let OBAdsOptInMessage = NSLocalizedString("OBAdsOptInMessage", bundle: Bundle.braveShared, value: "Earn tokens for seeing privacy-respecting ads.", comment: "Message when opting into brave Ads when region becomes available") + public static let OBAdsOptInMessageJapan = NSLocalizedString("OBAdsOptInMessageJapan", bundle: Bundle.braveShared, value: "Earn points for seeing privacy-respecting ads.", comment: "Message when opting into brave Ads when region becomes available") public static let OBRewardsDetailInAdRegion = NSLocalizedString("OBRewardsDetailInAdRegion", bundle: Bundle.braveShared, value: "Earn tokens for seeing privacy-respecting ads. Use them to support your favorite sites and creators.", comment: "Detail text for rewards onboarding screen") public static let OBRewardsDetailInAdRegionJapan = NSLocalizedString("OBRewardsDetailInAdRegionJapan", bundle: Bundle.braveShared, value: "Earn points for seeing privacy-respecting ads. Use them to support your favorite sites and creators.", comment: "Detail text for rewards onboarding screen") public static let OBRewardsDetailOutsideAdRegion = NSLocalizedString("OBRewardsDetailOutsideAdRegion", bundle: Bundle.braveShared, value: "Support your favorite websites and creators based on your attention.", comment: "Detail text for rewards onboarding screen") diff --git a/Client.xcodeproj/project.pbxproj b/Client.xcodeproj/project.pbxproj index 2e04f1a25..677eb8752 100644 --- a/Client.xcodeproj/project.pbxproj +++ b/Client.xcodeproj/project.pbxproj @@ -631,8 +631,8 @@ 5E46C37C234FB9A700ACA8C1 /* self-signed.cer in Resources */ = {isa = PBXBuildFile; fileRef = 5E46C37B234FB9A700ACA8C1 /* self-signed.cer */; }; 5E4845C022DE381200372022 /* WindowRenderHelper.js in Resources */ = {isa = PBXBuildFile; fileRef = 5E4845BF22DE381200372022 /* WindowRenderHelper.js */; }; 5E4845C222DE3DF800372022 /* WindowRenderHelperScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E4845C122DE3DF800372022 /* WindowRenderHelperScript.swift */; }; - 5E612A8C234B7FC1007D12B5 /* OnboardingRewardsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C66232BE43100BDE662 /* OnboardingRewardsViewController.swift */; }; - 5E612A8E234B7FC8007D12B5 /* OnboardingRewardsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C68232BE47A00BDE662 /* OnboardingRewardsView.swift */; }; + 5E612A8C234B7FC1007D12B5 /* OnboardingAdsAvailableController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C66232BE43100BDE662 /* OnboardingAdsAvailableController.swift */; }; + 5E612A8E234B7FC8007D12B5 /* OnboardingAdsAvailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C68232BE47A00BDE662 /* OnboardingAdsAvailableView.swift */; }; 5E612A8F234B7FCA007D12B5 /* OnboardingRewardsAgreementViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C6A232BF95200BDE662 /* OnboardingRewardsAgreementViewController.swift */; }; 5E612A90234B7FCD007D12B5 /* OnboardingRewardsAgreementView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1D8C6C232BF9C200BDE662 /* OnboardingRewardsAgreementView.swift */; }; 5E9288CA22DF864C007BE7A6 /* TabSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E9288C922DF864C007BE7A6 /* TabSessionTests.swift */; }; @@ -2028,8 +2028,8 @@ 5E0FCD22234253DC00AC831E /* CertificatePinning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CertificatePinning.swift; sourceTree = ""; }; 5E0FCD242342544C00AC831E /* URLSession+Requests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+Requests.swift"; sourceTree = ""; }; 5E11C3FF23314D970003C363 /* onboarding-ads.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "onboarding-ads.json"; sourceTree = ""; }; - 5E1D8C66232BE43100BDE662 /* OnboardingRewardsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingRewardsViewController.swift; sourceTree = ""; }; - 5E1D8C68232BE47A00BDE662 /* OnboardingRewardsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingRewardsView.swift; sourceTree = ""; }; + 5E1D8C66232BE43100BDE662 /* OnboardingAdsAvailableController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingAdsAvailableController.swift; sourceTree = ""; }; + 5E1D8C68232BE47A00BDE662 /* OnboardingAdsAvailableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingAdsAvailableView.swift; sourceTree = ""; }; 5E1D8C6A232BF95200BDE662 /* OnboardingRewardsAgreementViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingRewardsAgreementViewController.swift; sourceTree = ""; }; 5E1D8C6C232BF9C200BDE662 /* OnboardingRewardsAgreementView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingRewardsAgreementView.swift; sourceTree = ""; }; 5E1D8C6E232C0BDB00BDE662 /* onboarding-rewards.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "onboarding-rewards.json"; sourceTree = ""; }; @@ -2621,8 +2621,8 @@ 0A3C789E23056C910022F6D8 /* OnboardingSearchEnginesView.swift */, 0A3C78A0230597DA0022F6D8 /* OnboardingShieldsViewController.swift */, 0A3C78A2230597F10022F6D8 /* OnboardingShieldsView.swift */, - 5E1D8C66232BE43100BDE662 /* OnboardingRewardsViewController.swift */, - 5E1D8C68232BE47A00BDE662 /* OnboardingRewardsView.swift */, + 5E1D8C66232BE43100BDE662 /* OnboardingAdsAvailableController.swift */, + 5E1D8C68232BE47A00BDE662 /* OnboardingAdsAvailableView.swift */, 5E1D8C6A232BF95200BDE662 /* OnboardingRewardsAgreementViewController.swift */, 5E1D8C6C232BF9C200BDE662 /* OnboardingRewardsAgreementView.swift */, 5EC594EC232C2C8F00922111 /* OnboardingWebViewController.swift */, @@ -5993,7 +5993,7 @@ 4422D56221BFFB7F00BF1855 /* dfa.cc in Sources */, A1AD4BE120C082EF007A6EA1 /* UIGestureRecognizerExtensions.swift in Sources */, 282DA4731A68C1E700A406E2 /* OpenSearch.swift in Sources */, - 5E612A8C234B7FC1007D12B5 /* OnboardingRewardsViewController.swift in Sources */, + 5E612A8C234B7FC1007D12B5 /* OnboardingAdsAvailableController.swift in Sources */, F35B8D2F1D638408008E3D61 /* SessionRestoreHandler.swift in Sources */, 4422D4C621BFFB7600BF1855 /* env_posix.cc in Sources */, E63ED8E11BFD25580097D08E /* LoginListViewController.swift in Sources */, @@ -6167,7 +6167,7 @@ 0AD9F88122F049E5008B4D95 /* AdblockRustEngine.swift in Sources */, D3E8EF101B97BE69001900FB /* ClearPrivateDataTableViewController.swift in Sources */, 4422D4B421BFFB7600BF1855 /* hash.cc in Sources */, - 5E612A8E234B7FC8007D12B5 /* OnboardingRewardsView.swift in Sources */, + 5E612A8E234B7FC8007D12B5 /* OnboardingAdsAvailableView.swift in Sources */, 27D114D62358FCA400166534 /* SettingsRowViews.swift in Sources */, 4422D56621BFFB7F00BF1855 /* tostring.cc in Sources */, 4422D54821BFFB7E00BF1855 /* pcre.cc in Sources */, diff --git a/Client/Frontend/Browser/Onboarding/OnboardingRewardsViewController.swift b/Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableController.swift similarity index 93% rename from Client/Frontend/Browser/Onboarding/OnboardingRewardsViewController.swift rename to Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableController.swift index f6e4e3234..7adeba73e 100644 --- a/Client/Frontend/Browser/Onboarding/OnboardingRewardsViewController.swift +++ b/Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableController.swift @@ -7,7 +7,7 @@ import BraveRewards import BraveShared import Shared -class OnboardingRewardsViewController: OnboardingViewController { +class OnboardingAdsAvailableController: OnboardingViewController { private var contentView: View { return view as! View // swiftlint:disable:this force_cast } diff --git a/Client/Frontend/Browser/Onboarding/OnboardingRewardsView.swift b/Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableView.swift similarity index 91% rename from Client/Frontend/Browser/Onboarding/OnboardingRewardsView.swift rename to Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableView.swift index 669c7e5a4..e5cd9e418 100644 --- a/Client/Frontend/Browser/Onboarding/OnboardingRewardsView.swift +++ b/Client/Frontend/Browser/Onboarding/OnboardingAdsAvailableView.swift @@ -8,7 +8,7 @@ import BraveShared import BraveRewards import Lottie -extension OnboardingRewardsViewController { +extension OnboardingAdsAvailableController { private struct UX { /// A negative spacing is needed to make rounded corners for details view visible. @@ -19,8 +19,8 @@ extension OnboardingRewardsViewController { class View: UIView { - let continueButton = CommonViews.primaryButton(text: Strings.OBShowMeButton).then { - $0.accessibilityIdentifier = "OnboardingRewardsViewController.OBShowMeButton" + let continueButton = CommonViews.primaryButton(text: Strings.OBTurnOnButton).then { + $0.accessibilityIdentifier = "OnboardingRewardsViewController.OBTurnOnButton" } let skipButton = CommonViews.secondaryButton().then { @@ -50,16 +50,11 @@ extension OnboardingRewardsViewController { $0.spacing = 32 } - private let titleLabel = CommonViews.primaryText(Strings.OBRewardsTitle) + private let titleLabel = CommonViews.primaryText(Strings.OBAdsOptInTitle) private let descriptionLabel = CommonViews.secondaryText("").then { - if BraveAds.isCurrentRegionSupported() { - let text = Locale.current.isJapan ? Strings.OBRewardsDetailInAdRegionJapan : Strings.OBRewardsDetailInAdRegion - $0.attributedText = text.boldWords(with: $0.font, amount: 2) - } else { - $0.attributedText = Strings.OBRewardsDetailOutsideAdRegion - .boldWords(with: $0.font, amount: 1) - } + let text = Locale.current.isJapan ? Strings.OBAdsOptInMessageJapan : Strings.OBAdsOptInMessage + $0.attributedText = text.boldWords(with: $0.font, amount: 2) } private lazy var textStackView = UIStackView().then { stackView in diff --git a/Client/Frontend/Browser/Onboarding/OnboardingNavigationController.swift b/Client/Frontend/Browser/Onboarding/OnboardingNavigationController.swift index de71b96d5..e3786e3c7 100644 --- a/Client/Frontend/Browser/Onboarding/OnboardingNavigationController.swift +++ b/Client/Frontend/Browser/Onboarding/OnboardingNavigationController.swift @@ -57,7 +57,7 @@ class OnboardingNavigationController: UINavigationController { switch self { case .newUser: return BraveAds.isCurrentRegionSupported() ? [.searchEnginePicker, .shieldsInfo, .rewardsAgreement, .adsCountdown] : [.searchEnginePicker, .shieldsInfo, .rewardsAgreement] case .existingUserRewardsOff: return BraveAds.isCurrentRegionSupported() ? [.rewardsAgreement, .adsCountdown] : [.rewardsAgreement] - case .existingUserRewardsOn: return BraveAds.isCurrentRegionSupported() ? [.existingRewards, .adsCountdown] : [] + case .existingUserRewardsOn: return BraveAds.isCurrentRegionSupported() ? [.existingRewardsTurnOnAds, .adsCountdown] : [] } #endif } @@ -66,7 +66,7 @@ class OnboardingNavigationController: UINavigationController { fileprivate enum Screens { case searchEnginePicker case shieldsInfo - case existingRewards + case existingRewardsTurnOnAds case rewardsAgreement case adsCountdown @@ -77,8 +77,8 @@ class OnboardingNavigationController: UINavigationController { return OnboardingSearchEnginesViewController(profile: profile, rewards: rewards, theme: theme) case .shieldsInfo: return OnboardingShieldsViewController(profile: profile, rewards: rewards, theme: theme) - case .existingRewards: - return OnboardingRewardsViewController(profile: profile, rewards: rewards, theme: theme) + case .existingRewardsTurnOnAds: + return OnboardingAdsAvailableController(profile: profile, rewards: rewards, theme: theme) case .rewardsAgreement: return OnboardingRewardsAgreementViewController(profile: profile, rewards: rewards, theme: theme) case .adsCountdown: @@ -90,7 +90,7 @@ class OnboardingNavigationController: UINavigationController { switch self { case .searchEnginePicker: return OnboardingSearchEnginesViewController.self case .shieldsInfo: return OnboardingShieldsViewController.self - case .existingRewards: return OnboardingRewardsViewController.self + case .existingRewardsTurnOnAds: return OnboardingAdsAvailableController.self case .rewardsAgreement: return OnboardingRewardsAgreementViewController.self case .adsCountdown: return OnboardingAdsCountdownViewController.self }