Skip to content

Commit

Permalink
Paywalls: fixed error view being displayed on release builds (#3141)
Browse files Browse the repository at this point in the history
Thanks @aboedo for catching this.

I've also improved the API to avoid using `AnyView`.
  • Loading branch information
NachoSoto committed Sep 6, 2023
1 parent 3a6fe35 commit 9bed1b0
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
2 changes: 1 addition & 1 deletion RevenueCatUI/PaywallView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public struct PaywallView: View {
"You can fix this by editing the paywall in the RevenueCat dashboard.\n" +
"The displayed paywall contains default configuration.\n" +
"This error will be hidden in production.",
releaseBehavior: .replacement(AnyView(paywallView))
replacement: paywallView
)
} else {
paywallView
Expand Down
33 changes: 27 additions & 6 deletions RevenueCatUI/Views/DebugErrorView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import SwiftUI

/// A view that displays an error in debug builds
@available(iOS 15.0, macOS 12.0, tvOS 15.0, *)
struct DebugErrorView: View {
struct DebugErrorView<Content: View>: View {

private let description: String
private let releaseBehavior: ReleaseBehavior
Expand All @@ -25,20 +25,20 @@ struct DebugErrorView: View {

case emptyView
case fatalError
case replacement(AnyView)
case replacement(Content)

}

init(_ error: Error, releaseBehavior: ReleaseBehavior) {
init(_ error: Error, replacement content: Content) {
self.init(
(error as NSError).localizedDescription,
releaseBehavior: releaseBehavior
replacement: content
)
}

init(_ description: String, releaseBehavior: ReleaseBehavior) {
init(_ description: String, replacement content: Content) {
self.description = description
self.releaseBehavior = releaseBehavior
self.releaseBehavior = .replacement(content)
}

var body: some View {
Expand All @@ -55,10 +55,14 @@ struct DebugErrorView: View {
#endif

case let .replacement(view):
#if DEBUG
VStack {
self.errorView
view
}
#else
view
#endif

case .fatalError:
#if DEBUG
Expand Down Expand Up @@ -90,3 +94,20 @@ struct DebugErrorView: View {
}

}

@available(iOS 15.0, macOS 12.0, tvOS 15.0, *)
extension DebugErrorView where Content == AnyView {

init(_ error: Error, releaseBehavior: ReleaseBehavior) {
self.init(
(error as NSError).localizedDescription,
releaseBehavior: releaseBehavior
)
}

init(_ description: String, releaseBehavior: ReleaseBehavior) {
self.description = description
self.releaseBehavior = releaseBehavior
}

}

0 comments on commit 9bed1b0

Please sign in to comment.