diff --git a/ios/brave-ios/Sources/AIChat/AIChatStrings.swift b/ios/brave-ios/Sources/AIChat/AIChatStrings.swift index 93ae92a82c8..64e79fe7e79 100644 --- a/ios/brave-ios/Sources/AIChat/AIChatStrings.swift +++ b/ios/brave-ios/Sources/AIChat/AIChatStrings.swift @@ -359,7 +359,7 @@ extension Strings { bundle: .module, value: "BEST VALUE", comment: - "The description indicating yearly subscription that show how much user is saving percentage" + "The description indicating how valuable the yearly subscription is, compared to purchasing monthly" ) public static let paywallYearlyPriceDividend = NSLocalizedString( "aichat.paywallYearlyPriceDividend", diff --git a/ios/brave-ios/Sources/AIChat/Components/Paywall/AIChatPaywallView.swift b/ios/brave-ios/Sources/AIChat/Components/Paywall/AIChatPaywallView.swift index 7beee3bdd8e..7456d395775 100644 --- a/ios/brave-ios/Sources/AIChat/Components/Paywall/AIChatPaywallView.swift +++ b/ios/brave-ios/Sources/AIChat/Components/Paywall/AIChatPaywallView.swift @@ -212,19 +212,18 @@ struct AIChatPaywallView: View { .tint(Color.white) .padding() } else { - if (selectedTierType == .monthly && isMonthlyIntroOfferAvailable) + let isIntroOfferAvailable = + (selectedTierType == .monthly && isMonthlyIntroOfferAvailable) || (selectedTierType == .yearly && isYearlyIntroOfferAvailable) - { - Text(Strings.AIChat.paywallPurchaseActionIntroOfferTitle) - .font(.body.weight(.semibold)) - .foregroundColor(Color(.white)) - .padding() - } else { - Text(Strings.AIChat.paywallPurchaseActionTitle) - .font(.body.weight(.semibold)) - .foregroundColor(Color(.white)) - .padding() - } + + Text( + isIntroOfferAvailable + ? Strings.AIChat.paywallPurchaseActionIntroOfferTitle + : Strings.AIChat.paywallPurchaseActionTitle + ) + .font(.body.weight(.semibold)) + .foregroundColor(Color(.white)) + .padding() } } .frame(maxWidth: .infinity) diff --git a/ios/brave-ios/Sources/BraveStore/Subscription/SDK/AppStoreSDK.swift b/ios/brave-ios/Sources/BraveStore/Subscription/SDK/AppStoreSDK.swift index 7fa54d4f10c..8019b3f9e5f 100644 --- a/ios/brave-ios/Sources/BraveStore/Subscription/SDK/AppStoreSDK.swift +++ b/ios/brave-ios/Sources/BraveStore/Subscription/SDK/AppStoreSDK.swift @@ -326,7 +326,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a product's renewable subscription product /// - Parameter product: The product whose SKU to retrieve /// - Returns: The AppStore renewable subscription product - @MainActor public func subscription(for product: any AppStoreProduct) async -> Product? { allProducts.autoRenewable.first(where: { $0.id == product.rawValue }) } @@ -334,7 +333,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a product's renewable subscription status /// - Parameter product: The product whose subscription status to retrieve /// - Returns: The renewable subscription's status - @MainActor public func status(for product: any AppStoreProduct) async -> [Product.SubscriptionInfo.Status] { (try? await subscription(for: product)?.subscription?.status) ?? [] } @@ -342,7 +340,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a product's renewable subscription trial status /// - Parameter product: The product whose subscription trial status to retrieve /// - Returns: The renewable subscription's trial status - @MainActor public func isIntroOfferAvailable(for product: any AppStoreProduct) async -> Bool { guard let subscription = await subscription(for: product)?.subscription else { return false @@ -358,7 +355,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a product's renewable subscription renewal information /// - Parameter product: The product whose renewal to retrieve /// - Returns: The renewable subscription's renewal information - @MainActor public func renewalState( for product: any AppStoreProduct ) async -> Product.SubscriptionInfo.RenewalState? { @@ -368,7 +364,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a product's transaction history /// - Parameter product: The product whose last transaction history to retrieve /// - Returns: The product's latest transaction history - @MainActor public func latestTransaction(for product: any AppStoreProduct) async -> Transaction? { if let transaction = await Transaction.latest(for: product.rawValue) { do { @@ -386,7 +381,6 @@ public class AppStoreSDK: ObservableObject { /// Retrieves a customer's purchase entitlement of a specified product /// - Parameter product: The product whose current subscription to retrieve /// - Returns: The current product entitlement/purchase. Null if the customer is not currently entitled to this product - @MainActor public func currentTransaction(for product: any AppStoreProduct) async -> Transaction? { if let transaction = await Transaction.currentEntitlement(for: product.rawValue) { do {