From 06debc107f0e4d2cbf007b98b344ce40a28bbe27 Mon Sep 17 00:00:00 2001 From: Kyle Hickinson Date: Thu, 17 Oct 2019 11:31:56 -0400 Subject: [PATCH] Fix #1651: Update Rewards UI based on if region is set to JP - "BAT" becomes "BAT Points" in most scenarios - An additional disclaimer message is shown in the rewards summary (when non-empty) - Powered by Uphold message is not shown in wallet details screen --- BraveRewardsUI/Common/BATUSDPairView.swift | 2 +- .../Common/DetailActionableRow.swift | 2 +- .../Extensions/LocaleExtensions.swift | 12 ++++++ BraveRewardsUI/Grants/GrantsItemView.swift | 2 +- .../Localized Strings/Strings.swift | 14 +++++- .../RewardsSummaryRowView.swift | 2 +- .../Rewards Summary/RewardsSummaryView.swift | 2 +- .../Settings/SettingsViewController.swift | 4 +- .../Tips/Details/TipsSummaryTableCell.swift | 2 +- .../Settings/Wallet/WalletActivityView.swift | 2 +- .../Settings/Wallet/WalletDetailsView.swift | 4 +- .../Wallet/WalletDetailsViewController.swift | 10 +++-- .../Wallet/WalletDisclaimerView.swift | 42 ++++++++++++++++++ .../Tipping/TippingSelectionView.swift | 2 +- .../Tipping/TippingViewController.swift | 2 +- .../Wallet/RewardsSummaryProtocol.swift | 43 +++++++++++++------ .../Wallet/WalletViewController.swift | 16 ++++--- Client.xcodeproj/project.pbxproj | 8 ++++ 18 files changed, 135 insertions(+), 36 deletions(-) create mode 100644 BraveRewardsUI/Extensions/LocaleExtensions.swift create mode 100644 BraveRewardsUI/Settings/Wallet/WalletDisclaimerView.swift diff --git a/BraveRewardsUI/Common/BATUSDPairView.swift b/BraveRewardsUI/Common/BATUSDPairView.swift index 3043edf5f..fda18fdd4 100644 --- a/BraveRewardsUI/Common/BATUSDPairView.swift +++ b/BraveRewardsUI/Common/BATUSDPairView.swift @@ -27,7 +27,7 @@ class BATUSDPairView: UIStackView { spacing = 5.0 alignment = .bottom - batContainer.kindLabel.text = "BAT" + batContainer.kindLabel.text = Strings.BAT batContainer.amountLabel.text = "0" usdContainer.kindLabel.text = "USD" usdContainer.amountLabel.text = "0.00" diff --git a/BraveRewardsUI/Common/DetailActionableRow.swift b/BraveRewardsUI/Common/DetailActionableRow.swift index 034467e2c..ba82156d7 100644 --- a/BraveRewardsUI/Common/DetailActionableRow.swift +++ b/BraveRewardsUI/Common/DetailActionableRow.swift @@ -18,7 +18,7 @@ class DetailActionableRow: Button { $0.font = .systemFont(ofSize: 14.0, weight: .semibold) }, kindLabelConfig: { $0.appearanceTextColor = Colors.grey200 - $0.text = "BAT" + $0.text = Strings.BAT $0.font = .systemFont(ofSize: 13.0) }) diff --git a/BraveRewardsUI/Extensions/LocaleExtensions.swift b/BraveRewardsUI/Extensions/LocaleExtensions.swift new file mode 100644 index 000000000..346c85837 --- /dev/null +++ b/BraveRewardsUI/Extensions/LocaleExtensions.swift @@ -0,0 +1,12 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import Foundation + +extension Locale { + /// Whether or not the current users region and language is set to JP + var isJapan: Bool { + return regionCode == "JP" + } +} diff --git a/BraveRewardsUI/Grants/GrantsItemView.swift b/BraveRewardsUI/Grants/GrantsItemView.swift index ecf226ee4..c0a8a7a31 100644 --- a/BraveRewardsUI/Grants/GrantsItemView.swift +++ b/BraveRewardsUI/Grants/GrantsItemView.swift @@ -25,7 +25,7 @@ class GrantsItemView: SettingsSectionView { }, kindLabelConfig: { $0.appearanceTextColor = Colors.grey200 $0.font = .systemFont(ofSize: 13.0) - $0.text = "BAT" + $0.text = Strings.BAT }) addSubview(stackView) diff --git a/BraveRewardsUI/Localized Strings/Strings.swift b/BraveRewardsUI/Localized Strings/Strings.swift index 208d740f3..241f73682 100644 --- a/BraveRewardsUI/Localized Strings/Strings.swift +++ b/BraveRewardsUI/Localized Strings/Strings.swift @@ -2,7 +2,15 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -internal struct Strings {} +internal struct Strings { + /// "BAT" or "BAT Points" depending on the region + static var BAT: String { + if Locale.current.isJapan { + return NSLocalizedString("BATPoints", bundle: Bundle.RewardsUI, value: "BAT Points", comment: "The name of BAT in Japan") + } + return "BAT" + } +} internal extension Strings { static let Open = NSLocalizedString("BraveRewardsOpen", bundle: Bundle.RewardsUI, value: "Open", comment: "") @@ -111,7 +119,7 @@ internal extension Strings { static let AddFundsTokenWalletAddress = NSLocalizedString("BraveRewardsAddFundsTokenWalletAddress", bundle: Bundle.RewardsUI, value: "Wallet Address", comment: "") static let AutoContributeToVideos = NSLocalizedString("BraveRewardsAutoContributeToVideos", bundle: Bundle.RewardsUI, value: "Allow contribution to videos", comment: "") static let SettingsDisabledBody2 = NSLocalizedString("BraveRewardsSettingsDisabledBody2", bundle: Bundle.RewardsUI, value: "One where your time is valued, your personal data is kept private, and you actually get paid for your attention.", comment: "") - static let ContributingToUnverifiedSites = NSLocalizedString("BraveRewardsContributingToUnverifiedSites", bundle: Bundle.RewardsUI, value: "You've designated %@ BAT for creators who haven't yet signed up to recieve contributions. Your browser will keep trying to contribute until they verify, or until 90 days have passed.", comment: "") + static let ContributingToUnverifiedSites = NSLocalizedString("BraveRewardsContributingToUnverifiedSites", bundle: Bundle.RewardsUI, value: "You've designated %@ for creators who haven't yet signed up to recieve contributions. Your browser will keep trying to contribute until they verify, or until 90 days have passed.", comment: "") static let SettingsDisabledBody1 = NSLocalizedString("BraveRewardsSettingsDisabledBody1", bundle: Bundle.RewardsUI, value: "With your old browser, you paid to browse the web by viewing ads with your valuable attention. You spent your valuable time downloading invasive ad technology that transmitted your valuable private data to advertisers — without your consent.", comment: "") static let PanelTitle = NSLocalizedString("BraveRewardsPanelTitle", bundle: Bundle.RewardsUI, value: "Rewards", comment: "") static let CreatingWallet = NSLocalizedString("BraveRewardsCreatingWallet", bundle: Bundle.RewardsUI, value: "Creating wallet", comment: "") @@ -178,5 +186,7 @@ internal extension Strings { static let MyFirstAdBody = NSLocalizedString("MyFirstAdBody", bundle: Bundle.RewardsUI, value: "Tap here to learn more.", comment: "") static let WalletCreationErrorTitle = NSLocalizedString("WalletCreationErrorTitle", bundle: Bundle.RewardsUI, value: "Error", comment: "") static let WalletCreationErrorBody = NSLocalizedString("WalletCreationErrorBody", bundle: Bundle.RewardsUI, value: "Oops! Something went wrong. Please try again.", comment: "") + static let BATPointsDisclaimer = NSLocalizedString("BATPointsDisclaimer", bundle: Bundle.RewardsUI, value: "BAT Points can be used to contribute to your favorite content creators. BAT Points cannot be exchanged for BAT.", comment: "Disclaimer about BAT Points for JP users") + static let BATPointsDisclaimerBoldedWords = NSLocalizedString("BATPointsBoldedWords", bundle: Bundle.RewardsUI, value: "BAT Points", comment: "Words that should be bolded in the BAT Points disclaimer") } diff --git a/BraveRewardsUI/Rewards Summary/RewardsSummaryRowView.swift b/BraveRewardsUI/Rewards Summary/RewardsSummaryRowView.swift index 304bbf249..9276eccf4 100644 --- a/BraveRewardsUI/Rewards Summary/RewardsSummaryRowView.swift +++ b/BraveRewardsUI/Rewards Summary/RewardsSummaryRowView.swift @@ -72,7 +72,7 @@ import UIKit batValue: String, usdDollarValue: String) { self.init(frame: .zero) titleLabel.text = title - cryptoCurrencyLabel.text = "BAT" + cryptoCurrencyLabel.text = Strings.BAT cryptoValueLabel.text = batValue cryptoValueLabel.appearanceTextColor = cryptoValueColor dollarValueLabel.text = usdDollarValue diff --git a/BraveRewardsUI/Rewards Summary/RewardsSummaryView.swift b/BraveRewardsUI/Rewards Summary/RewardsSummaryView.swift index b053fccc5..31b18df31 100644 --- a/BraveRewardsUI/Rewards Summary/RewardsSummaryView.swift +++ b/BraveRewardsUI/Rewards Summary/RewardsSummaryView.swift @@ -55,7 +55,7 @@ class RewardsSummaryView: UIView { /// A disclaimer view to show below the rows (Used when the user has auto-contribute enabled /// and has a portion of BAT designated to unverified publishers - var disclaimerView: LinkLabel? { + var disclaimerView: WalletDisclaimerView? { willSet { disclaimerView?.removeFromSuperview() } diff --git a/BraveRewardsUI/Settings/SettingsViewController.swift b/BraveRewardsUI/Settings/SettingsViewController.swift index 0f06ca0da..b588d75b3 100644 --- a/BraveRewardsUI/Settings/SettingsViewController.swift +++ b/BraveRewardsUI/Settings/SettingsViewController.swift @@ -74,7 +74,7 @@ class SettingsViewController: UIViewController { $0.autoContributeSection.toggleSwitch.addTarget(self, action: #selector(autoContributeToggleValueChanged), for: .valueChanged) let dollarString = state.ledger.dollarStringForBATAmount(state.ledger.balance?.total ?? 0) ?? "" - $0.walletSection.setWalletBalance(state.ledger.balanceString, crypto: "BAT", dollarValue: dollarString) + $0.walletSection.setWalletBalance(state.ledger.balanceString, crypto: Strings.BAT, dollarValue: dollarString) if !BraveAds.isCurrentRegionSupported() { $0.adsSection.status = .unsupportedRegion @@ -164,7 +164,7 @@ class SettingsViewController: UIViewController { guard let self = self else { return } self.settingsView.walletSection.setWalletBalance( self.state.ledger.balanceString, - crypto: "BAT", + crypto: Strings.BAT, dollarValue: self.state.ledger.usdBalanceString ) } diff --git a/BraveRewardsUI/Settings/Tips/Details/TipsSummaryTableCell.swift b/BraveRewardsUI/Settings/Tips/Details/TipsSummaryTableCell.swift index f1aa860f2..54b8ddf79 100644 --- a/BraveRewardsUI/Settings/Tips/Details/TipsSummaryTableCell.swift +++ b/BraveRewardsUI/Settings/Tips/Details/TipsSummaryTableCell.swift @@ -11,7 +11,7 @@ class TipsSummaryTableCell: UITableViewCell, TableViewReusable { $0.font = .systemFont(ofSize: 14.0, weight: .semibold) }, kindLabelConfig: { $0.appearanceTextColor = Colors.neutral200 - $0.text = "BAT" + $0.text = Strings.BAT $0.font = .systemFont(ofSize: 13.0) }) diff --git a/BraveRewardsUI/Settings/Wallet/WalletActivityView.swift b/BraveRewardsUI/Settings/Wallet/WalletActivityView.swift index e9f2be7e6..b2aa5b173 100644 --- a/BraveRewardsUI/Settings/Wallet/WalletActivityView.swift +++ b/BraveRewardsUI/Settings/Wallet/WalletActivityView.swift @@ -43,7 +43,7 @@ class WalletActivityView: SettingsSectionView { /// A disclaimer view to show below the rows (Used when the user has auto-contribute enabled /// and has a portion of BAT designated to unverified publishers - var disclaimerView: LinkLabel? { + var disclaimerView: WalletDisclaimerView? { willSet { disclaimerView?.removeFromSuperview() } diff --git a/BraveRewardsUI/Settings/Wallet/WalletDetailsView.swift b/BraveRewardsUI/Settings/Wallet/WalletDetailsView.swift index 08c4bfa76..775d7dd1e 100644 --- a/BraveRewardsUI/Settings/Wallet/WalletDetailsView.swift +++ b/BraveRewardsUI/Settings/Wallet/WalletDetailsView.swift @@ -24,7 +24,9 @@ extension WalletDetailsViewController { } else { stackView.addArrangedSubview(activityView) } - stackView.addArrangedSubview(PoweredByUpholdView()) + if !Locale.current.isJapan { + stackView.addArrangedSubview(PoweredByUpholdView()) + } scrollView.snp.makeConstraints { $0.edges.equalTo(self) diff --git a/BraveRewardsUI/Settings/Wallet/WalletDetailsViewController.swift b/BraveRewardsUI/Settings/Wallet/WalletDetailsViewController.swift index 3981ad7f3..9757e0252 100644 --- a/BraveRewardsUI/Settings/Wallet/WalletDetailsViewController.swift +++ b/BraveRewardsUI/Settings/Wallet/WalletDetailsViewController.swift @@ -38,13 +38,17 @@ class WalletDetailsViewController: UIViewController, RewardsSummaryProtocol { detailsView.walletSection.setWalletBalance( state.ledger.balanceString, - crypto: "BAT", + crypto: Strings.BAT, dollarValue: state.ledger.usdBalanceString ) detailsView.activityView.monthYearLabel.text = summaryPeriod detailsView.activityView.rows = summaryRows - detailsView.activityView.disclaimerView = disclaimerView + if !disclaimerLabels.isEmpty { + detailsView.activityView.disclaimerView = WalletDisclaimerView().then { + $0.labels = disclaimerLabels + } + } } // MARK: - Actions @@ -60,7 +64,7 @@ class WalletDetailsViewController: UIViewController, RewardsSummaryProtocol { if let self = self { self.detailsView.walletSection.setWalletBalance( self.state.ledger.balanceString, - crypto: "BAT", + crypto: Strings.BAT, dollarValue: self.state.ledger.usdBalanceString ) } diff --git a/BraveRewardsUI/Settings/Wallet/WalletDisclaimerView.swift b/BraveRewardsUI/Settings/Wallet/WalletDisclaimerView.swift new file mode 100644 index 000000000..81a2e2e1f --- /dev/null +++ b/BraveRewardsUI/Settings/Wallet/WalletDisclaimerView.swift @@ -0,0 +1,42 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import UIKit + +class WalletDisclaimerView: UIView { + + var labels: [LinkLabel] = [] { + willSet { + labels.forEach { $0.removeFromSuperview() } + } + didSet { + labels.forEach { + stackView.addArrangedSubview($0) + } + } + } + + private let stackView = UIStackView().then { + $0.axis = .vertical + $0.spacing = 10 + } + + override init(frame: CGRect) { + super.init(frame: frame) + + addSubview(stackView) + + stackView.snp.makeConstraints { + $0.edges.equalTo(self).inset(8) + } + + backgroundColor = UIColor(white: 0.0, alpha: 0.04) + layer.cornerRadius = 4.0 + } + + @available(*, unavailable) + required init(coder: NSCoder) { + fatalError() + } +} diff --git a/BraveRewardsUI/Tipping/TippingSelectionView.swift b/BraveRewardsUI/Tipping/TippingSelectionView.swift index ca44eddc4..c153c5969 100644 --- a/BraveRewardsUI/Tipping/TippingSelectionView.swift +++ b/BraveRewardsUI/Tipping/TippingSelectionView.swift @@ -24,7 +24,7 @@ class TippingOption: NSObject { class func batAmount(_ value: BATValue, dollarValue: String) -> TippingOption { return TippingOption( value: value, - crypto: "BAT", + crypto: "BAT", // Tipping page stays "BAT" regardless of locale cryptoImage: UIImage(frameworkResourceNamed: "bat-small"), dollarValue: dollarValue ) diff --git a/BraveRewardsUI/Tipping/TippingViewController.swift b/BraveRewardsUI/Tipping/TippingViewController.swift index 386496f0d..392efc83b 100644 --- a/BraveRewardsUI/Tipping/TippingViewController.swift +++ b/BraveRewardsUI/Tipping/TippingViewController.swift @@ -82,7 +82,7 @@ class TippingViewController: UIViewController, UIViewControllerTransitioningDele } tippingView.overviewView.disclaimerView.isHidden = publisherInfo.status == .verified - tippingView.optionSelectionView.setWalletBalance(state.ledger.balanceString, crypto: "BAT") + tippingView.optionSelectionView.setWalletBalance(state.ledger.balanceString, crypto: Strings.BAT) tippingView.optionSelectionView.options = TippingViewController.defaultTippingAmounts.map { TippingOption.batAmount(BATValue($0), dollarValue: state.ledger.dollarStringForBATAmount($0) ?? "") } diff --git a/BraveRewardsUI/Wallet/RewardsSummaryProtocol.swift b/BraveRewardsUI/Wallet/RewardsSummaryProtocol.swift index e0e9e42c7..bb20d25ff 100644 --- a/BraveRewardsUI/Wallet/RewardsSummaryProtocol.swift +++ b/BraveRewardsUI/Wallet/RewardsSummaryProtocol.swift @@ -16,7 +16,7 @@ protocol RewardsSummaryProtocol { var summaryRows: [RowView] { get } /// A view informing users about contributing to unverified publishers. - var disclaimerView: LinkLabel? { get } + var disclaimerLabels: [LinkLabel] { get } } private struct Activity { @@ -71,21 +71,36 @@ extension RewardsSummaryProtocol { } } - var disclaimerView: LinkLabel? { - let reservedAmount = BATValue(state.ledger.reservedAmount) - // Don't show the view if there's no pending contributions. - if reservedAmount.doubleValue <= 0 { return nil } + var disclaimerLabels: [LinkLabel] { + var labels: [LinkLabel] = [] - let text = String(format: Strings.ContributingToUnverifiedSites, reservedAmount.displayString) + if Locale.current.isJapan { + labels.append(LinkLabel().then { + $0.attributedText = { + let str = NSMutableAttributedString(string: Strings.BATPointsDisclaimer, attributes: [.font: UIFont.systemFont(ofSize: 12.0)]) + if let range = str.string.range(of: Strings.BATPointsDisclaimerBoldedWords) { + str.addAttribute(.font, value: UIFont.systemFont(ofSize: 12.0, weight: .semibold), range: NSRange(range, in: str.string)) + } + return str + }() + $0.appearanceTextColor = Colors.grey200 + }) + } - return LinkLabel().then { - $0.appearanceTextColor = Colors.grey200 - $0.font = UIFont.systemFont(ofSize: 12.0) - $0.textContainerInset = UIEdgeInsets(top: 8.0, left: 8.0, bottom: 8.0, right: 8.0) - $0.text = "\(text) \(Strings.DisclaimerLearnMore)" - $0.setURLInfo([Strings.DisclaimerLearnMore: "learn-more"]) - $0.backgroundColor = UIColor(white: 0.0, alpha: 0.04) - $0.layer.cornerRadius = 4.0 + let reservedAmount = BATValue(state.ledger.reservedAmount) + // Don't show the view if there's no pending contributions. + if reservedAmount.doubleValue > 0 { + let batAmountText = "\(reservedAmount.displayString) \(Strings.BAT)" + let text = String(format: Strings.ContributingToUnverifiedSites, batAmountText) + + labels.append(LinkLabel().then { + $0.appearanceTextColor = Colors.grey200 + $0.font = UIFont.systemFont(ofSize: 12.0) + $0.text = "\(text) \(Strings.DisclaimerLearnMore)" + $0.setURLInfo([Strings.DisclaimerLearnMore: "learn-more"]) + }) } + + return labels } } diff --git a/BraveRewardsUI/Wallet/WalletViewController.swift b/BraveRewardsUI/Wallet/WalletViewController.swift index 0422f956e..b0d3f66da 100644 --- a/BraveRewardsUI/Wallet/WalletViewController.swift +++ b/BraveRewardsUI/Wallet/WalletViewController.swift @@ -88,7 +88,11 @@ class WalletViewController: UIViewController, RewardsSummaryProtocol { navigationController?.setNavigationBarHidden(true, animated: false) rewardsSummaryView.rewardsSummaryButton.addTarget(self, action: #selector(tappedRewardsSummaryButton), for: .touchUpInside) - rewardsSummaryView.disclaimerView = disclaimerView + if !disclaimerLabels.isEmpty { + rewardsSummaryView.disclaimerView = WalletDisclaimerView().then { + $0.labels = disclaimerLabels + } + } walletView.headerView.addFundsButton.addTarget(self, action: #selector(tappedAddFunds), for: .touchUpInside) walletView.headerView.settingsButton.addTarget(self, action: #selector(tappedSettings), for: .touchUpInside) @@ -190,9 +194,11 @@ class WalletViewController: UIViewController, RewardsSummaryProtocol { self.state.delegate?.loadNewTabWithURL(url) } - walletView.rewardsSummaryView?.disclaimerView?.onLinkedTapped = { [weak self] _ in - guard let self = self, let url = URL(string: DisclaimerLinks.unclaimedFundsURL) else { return } - self.state.delegate?.loadNewTabWithURL(url) + walletView.rewardsSummaryView?.disclaimerView?.labels.forEach { + $0.onLinkedTapped = { [weak self] _ in + guard let self = self, let url = URL(string: DisclaimerLinks.unclaimedFundsURL) else { return } + self.state.delegate?.loadNewTabWithURL(url) + } } publisherView.onCheckAgainTapped = { [weak self] in @@ -515,7 +521,7 @@ extension WalletViewController { func updateWalletHeader() { walletView.headerView.setWalletBalance( state.ledger.balanceString, - crypto: "BAT", + crypto: Strings.BAT, dollarValue: state.ledger.usdBalanceString ) } diff --git a/Client.xcodeproj/project.pbxproj b/Client.xcodeproj/project.pbxproj index 592e6aaa8..2e04f1a25 100644 --- a/Client.xcodeproj/project.pbxproj +++ b/Client.xcodeproj/project.pbxproj @@ -265,6 +265,7 @@ 271DED2B234CC7EF009DAC37 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271DECC0234CC7EF009DAC37 /* BundleExtensions.swift */; }; 271DED2C234CC7EF009DAC37 /* DateExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271DECC1234CC7EF009DAC37 /* DateExtensions.swift */; }; 272FCAA0225CF8F00091E645 /* OnePasswordExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 272FCA98225CF8F00091E645 /* OnePasswordExtension.framework */; }; + 27353FF2235F4E7300E42EBB /* WalletDisclaimerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27353FF1235F4E7300E42EBB /* WalletDisclaimerView.swift */; }; 2755AB7D23107BC600F0721F /* AdsReporting.js in Resources */ = {isa = PBXBuildFile; fileRef = 2755AB7C23107BC600F0721F /* AdsReporting.js */; }; 2755AB8623107DBD00F0721F /* AdsMediaReporting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2755AB8523107DBD00F0721F /* AdsMediaReporting.swift */; }; 2760D2BF215ACCE20068E131 /* BundleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2760D2BE215ACCE20068E131 /* BundleExtensions.swift */; }; @@ -285,6 +286,7 @@ 279C756B219DDE3B001CD1CB /* FingerprintingProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279C756A219DDE3B001CD1CB /* FingerprintingProtection.swift */; }; 279C75C821A5B37D001CD1CB /* FingerprintingProtection.js in Resources */ = {isa = PBXBuildFile; fileRef = 279C75C021A5B37D001CD1CB /* FingerprintingProtection.js */; }; 27A586E1214C0DDD000CAE3C /* PreferencesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27A586E0214C0DDD000CAE3C /* PreferencesTest.swift */; }; + 27B1E26D235E58190062E86F /* LocaleExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B1E26C235E58190062E86F /* LocaleExtensions.swift */; }; 27C461DE211B76500088A441 /* ShieldsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27C461DD211B76500088A441 /* ShieldsView.swift */; }; 27C46201211CD8D20088A441 /* DeferredTestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A176323020CF2A6000126F25 /* DeferredTestUtils.swift */; }; 27D114D42358FBBF00166534 /* BraveRewardsSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27D114D32358FBBF00166534 /* BraveRewardsSettingsViewController.swift */; }; @@ -1477,6 +1479,7 @@ 271DECC0234CC7EF009DAC37 /* BundleExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; 271DECC1234CC7EF009DAC37 /* DateExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtensions.swift; sourceTree = ""; }; 272FCA98225CF8F00091E645 /* OnePasswordExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OnePasswordExtension.framework; path = Carthage/Build/iOS/OnePasswordExtension.framework; sourceTree = ""; }; + 27353FF1235F4E7300E42EBB /* WalletDisclaimerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletDisclaimerView.swift; sourceTree = ""; }; 2755AB7C23107BC600F0721F /* AdsReporting.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = AdsReporting.js; sourceTree = ""; }; 2755AB8523107DBD00F0721F /* AdsMediaReporting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdsMediaReporting.swift; sourceTree = ""; }; 2760D2BE215ACCE20068E131 /* BundleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleExtensions.swift; sourceTree = ""; }; @@ -1497,6 +1500,7 @@ 279C756A219DDE3B001CD1CB /* FingerprintingProtection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FingerprintingProtection.swift; sourceTree = ""; }; 279C75C021A5B37D001CD1CB /* FingerprintingProtection.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = FingerprintingProtection.js; sourceTree = ""; }; 27A586E0214C0DDD000CAE3C /* PreferencesTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesTest.swift; sourceTree = ""; }; + 27B1E26C235E58190062E86F /* LocaleExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocaleExtensions.swift; sourceTree = ""; }; 27C461DD211B76500088A441 /* ShieldsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldsView.swift; sourceTree = ""; }; 27D114D32358FBBF00166534 /* BraveRewardsSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BraveRewardsSettingsViewController.swift; sourceTree = ""; }; 27D114D52358FCA400166534 /* SettingsRowViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRowViews.swift; sourceTree = ""; }; @@ -3068,6 +3072,7 @@ 271DEC8C234CC7EF009DAC37 /* WalletDetailsView.swift */, 271DEC8D234CC7EF009DAC37 /* WalletActivityView.swift */, 271DEC8E234CC7EF009DAC37 /* WalletSummaryView.swift */, + 27353FF1235F4E7300E42EBB /* WalletDisclaimerView.swift */, ); path = Wallet; sourceTree = ""; @@ -3160,6 +3165,7 @@ 271DECBF234CC7EF009DAC37 /* UIImageExtensions.swift */, 271DECC0234CC7EF009DAC37 /* BundleExtensions.swift */, 271DECC1234CC7EF009DAC37 /* DateExtensions.swift */, + 27B1E26C235E58190062E86F /* LocaleExtensions.swift */, ); path = Extensions; sourceTree = ""; @@ -5511,6 +5517,7 @@ 271DECDA234CC7EF009DAC37 /* TippingView.swift in Sources */, 271DECF1234CC7EF009DAC37 /* AdsDetailsViewController.swift in Sources */, 271DED0C234CC7EF009DAC37 /* EmptyTableCell.swift in Sources */, + 27B1E26D235E58190062E86F /* LocaleExtensions.swift in Sources */, 271DECF3234CC7EF009DAC37 /* OptionsSelectionViewController.swift in Sources */, 271DED10234CC7EF009DAC37 /* CurrencyContainerView.swift in Sources */, 271DED12234CC7EF009DAC37 /* SeparatorView.swift in Sources */, @@ -5518,6 +5525,7 @@ 271DECF0234CC7EF009DAC37 /* SettingsAdSectionView.swift in Sources */, 271DECD3234CC7EF009DAC37 /* AdContentButton.swift in Sources */, 271DED1A234CC7EF009DAC37 /* ActionButton.swift in Sources */, + 27353FF2235F4E7300E42EBB /* WalletDisclaimerView.swift in Sources */, 271DECC5234CC7EF009DAC37 /* PublisherView.swift in Sources */, 271DED03234CC7EF009DAC37 /* AutoContributeDetailsViewController.swift in Sources */, 271DED16234CC7EF009DAC37 /* BATUSDPairView.swift in Sources */,