From cde39f9f7a00f7434182d829e1ea84a519d80d32 Mon Sep 17 00:00:00 2001 From: NachoSoto Date: Mon, 31 Jul 2023 20:55:58 +0200 Subject: [PATCH] `Paywalls`: added default template to `SamplePaywallsList` (#2928) This allows debugging the default template. ![Simulator Screenshot - iPhone 14 Pro - 2023-07-31 at 13 05 39](https://github.com/RevenueCat/purchases-ios/assets/685609/bb683d5d-31c1-402d-9213-064fd13071d6) --- .../SimpleApp/SimpleApp/SamplePaywalls.swift | 10 ++++ .../SimpleApp/Views/SamplePaywallsList.swift | 60 +++++++++++++++---- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/Tests/TestingApps/SimpleApp/SimpleApp/SamplePaywalls.swift b/Tests/TestingApps/SimpleApp/SimpleApp/SamplePaywalls.swift index 32b76e7409..d79c7f2c2e 100644 --- a/Tests/TestingApps/SimpleApp/SimpleApp/SamplePaywalls.swift +++ b/Tests/TestingApps/SimpleApp/SimpleApp/SamplePaywalls.swift @@ -38,6 +38,16 @@ final class SamplePaywallLoader { ) } + func offeringWithDefaultPaywall() -> Offering { + return .init( + identifier: Self.offeringIdentifier, + serverDescription: Self.offeringIdentifier, + metadata: [:], + paywall: nil, + availablePackages: self.packages + ) + } + private func paywall(for template: PaywallTemplate) -> PaywallData { switch template { case .onePackageStandard: diff --git a/Tests/TestingApps/SimpleApp/SimpleApp/Views/SamplePaywallsList.swift b/Tests/TestingApps/SimpleApp/SimpleApp/Views/SamplePaywallsList.swift index e9f2931ff7..d1e69006ee 100644 --- a/Tests/TestingApps/SimpleApp/SimpleApp/Views/SamplePaywallsList.swift +++ b/Tests/TestingApps/SimpleApp/SimpleApp/Views/SamplePaywallsList.swift @@ -16,7 +16,7 @@ struct SamplePaywallsList: View { private var loader: Result? @State - private var selectedTemplate: PaywallTemplate? + private var display: Display? var body: some View { self.content @@ -35,8 +35,13 @@ struct SamplePaywallsList: View { switch self.loader { case let .success(loader): self.list(with: loader) - .sheet(item: self.$selectedTemplate) { template in - PaywallView(offering: loader.offering(for: template)) + .sheet(item: self.$display) { display in + switch display { + case let .template(template): + PaywallView(offering: loader.offering(for: template)) + case .defaultTemplate: + PaywallView(offering: loader.offeringWithDefaultPaywall()) + } } case let .failure(error): @@ -52,26 +57,61 @@ struct SamplePaywallsList: View { Section("Templates") { ForEach(PaywallTemplate.allCases, id: \.rawValue) { template in Button { - self.selectedTemplate = template + self.display = .template(template) } label: { - Text(template.name) - .frame(maxWidth: .infinity, alignment: .leading) - .contentShape(Rectangle()) + TemplateLabel(name: template.name) } - .buttonStyle(.plain) + } + } + + Section("Other") { + Button { + self.display = .defaultTemplate + } label: { + TemplateLabel(name: "Default template") } } } + .frame(maxWidth: .infinity) + .buttonStyle(.plain) + } + +} + +private struct TemplateLabel: View { + + var name: String + + var body: some View { + Text(self.name) + .frame(maxWidth: .infinity, alignment: .leading) + .contentShape(Rectangle()) } } // MARK: - -extension PaywallTemplate: Identifiable { +private extension SamplePaywallsList { + + enum Display { + + case template(PaywallTemplate) + case defaultTemplate + + } + +} + +extension SamplePaywallsList.Display: Identifiable { public var id: String { - return self.rawValue + switch self { + case let .template(template): + return template.rawValue + case .defaultTemplate: + return "default" + } } }