From 0ffe4ef558ec4c5da7ac28cf6d207407cdaad737 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 11:31:15 +1100 Subject: [PATCH 01/13] Add PaymentButton --- Afterpay.xcodeproj/project.pbxproj | 4 ++++ Sources/Afterpay/Views/PaymentButton.swift | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 Sources/Afterpay/Views/PaymentButton.swift diff --git a/Afterpay.xcodeproj/project.pbxproj b/Afterpay.xcodeproj/project.pbxproj index ed0c7591..81b92d47 100644 --- a/Afterpay.xcodeproj/project.pbxproj +++ b/Afterpay.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 6602EF0F25358A8000A0468C /* ColorScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6602EF0E25358A8000A0468C /* ColorScheme.swift */; }; 6605666324E5199500DA588E /* Locales.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6605666224E5199500DA588E /* Locales.swift */; }; 6615F99B24D14620005036F1 /* SVG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6615F99A24D14620005036F1 /* SVG.swift */; }; + 661CFDB62570E7F000D8A1E8 /* PaymentButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661CFDB52570E7F000D8A1E8 /* PaymentButton.swift */; }; 662A3AED24A999A500EFD826 /* CheckoutResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 662A3AEC24A999A500EFD826 /* CheckoutResult.swift */; }; 6635B95F24CAA9F000EBB3A6 /* ConfigurationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6635B95E24CAA9F000EBB3A6 /* ConfigurationTests.swift */; }; 6640C15224D8E1A700F7F4CC /* Macaw in Frameworks */ = {isa = PBXBuildFile; productRef = 6640C15124D8E1A700F7F4CC /* Macaw */; }; @@ -48,6 +49,7 @@ 6602EF0E25358A8000A0468C /* ColorScheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorScheme.swift; sourceTree = ""; }; 6605666224E5199500DA588E /* Locales.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Locales.swift; sourceTree = ""; }; 6615F99A24D14620005036F1 /* SVG.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SVG.swift; sourceTree = ""; }; + 661CFDB52570E7F000D8A1E8 /* PaymentButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentButton.swift; sourceTree = ""; }; 662A3AEC24A999A500EFD826 /* CheckoutResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckoutResult.swift; sourceTree = ""; }; 6632E0AE248A0171007F0BD9 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; 6635B95E24CAA9F000EBB3A6 /* ConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationTests.swift; sourceTree = ""; }; @@ -111,6 +113,7 @@ 66EE9BD624DCEC3D00A81C19 /* LinkTextView.swift */, 66483F3A24D7A164000BE6B5 /* PriceBreakdownView.swift */, 66639B5324D2619200C68558 /* SVGView.swift */, + 661CFDB52570E7F000D8A1E8 /* PaymentButton.swift */, ); path = Views; sourceTree = ""; @@ -438,6 +441,7 @@ 6689536C24C96CB5005090B4 /* Configuration.swift in Sources */, 15F7DDB725393BD30011EC25 /* CurrencyFormatter.swift in Sources */, 66DAAC8B24E0CF0100127460 /* PriceBreakdown.swift in Sources */, + 661CFDB62570E7F000D8A1E8 /* PaymentButton.swift in Sources */, 662A3AED24A999A500EFD826 /* CheckoutResult.swift in Sources */, 667AD3542497121200BF94E5 /* CheckoutWebViewController.swift in Sources */, 66F9767C2499A11A001D38FA /* Afterpay.swift in Sources */, diff --git a/Sources/Afterpay/Views/PaymentButton.swift b/Sources/Afterpay/Views/PaymentButton.swift new file mode 100644 index 00000000..42bcba4c --- /dev/null +++ b/Sources/Afterpay/Views/PaymentButton.swift @@ -0,0 +1,13 @@ +// +// PaymentButton.swift +// Afterpay +// +// Created by Adam Campbell on 27/11/20. +// Copyright © 2020 Afterpay. All rights reserved. +// + +import Foundation +import UIKit + +public final class PaymentButton: UIButton { +} From 40a614c7d1e5a150b864136d899d6f569217b9a7 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 14:28:38 +1100 Subject: [PATCH 02/13] Specify badge in the SVG names --- Sources/Afterpay/Resources/SVG.swift | 16 ++++++++-------- .../Afterpay/Resources/SVGConfiguration.swift | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Sources/Afterpay/Resources/SVG.swift b/Sources/Afterpay/Resources/SVG.swift index 0128383a..9db50c00 100644 --- a/Sources/Afterpay/Resources/SVG.swift +++ b/Sources/Afterpay/Resources/SVG.swift @@ -30,7 +30,7 @@ struct SVG: Equatable { self.svgString = svgString } - static let afterpayBlackOnMint = SVG( + static let afterpayBadgeBlackOnMint = SVG( size: CGSize(width: 1582, height: 551), minimumWidth: 64, svgString: """ @@ -55,7 +55,7 @@ struct SVG: Equatable { """ ) - static let clearpayBlackOnMint = SVG( + static let clearpayBadgeBlackOnMint = SVG( size: CGSize(width: 1620, height: 551), minimumWidth: 64, svgString: """ @@ -74,7 +74,7 @@ struct SVG: Equatable { """ ) - static let afterpayMintOnBlack = SVG( + static let afterpayBadgeMintOnBlack = SVG( size: CGSize(width: 1582, height: 551), minimumWidth: 64, svgString: """ @@ -99,7 +99,7 @@ struct SVG: Equatable { """ ) - static let clearpayMintOnBlack = SVG( + static let clearpayBadgeMintOnBlack = SVG( size: CGSize(width: 1620, height: 551), minimumWidth: 64, svgString: """ @@ -118,7 +118,7 @@ struct SVG: Equatable { """ ) - static let afterpayWhiteOnBlack: SVG = SVG( + static let afterpayBadgeWhiteOnBlack: SVG = SVG( size: CGSize(width: 1582, height: 551), minimumWidth: 64, svgString: """ @@ -143,7 +143,7 @@ struct SVG: Equatable { """ ) - static let clearpayWhiteOnBlack = SVG( + static let clearpayBadgeWhiteOnBlack = SVG( size: CGSize(width: 1620, height: 551), minimumWidth: 64, svgString: """ @@ -162,7 +162,7 @@ struct SVG: Equatable { """ ) - static let afterpayBlackOnWhite: SVG = SVG( + static let afterpayBadgeBlackOnWhite: SVG = SVG( size: CGSize(width: 1582, height: 551), minimumWidth: 64, svgString: """ @@ -187,7 +187,7 @@ struct SVG: Equatable { """ ) - static let clearpayBlackOnWhite = SVG( + static let clearpayBadgeBlackOnWhite = SVG( size: CGSize(width: 1620, height: 551), minimumWidth: 64, svgString: """ diff --git a/Sources/Afterpay/Resources/SVGConfiguration.swift b/Sources/Afterpay/Resources/SVGConfiguration.swift index 3555c865..b55cb6b1 100644 --- a/Sources/Afterpay/Resources/SVGConfiguration.swift +++ b/Sources/Afterpay/Resources/SVGConfiguration.swift @@ -25,21 +25,21 @@ struct BadgeConfiguration: SVGConfiguration { let svgForPalette: (ColorPalette) -> SVG = { palette in switch (palette, locale) { case (.blackOnMint, Locales.greatBritain): - return .clearpayBlackOnMint + return .clearpayBadgeBlackOnMint case (.mintOnBlack, Locales.greatBritain): - return .clearpayMintOnBlack + return .clearpayBadgeMintOnBlack case (.whiteOnBlack, Locales.greatBritain): - return .clearpayWhiteOnBlack + return .clearpayBadgeWhiteOnBlack case (.blackOnWhite, Locales.greatBritain): - return .clearpayBlackOnWhite + return .clearpayBadgeBlackOnWhite case (.blackOnMint, _): - return .afterpayBlackOnMint + return .afterpayBadgeBlackOnMint case (.mintOnBlack, _): - return .afterpayMintOnBlack + return .afterpayBadgeMintOnBlack case (.whiteOnBlack, _): - return .afterpayWhiteOnBlack + return .afterpayBadgeWhiteOnBlack case (.blackOnWhite, _): - return .afterpayBlackOnWhite + return .afterpayBadgeBlackOnWhite } } From e8f98de610ba0784aebeb145efff1796393ead21 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 15:06:02 +1100 Subject: [PATCH 03/13] Add Clearpay Pay Now badges --- Sources/Afterpay/Resources/SVG.swift | 144 +++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/Sources/Afterpay/Resources/SVG.swift b/Sources/Afterpay/Resources/SVG.swift index 9db50c00..ffe904c9 100644 --- a/Sources/Afterpay/Resources/SVG.swift +++ b/Sources/Afterpay/Resources/SVG.swift @@ -206,5 +206,149 @@ struct SVG: Equatable { """ ) + static let clearpayPayNowBlackOnMint = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + + static let clearpayPayNowMintOnBlack = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + + static let clearpayPayNowWhiteOnBlack = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + + static let clearpayPayNowBlackOnWhite = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + } // swiftlint:enable line_length From 0b3d39eb0aaa33ad6218c5327c7d0825db578a22 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 15:46:42 +1100 Subject: [PATCH 04/13] Add afterpay pay now SVGs --- Sources/Afterpay/Resources/SVG.swift | 144 ++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 2 deletions(-) diff --git a/Sources/Afterpay/Resources/SVG.swift b/Sources/Afterpay/Resources/SVG.swift index ffe904c9..ba34c343 100644 --- a/Sources/Afterpay/Resources/SVG.swift +++ b/Sources/Afterpay/Resources/SVG.swift @@ -14,7 +14,7 @@ import Macaw #endif import UIKit -// swiftlint:disable line_length +// swiftlint:disable line_length file_length type_body_length struct SVG: Equatable { let size: CGSize @@ -206,6 +206,41 @@ struct SVG: Equatable { """ ) + static let afterpayPayNowBlackOnMint = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + static let clearpayPayNowBlackOnMint = SVG( size: CGSize(width: 1200, height: 180), minimumWidth: 256, @@ -242,6 +277,41 @@ struct SVG: Equatable { """ ) + static let afterpayPayNowMintOnBlack = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + static let clearpayPayNowMintOnBlack = SVG( size: CGSize(width: 1200, height: 180), minimumWidth: 256, @@ -278,6 +348,41 @@ struct SVG: Equatable { """ ) + static let afterpayPayNowWhiteOnBlack = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + static let clearpayPayNowWhiteOnBlack = SVG( size: CGSize(width: 1200, height: 180), minimumWidth: 256, @@ -314,6 +419,41 @@ struct SVG: Equatable { """ ) + static let afterpayPayNowBlackOnWhite = SVG( + size: CGSize(width: 1200, height: 180), + minimumWidth: 256, + svgString: """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + ) + static let clearpayPayNowBlackOnWhite = SVG( size: CGSize(width: 1200, height: 180), minimumWidth: 256, @@ -351,4 +491,4 @@ struct SVG: Equatable { ) } -// swiftlint:enable line_length +// swiftlint:enable line_length file_length type_body_length From d2b01d7abd19b169b2db815d989a76baf87c1e99 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 15:49:08 +1100 Subject: [PATCH 05/13] Add payment button configuration --- .../Afterpay/Resources/SVGConfiguration.swift | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Sources/Afterpay/Resources/SVGConfiguration.swift b/Sources/Afterpay/Resources/SVGConfiguration.swift index b55cb6b1..78d5eee9 100644 --- a/Sources/Afterpay/Resources/SVGConfiguration.swift +++ b/Sources/Afterpay/Resources/SVGConfiguration.swift @@ -58,3 +58,45 @@ struct BadgeConfiguration: SVGConfiguration { } } + +struct PaymentButtonConfiguration: SVGConfiguration { + + var colorScheme: ColorScheme + + func svg(localizedFor locale: Locale, withTraits traitCollection: UITraitCollection) -> SVG { + let svgForPalette: (ColorPalette) -> SVG = { palette in + switch (palette, locale) { + case (.blackOnMint, Locales.greatBritain): + return .clearpayPayNowBlackOnMint + case (.mintOnBlack, Locales.greatBritain): + return .clearpayPayNowMintOnBlack + case (.whiteOnBlack, Locales.greatBritain): + return .clearpayPayNowWhiteOnBlack + case (.blackOnWhite, Locales.greatBritain): + return .clearpayPayNowBlackOnWhite + case (.blackOnMint, _): + return .afterpayPayNowBlackOnMint + case (.mintOnBlack, _): + return .afterpayPayNowMintOnBlack + case (.whiteOnBlack, _): + return .afterpayPayNowWhiteOnBlack + case (.blackOnWhite, _): + return .afterpayPayNowBlackOnWhite + } + } + + let svg: SVG = { + switch traitCollection.userInterfaceStyle { + case .dark: + return svgForPalette(colorScheme.darkPalette) + case .light, .unspecified: + fallthrough + @unknown default: + return svgForPalette(colorScheme.lightPalette) + } + }() + + return svg + } + +} From b844b9c923dbfd0b5f87b0162931f70be7e612ca Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 16:15:34 +1100 Subject: [PATCH 06/13] Implement Payment Button and use it in the example project --- .../Example/Purchase/CartViewController.swift | 10 ++-- Sources/Afterpay/Views/PaymentButton.swift | 60 +++++++++++++++++++ 2 files changed, 65 insertions(+), 5 deletions(-) diff --git a/Example/Example/Purchase/CartViewController.swift b/Example/Example/Purchase/CartViewController.swift index b8f306f7..50145715 100644 --- a/Example/Example/Purchase/CartViewController.swift +++ b/Example/Example/Purchase/CartViewController.swift @@ -6,6 +6,7 @@ // Copyright © 2020 Afterpay. All rights reserved. // +import Afterpay import Foundation final class CartViewController: UIViewController, UITableViewDataSource { @@ -44,9 +45,8 @@ final class CartViewController: UIViewController, UITableViewDataSource { tableView.register(ProductCell.self, forCellReuseIdentifier: productCellIdentifier) tableView.register(TitleSubtitleCell.self, forCellReuseIdentifier: titleSubtitleCellIdentifier) - let payButton: UIButton = .primaryButton + let payButton: UIButton = PaymentButton() payButton.isEnabled = cart.payEnabled - payButton.setTitle("Pay with Afterpay", for: .normal) payButton.addTarget(self, action: #selector(didTapPay), for: .touchUpInside) view.addSubview(tableView) @@ -57,9 +57,9 @@ final class CartViewController: UIViewController, UITableViewDataSource { tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), tableView.bottomAnchor.constraint(equalTo: payButton.topAnchor), - payButton.leadingAnchor.constraint(equalTo: view.leadingAnchor), - payButton.trailingAnchor.constraint(equalTo: view.trailingAnchor), - payButton.bottomAnchor.constraint(equalTo: view.readableContentGuide.bottomAnchor), + payButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16), + payButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16), + payButton.bottomAnchor.constraint(equalTo: view.readableContentGuide.bottomAnchor, constant: -16), ]) } diff --git a/Sources/Afterpay/Views/PaymentButton.swift b/Sources/Afterpay/Views/PaymentButton.swift index 42bcba4c..71e58ea1 100644 --- a/Sources/Afterpay/Views/PaymentButton.swift +++ b/Sources/Afterpay/Views/PaymentButton.swift @@ -10,4 +10,64 @@ import Foundation import UIKit public final class PaymentButton: UIButton { + + public var colorScheme: ColorScheme = .static(.blackOnMint) { + didSet { renderImage() } + } + + private var configuration: SVGConfiguration { + PaymentButtonConfiguration(colorScheme: colorScheme) + } + + public init(colorScheme: ColorScheme = .static(.blackOnMint)) { + self.colorScheme = colorScheme + + super.init(frame: .zero) + + sharedInit() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + sharedInit() + } + + private func sharedInit() { + let locale = getConfiguration()?.locale ?? Locales.unitedStates + let svg = configuration.svg(localizedFor: locale, withTraits: traitCollection) + + NSLayoutConstraint.activate([ + heightAnchor.constraint(equalTo: widthAnchor, multiplier: svg.aspectRatio), + widthAnchor.constraint(greaterThanOrEqualToConstant: svg.minimumWidth), + ]) + + translatesAutoresizingMaskIntoConstraints = false + adjustsImageWhenHighlighted = true + adjustsImageWhenDisabled = true + } + + private var previousBounds: CGRect = .zero + + public override func layoutSubviews() { + super.layoutSubviews() + + if bounds != previousBounds { + renderImage() + previousBounds = bounds + } + } + + private func renderImage() { + let svgView = SVGView(svgConfiguration: configuration) + svgView.frame = bounds + + let renderer = UIGraphicsImageRenderer(size: svgView.bounds.size) + let image = renderer.image { rendererContext in + svgView.layer.render(in: rendererContext.cgContext) + } + + setImage(image, for: .normal) + } + } From a65ec8bcf3647b3d34aa5e2329f561203e9d6b97 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 16:18:33 +1100 Subject: [PATCH 07/13] Ensure the image is rendered when the traits affect the svg --- Sources/Afterpay/Views/PaymentButton.swift | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Sources/Afterpay/Views/PaymentButton.swift b/Sources/Afterpay/Views/PaymentButton.swift index 71e58ea1..f4a654db 100644 --- a/Sources/Afterpay/Views/PaymentButton.swift +++ b/Sources/Afterpay/Views/PaymentButton.swift @@ -19,6 +19,8 @@ public final class PaymentButton: UIButton { PaymentButtonConfiguration(colorScheme: colorScheme) } + private var locale: Locale { getConfiguration()?.locale ?? Locales.unitedStates } + public init(colorScheme: ColorScheme = .static(.blackOnMint)) { self.colorScheme = colorScheme @@ -34,7 +36,6 @@ public final class PaymentButton: UIButton { } private func sharedInit() { - let locale = getConfiguration()?.locale ?? Locales.unitedStates let svg = configuration.svg(localizedFor: locale, withTraits: traitCollection) NSLayoutConstraint.activate([ @@ -58,6 +59,18 @@ public final class PaymentButton: UIButton { } } + public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + let svgForTraits = { [locale, configuration] traitCollection in + configuration.svg(localizedFor: locale, withTraits: traitCollection) + } + + if previousTraitCollection.map(svgForTraits) != svgForTraits(traitCollection) { + renderImage() + } + } + private func renderImage() { let svgView = SVGView(svgConfiguration: configuration) svgView.frame = bounds From e63c1dc5fe76932c4e0c73780b4fe8e84d47b7a5 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Mon, 30 Nov 2020 16:41:28 +1100 Subject: [PATCH 08/13] Rename render image function to update image Also uses image size to determine if size needs updating --- Sources/Afterpay/Views/PaymentButton.swift | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Sources/Afterpay/Views/PaymentButton.swift b/Sources/Afterpay/Views/PaymentButton.swift index f4a654db..5c03bcb2 100644 --- a/Sources/Afterpay/Views/PaymentButton.swift +++ b/Sources/Afterpay/Views/PaymentButton.swift @@ -12,7 +12,7 @@ import UIKit public final class PaymentButton: UIButton { public var colorScheme: ColorScheme = .static(.blackOnMint) { - didSet { renderImage() } + didSet { updateImage() } } private var configuration: SVGConfiguration { @@ -48,14 +48,11 @@ public final class PaymentButton: UIButton { adjustsImageWhenDisabled = true } - private var previousBounds: CGRect = .zero - public override func layoutSubviews() { super.layoutSubviews() - if bounds != previousBounds { - renderImage() - previousBounds = bounds + if image(for: .normal)?.size != bounds.size { + updateImage() } } @@ -67,11 +64,11 @@ public final class PaymentButton: UIButton { } if previousTraitCollection.map(svgForTraits) != svgForTraits(traitCollection) { - renderImage() + updateImage() } } - private func renderImage() { + private func updateImage() { let svgView = SVGView(svgConfiguration: configuration) svgView.frame = bounds From 4de4b5f78fa363151e125fb5c9e0cb40f68ee218 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Tue, 1 Dec 2020 11:28:50 +1100 Subject: [PATCH 09/13] Update documentation to include Payment Button --- Images/button_black_on_mint.png | Bin 0 -> 27012 bytes Images/button_black_on_white.png | Bin 0 -> 25443 bytes Images/button_mint_on_black.png | Bin 0 -> 27341 bytes Images/button_white_on_black.png | Bin 0 -> 25415 bytes README.md | 38 +++++++++++++++++++++++-------- 5 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 Images/button_black_on_mint.png create mode 100644 Images/button_black_on_white.png create mode 100644 Images/button_mint_on_black.png create mode 100644 Images/button_white_on_black.png diff --git a/Images/button_black_on_mint.png b/Images/button_black_on_mint.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8840335b399176c0ce014acca3d372699d8640 GIT binary patch literal 27012 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 literal 0 HcmV?d00001 diff --git a/Images/button_black_on_white.png b/Images/button_black_on_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7e81a1c78764c63253fa6106976d2aadba467f2e GIT binary patch literal 25443 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 a3f*K@gE-%RMy!$lHG$RAKVEv&KJ>pKvZzD= literal 0 HcmV?d00001 diff --git a/Images/button_mint_on_black.png b/Images/button_mint_on_black.png new file mode 100644 index 0000000000000000000000000000000000000000..bc71f3086b2388f818ea0e811a7f37083391e649 GIT binary patch literal 27341 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 Date: Tue, 1 Dec 2020 11:29:03 +1100 Subject: [PATCH 10/13] Update Package.resolved --- Package.resolved | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Package.resolved b/Package.resolved index 6ff3d42d..8871298e 100644 --- a/Package.resolved +++ b/Package.resolved @@ -2,12 +2,21 @@ "object": { "pins": [ { - "package": "SwiftSVG", - "repositoryURL": "https://github.com/mchoe/SwiftSVG.git", + "package": "Macaw", + "repositoryURL": "https://github.com/exyte/Macaw.git", "state": { "branch": null, - "revision": "c3a8866a25ace169ee8e5c037670ba14aa59606f", - "version": "2.3.2" + "revision": "7cb4f5876423435e1a41628417230accc37284c6", + "version": "0.9.7" + } + }, + { + "package": "SWXMLHash", + "repositoryURL": "https://github.com/drmohundro/SWXMLHash", + "state": { + "branch": null, + "revision": "a4931e5c3bafbedeb1601d3bb76bbe835c6d475a", + "version": "5.0.1" } } ] From 5c016d96139b98f752d228b96c96254555a4f507 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Tue, 1 Dec 2020 11:37:44 +1100 Subject: [PATCH 11/13] Bump version to 1.4.0 --- Configurations/Afterpay-Shared.xcconfig | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Configurations/Afterpay-Shared.xcconfig b/Configurations/Afterpay-Shared.xcconfig index c5bc493d..c7989288 100644 --- a/Configurations/Afterpay-Shared.xcconfig +++ b/Configurations/Afterpay-Shared.xcconfig @@ -169,4 +169,4 @@ TARGETED_DEVICE_FAMILY = 1,2 // This setting defines the user-visible version of the project. The value corresponds to // the `CFBundleShortVersionString` key in your app's Info.plist. -MARKETING_VERSION = 1.3.0 +MARKETING_VERSION = 1.4.0 diff --git a/README.md b/README.md index 691e36dd..7398bf41 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ Add the Afterpay SDK as a [git submodule][git-submodule] by navigating to the ro ``` git submodule add https://github.com/afterpay/sdk-ios.git Afterpay cd Afterpay -git checkout 1.3.0 +git checkout 1.4.0 ``` #### Project / Workspace Integration @@ -190,7 +190,7 @@ Below are examples of the badge in each of it's color schemes: ### Payment Button -The Afterpay Payment Button is a subclass of `UIButton` that can be scaled to suit your layout, to guaruntee legibility it has a maximum width constraint of 256 points. +The Afterpay Payment Button is a subclass of `UIButton` that can be scaled to suit your layout, to guarantee legibility it has a maximum width constraint of 256 points. Below are examples of the button in each of the color schemes: | Mint and Black | Black and White | From cb6ad9a370b8e6a0389a1d702ba75dade9aee4c0 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Tue, 1 Dec 2020 11:50:23 +1100 Subject: [PATCH 12/13] Make the wording consistent across view descriptions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7398bf41..69dff386 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,7 @@ The Afterpay badge is a simple `UIView` that can be scaled to suit the needs of let badgeView = BadgeView() ``` -Below are examples of the badge in each of it's color schemes: +Below are examples of the badge in each of the color schemes: ![Black on Mint badge][badge-black-on-mint] ![Mint on Black badge][badge-mint-on-black] ![White on Black badge][badge-white-on-black] ![Black on White badge][badge-black-on-white] ### Payment Button From 77f98a335b3345222556a617bf7474c3b2ee6a76 Mon Sep 17 00:00:00 2001 From: Adam Campbell Date: Tue, 1 Dec 2020 14:00:48 +1100 Subject: [PATCH 13/13] Update accessibility and ensure color schemes are passed through --- Sources/Afterpay/Afterpay.swift | 4 ++++ Sources/Afterpay/Resources/SVGConfiguration.swift | 13 +++++++++++++ Sources/Afterpay/Resources/Strings.swift | 2 ++ Sources/Afterpay/Views/BadgeView.swift | 6 ++++-- Sources/Afterpay/Views/PaymentButton.swift | 8 ++++---- Sources/Afterpay/Views/PriceBreakdownView.swift | 9 ++++++--- Sources/Afterpay/Views/SVGView.swift | 10 ++++------ 7 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Sources/Afterpay/Afterpay.swift b/Sources/Afterpay/Afterpay.swift index ff8b8906..844a397d 100644 --- a/Sources/Afterpay/Afterpay.swift +++ b/Sources/Afterpay/Afterpay.swift @@ -94,3 +94,7 @@ public func setConfiguration(_ configuration: Configuration?) { notificationCenter.post(name: .configurationUpdated, object: previousConfiguration) } + +func getLocale() -> Locale { + getConfiguration()?.locale ?? Locales.unitedStates +} diff --git a/Sources/Afterpay/Resources/SVGConfiguration.swift b/Sources/Afterpay/Resources/SVGConfiguration.swift index 78d5eee9..c1de543f 100644 --- a/Sources/Afterpay/Resources/SVGConfiguration.swift +++ b/Sources/Afterpay/Resources/SVGConfiguration.swift @@ -14,6 +14,7 @@ protocol SVGConfiguration { var colorScheme: ColorScheme { get set } func svg(localizedFor locale: Locale, withTraits traitCollection: UITraitCollection) -> SVG + func accessibilityLabel(localizedFor locale: Locale) -> String } @@ -57,6 +58,10 @@ struct BadgeConfiguration: SVGConfiguration { return svg } + func accessibilityLabel(localizedFor locale: Locale) -> String { + locale == Locales.greatBritain ? Strings.accessibleClearpay : Strings.accessibleAfterpay + } + } struct PaymentButtonConfiguration: SVGConfiguration { @@ -99,4 +104,12 @@ struct PaymentButtonConfiguration: SVGConfiguration { return svg } + func accessibilityLabel(localizedFor locale: Locale) -> String { + let accessiblePaymentMethod = locale == Locales.greatBritain + ? Strings.accessibleClearpay + : Strings.accessibleAfterpay + + return "\(Strings.payNowWith) \(accessiblePaymentMethod)" + } + } diff --git a/Sources/Afterpay/Resources/Strings.swift b/Sources/Afterpay/Resources/Strings.swift index 4b60bc9c..66157345 100644 --- a/Sources/Afterpay/Resources/Strings.swift +++ b/Sources/Afterpay/Resources/Strings.swift @@ -16,6 +16,7 @@ enum Strings { static let info = "Info" static let orPayWith = "or pay with" + static let payNowWith = "pay now with" // MARK: - String Formats @@ -26,5 +27,6 @@ enum Strings { // MARK: - Accessible Strings static let accessibleAfterpay = "after pay" + static let accessibleClearpay = "clear pay" } diff --git a/Sources/Afterpay/Views/BadgeView.swift b/Sources/Afterpay/Views/BadgeView.swift index 8e830826..0dcd5d77 100644 --- a/Sources/Afterpay/Views/BadgeView.swift +++ b/Sources/Afterpay/Views/BadgeView.swift @@ -32,13 +32,15 @@ public final class BadgeView: UIView { } private func sharedInit() { + let configuration = BadgeConfiguration(colorScheme: colorScheme) + // Accessibility isAccessibilityElement = true accessibilityTraits = [.staticText] - accessibilityLabel = Strings.accessibleAfterpay + accessibilityLabel = configuration.accessibilityLabel(localizedFor: getLocale()) // SVG Layout - svgView = SVGView(svgConfiguration: BadgeConfiguration()) + svgView = SVGView(svgConfiguration: configuration) addSubview(svgView) diff --git a/Sources/Afterpay/Views/PaymentButton.swift b/Sources/Afterpay/Views/PaymentButton.swift index 5c03bcb2..e9ee5445 100644 --- a/Sources/Afterpay/Views/PaymentButton.swift +++ b/Sources/Afterpay/Views/PaymentButton.swift @@ -19,8 +19,6 @@ public final class PaymentButton: UIButton { PaymentButtonConfiguration(colorScheme: colorScheme) } - private var locale: Locale { getConfiguration()?.locale ?? Locales.unitedStates } - public init(colorScheme: ColorScheme = .static(.blackOnMint)) { self.colorScheme = colorScheme @@ -36,6 +34,7 @@ public final class PaymentButton: UIButton { } private func sharedInit() { + let locale = getLocale() let svg = configuration.svg(localizedFor: locale, withTraits: traitCollection) NSLayoutConstraint.activate([ @@ -43,6 +42,7 @@ public final class PaymentButton: UIButton { widthAnchor.constraint(greaterThanOrEqualToConstant: svg.minimumWidth), ]) + accessibilityLabel = configuration.accessibilityLabel(localizedFor: locale) translatesAutoresizingMaskIntoConstraints = false adjustsImageWhenHighlighted = true adjustsImageWhenDisabled = true @@ -59,8 +59,8 @@ public final class PaymentButton: UIButton { public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - let svgForTraits = { [locale, configuration] traitCollection in - configuration.svg(localizedFor: locale, withTraits: traitCollection) + let svgForTraits = { [configuration] traitCollection in + configuration.svg(localizedFor: getLocale(), withTraits: traitCollection) } if previousTraitCollection.map(svgForTraits) != svgForTraits(traitCollection) { diff --git a/Sources/Afterpay/Views/PriceBreakdownView.swift b/Sources/Afterpay/Views/PriceBreakdownView.swift index a88e88b8..d7710ff9 100644 --- a/Sources/Afterpay/Views/PriceBreakdownView.swift +++ b/Sources/Afterpay/Views/PriceBreakdownView.swift @@ -52,7 +52,9 @@ public final class PriceBreakdownView: UIView { } }() - public var badgeColorScheme: ColorScheme = .static(.blackOnMint) + public var badgeColorScheme: ColorScheme = .static(.blackOnMint) { + didSet { updateAttributedText() } + } public var fontProvider: (UITraitCollection) -> UIFont = { traitCollection in .preferredFont(forTextStyle: .body, compatibleWith: traitCollection) @@ -105,7 +107,8 @@ public final class PriceBreakdownView: UIView { } @objc private func updateAttributedText() { - let badgeSVGView = SVGView(svgConfiguration: BadgeConfiguration()) + let configuration = BadgeConfiguration(colorScheme: badgeColorScheme) + let badgeSVGView = SVGView(svgConfiguration: configuration) let svg = badgeSVGView.svg let font: UIFont = fontProvider(traitCollection) @@ -138,7 +141,7 @@ public final class PriceBreakdownView: UIView { let attachment = NSTextAttachment() attachment.image = image attachment.bounds = CGRect(origin: .init(x: 0, y: font.descender), size: image.size) - attachment.accessibilityLabel = Strings.accessibleAfterpay + attachment.accessibilityLabel = configuration.accessibilityLabel(localizedFor: getLocale()) return .init(attachment: attachment) }() diff --git a/Sources/Afterpay/Views/SVGView.swift b/Sources/Afterpay/Views/SVGView.swift index c84242f4..a055e205 100644 --- a/Sources/Afterpay/Views/SVGView.swift +++ b/Sources/Afterpay/Views/SVGView.swift @@ -16,14 +16,12 @@ import UIKit final class SVGView: Macaw.SVGView { - var svg: SVG { svgConfiguration.svg(localizedFor: locale, withTraits: traitCollection) } + var svg: SVG { svgConfiguration.svg(localizedFor: getLocale(), withTraits: traitCollection) } var svgConfiguration: SVGConfiguration { didSet { svgDidChange() } } - private var locale: Locale { getConfiguration()?.locale ?? Locales.unitedStates } - init(svgConfiguration: SVGConfiguration) { self.svgConfiguration = svgConfiguration @@ -72,7 +70,7 @@ final class SVGView: Macaw.SVGView { svgConfiguration.svg(localizedFor: locale, withTraits: traitCollection) } - if svgForLocale(previousLocale) != svgForLocale(locale) { + if svgForLocale(previousLocale) != svgForLocale(getLocale()) { svgDidChange() } } @@ -80,8 +78,8 @@ final class SVGView: Macaw.SVGView { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - let svgForTraits = { [locale, svgConfiguration] traitCollection in - svgConfiguration.svg(localizedFor: locale, withTraits: traitCollection) + let svgForTraits = { [svgConfiguration] traitCollection in + svgConfiguration.svg(localizedFor: getLocale(), withTraits: traitCollection) } if previousTraitCollection.map(svgForTraits) != svgForTraits(traitCollection) {