diff --git a/RevenueCatUI/Helpers/PaywallData+Default.swift b/RevenueCatUI/Helpers/PaywallData+Default.swift index b8547b3798..e0c06b60ad 100644 --- a/RevenueCatUI/Helpers/PaywallData+Default.swift +++ b/RevenueCatUI/Helpers/PaywallData+Default.swift @@ -15,22 +15,24 @@ extension PaywallData { /// Default `PaywallData` to display when attempting to present a ``PaywallView`` with an offering /// that has no paywall configuration, or when that configuration is invalid. - public static let `default`: Self = .init( - template: .multiPackageBold, - config: .init( - packages: [ - Package.string(from: .weekly)!, - Package.string(from: .monthly)!, - Package.string(from: .annual)! - ], - images: .init(background: Self.backgroundImage), - colors: Self.colors, - blurredBackgroundImage: true, - displayRestorePurchases: true - ), - localization: Self.localization, - assetBaseURL: Self.defaultTemplateBaseURL - ) + static func createDefault(with packages: [Package]) -> Self { + return self.createDefault(with: packages.map(\.identifier)) + } + + static func createDefault(with packageIdentifiers: [String]) -> Self { + return .init( + template: .multiPackageBold, + config: .init( + packages: packageIdentifiers, + images: .init(background: Self.backgroundImage), + colors: Self.colors, + blurredBackgroundImage: true, + displayRestorePurchases: true + ), + localization: Self.localization, + assetBaseURL: Self.defaultTemplateBaseURL + ) + } } @@ -91,7 +93,11 @@ struct DefaultPaywall_Previews: PreviewProvider { identifier: "offering", serverDescription: "Main offering", metadata: [:], - paywall: .default, + paywall: .createDefault(with: [ + TestData.weeklyPackage, + TestData.monthlyPackage, + TestData.annualPackage + ]), availablePackages: TestData.packages ) diff --git a/RevenueCatUI/PaywallView.swift b/RevenueCatUI/PaywallView.swift index 65efd94f95..7346a6f9e9 100644 --- a/RevenueCatUI/PaywallView.swift +++ b/RevenueCatUI/PaywallView.swift @@ -108,7 +108,7 @@ public struct PaywallView: View { LoadedOfferingPaywallView( offering: offering, paywall: paywall, - mode: mode, + mode: self.mode, introEligibility: checker, purchaseHandler: purchaseHandler ) @@ -121,8 +121,8 @@ public struct PaywallView: View { AnyView( LoadedOfferingPaywallView( offering: offering, - paywall: .default, - mode: mode, + paywall: .createDefault(with: offering.availablePackages), + mode: self.mode, introEligibility: checker, purchaseHandler: purchaseHandler ) diff --git a/RevenueCatUI/Views/LoadingPaywallView.swift b/RevenueCatUI/Views/LoadingPaywallView.swift index ebed3ef410..06a874b851 100644 --- a/RevenueCatUI/Views/LoadingPaywallView.swift +++ b/RevenueCatUI/Views/LoadingPaywallView.swift @@ -21,14 +21,10 @@ struct LoadingPaywallView: View { identifier: Self.offeringIdentifier, serverDescription: "", metadata: [:], - paywall: .default, - availablePackages: [ - Self.monthlyPackage, - Self.weeklyPackage, - Self.annualPackage - ] + paywall: Self.defaultPaywall, + availablePackages: Self.packages ), - paywall: .default, + paywall: Self.defaultPaywall, mode: .fullScreen, introEligibility: Self.introEligibility, purchaseHandler: Self.purchaseHandler @@ -37,6 +33,14 @@ struct LoadingPaywallView: View { .redacted(reason: .placeholder) } + private static let defaultPaywall: PaywallData = .createDefault(with: Self.packages) + + private static let packages: [Package] = [ + Self.monthlyPackage, + Self.weeklyPackage, + Self.annualPackage + ] + } @available(iOS 16.0, macOS 13.0, tvOS 16.0, *)