From 74e255b988cc97632788dedc44ed65d7f4e919c4 Mon Sep 17 00:00:00 2001 From: Minchull Kim Date: Tue, 17 Jun 2025 09:41:15 -0400 Subject: [PATCH] fix crash from using legacy UI from cashappafterpay locale --- .../Components/ComponentsViewController.swift | 2 ++ Sources/Afterpay/Views/BadgeView.swift | 5 ++++- Sources/Afterpay/Views/CompactBadgeView.swift | 5 ++++- Sources/Afterpay/Views/LogoView.swift | 20 +++++++++---------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Example/Example/Components/ComponentsViewController.swift b/Example/Example/Components/ComponentsViewController.swift index 9116f554..ef5f0f7b 100644 --- a/Example/Example/Components/ComponentsViewController.swift +++ b/Example/Example/Components/ComponentsViewController.swift @@ -215,6 +215,8 @@ private final class ContentStackViewController: UIViewController, PriceBreakdown priceBreakdown3.delegate = self priceBreakdown3.logoColorScheme = .dynamic(lightPalette: .darkMono, darkPalette: .lightMono) stack.addArrangedSubview(priceBreakdown3) + let b = BadgeView(colorScheme: .dynamic(lightPalette: .alt, darkPalette: .darkMono)) + stack.addArrangedSubview(b) } let stackConstraints = [ diff --git a/Sources/Afterpay/Views/BadgeView.swift b/Sources/Afterpay/Views/BadgeView.swift index a77bf760..b4ed981f 100644 --- a/Sources/Afterpay/Views/BadgeView.swift +++ b/Sources/Afterpay/Views/BadgeView.swift @@ -12,9 +12,12 @@ import UIKit public class BadgeView: AfterpayLogo { override public init(colorScheme: ColorScheme = .static(.default)) { if Afterpay.isCashAppAfterpayRegion { - assertionFailure("Cash App Afterpay badge is not supported") + #if DEBUG + assertionFailure("Cash App Afterpay compact badge is not supported") + #endif } super.init(colorScheme: colorScheme) + if Afterpay.isCashAppAfterpayRegion { self.isHidden = true } } required init?(coder: NSCoder) { diff --git a/Sources/Afterpay/Views/CompactBadgeView.swift b/Sources/Afterpay/Views/CompactBadgeView.swift index 9771b24f..09932b97 100644 --- a/Sources/Afterpay/Views/CompactBadgeView.swift +++ b/Sources/Afterpay/Views/CompactBadgeView.swift @@ -12,9 +12,12 @@ import UIKit public class CompactBadgeView: AfterpayLogo { override public init(colorScheme: ColorScheme = .static(.default)) { if Afterpay.isCashAppAfterpayRegion { - assertionFailure("Cash App Afterpay compact badge is not supported") + #if DEBUG + assertionFailure("Cash App Afterpay compact badge is not supported") + #endif } super.init(colorScheme: colorScheme) + if Afterpay.isCashAppAfterpayRegion { self.isHidden = true } } required init?(coder: NSCoder) { diff --git a/Sources/Afterpay/Views/LogoView.swift b/Sources/Afterpay/Views/LogoView.swift index 29b50a76..1d7d562a 100644 --- a/Sources/Afterpay/Views/LogoView.swift +++ b/Sources/Afterpay/Views/LogoView.swift @@ -72,17 +72,15 @@ public class AfterpayLogo: UIView { deactivateConstraints() let color = getImageColor() - image = AfterpayAssetProvider.image(named: getImageName(brand: brand.details.lowerCaseName, color: color)) - - ratio = image!.size.height / image!.size.width - - imageView.image = image - imageView.translatesAutoresizingMaskIntoConstraints = false - - addSubview(imageView) - - setImageViewConstraints() - setupConstraints() + if let image = AfterpayAssetProvider.image(named: getImageName(brand: brand.details.lowerCaseName, color: color)) { + self.image = image + ratio = image.size.height / image.size.width + imageView.image = image + imageView.translatesAutoresizingMaskIntoConstraints = false + addSubview(imageView) + setImageViewConstraints() + setupConstraints() + } } internal func setImageViewConstraints() {