From ec34e553a631f684efa2199b6ef5efeb6873d8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C5=82obus?= Date: Wed, 21 Jul 2021 11:19:36 +0200 Subject: [PATCH] fix: removing usage of the map for cardview reference (#436) * fix: removing usage of the map for cardview reference * fix: move cardfield reference to StripeSdk class --- ios/CardFieldDelegate.swift | 6 ------ ios/CardFieldManager.swift | 25 +++++-------------------- ios/CardFieldView.swift | 13 ------------- ios/StripeSdk.swift | 13 +------------ 4 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 ios/CardFieldDelegate.swift diff --git a/ios/CardFieldDelegate.swift b/ios/CardFieldDelegate.swift deleted file mode 100644 index a75067530..000000000 --- a/ios/CardFieldDelegate.swift +++ /dev/null @@ -1,6 +0,0 @@ -import Foundation - -protocol CardFieldDelegate { - func onDidCreateViewInstance(id: String, reference: Any?) -> Void - func onDidDestroyViewInstance(id: String) -> Void -} diff --git a/ios/CardFieldManager.swift b/ios/CardFieldManager.swift index 2a1bd814a..3072b65fa 100644 --- a/ios/CardFieldManager.swift +++ b/ios/CardFieldManager.swift @@ -1,27 +1,12 @@ import Foundation @objc(CardFieldManager) -class CardFieldManager: RCTViewManager, CardFieldDelegate { - public let cardFieldMap: NSMutableDictionary = [:] - - func onDidCreateViewInstance(id: String, reference: Any?) -> Void { - cardFieldMap[id] = reference - } - - func onDidDestroyViewInstance(id: String) { - cardFieldMap[id] = nil - } - - public func getCardFieldReference(id: String) -> Any? { - return self.cardFieldMap[id] - } - +class CardFieldManager: RCTViewManager { override func view() -> UIView! { - // as it's reasonable we handle only one CardField component on the same screen - if (cardFieldMap[CARD_FIELD_INSTANCE_ID] != nil) { - // TODO: throw an exception - } - return CardFieldView(delegate: self) + let cardField = CardFieldView() + let stripeSdk = bridge.module(forName: "StripeSdk") as? StripeSdk + stripeSdk?.cardFieldView = cardField; + return cardField } diff --git a/ios/CardFieldView.swift b/ios/CardFieldView.swift index 08e646fa4..2c3e021ce 100644 --- a/ios/CardFieldView.swift +++ b/ios/CardFieldView.swift @@ -13,8 +13,6 @@ class CardFieldView: UIView, STPPaymentCardTextFieldDelegate { public var cardParams: STPPaymentMethodCardParams? = nil - public var delegate: CardFieldDelegate? - @objc var postalCodeEnabled: Bool = true { didSet { cardField.postalCodeEntryEnabled = postalCodeEnabled @@ -95,13 +93,6 @@ class CardFieldView: UIView, STPPaymentCardTextFieldDelegate { self.addSubview(cardField) } - convenience init(delegate: CardFieldDelegate) { - self.init(frame: CGRect.zero) - self.delegate = delegate - - self.delegate?.onDidCreateViewInstance(id: CARD_FIELD_INSTANCE_ID, reference: self) - } - func focus() { cardField.becomeFirstResponder() } @@ -114,10 +105,6 @@ class CardFieldView: UIView, STPPaymentCardTextFieldDelegate { cardField.clear() } - override func removeFromSuperview() { - self.delegate?.onDidDestroyViewInstance(id: CARD_FIELD_INSTANCE_ID) - } - func paymentCardTextFieldDidEndEditing(_ textField: STPPaymentCardTextField) { onFocusChange?(["focusedField": NSNull()]) } diff --git a/ios/StripeSdk.swift b/ios/StripeSdk.swift index ffe2a3360..5690028c0 100644 --- a/ios/StripeSdk.swift +++ b/ios/StripeSdk.swift @@ -3,6 +3,7 @@ import Stripe @objc(StripeSdk) class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionViewControllerDelegate, UIAdaptivePresentationControllerDelegate { + public var cardFieldView: CardFieldView? = nil var merchantIdentifier: String? = nil private var paymentSheet: PaymentSheet? @@ -213,9 +214,6 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi resolve(Errors.createError(ConfirmPaymentErrorType.Failed.rawValue, "You must provide paymentMethodType")) return } - - let cardFieldUIManager = bridge.module(forName: "CardFieldManager") as? CardFieldManager - let cardFieldView = cardFieldUIManager?.getCardFieldReference(id: CARD_FIELD_INSTANCE_ID) as? CardFieldView var paymentMethodParams: STPPaymentMethodParams? let factory = PaymentMethodFactory.init(params: params, cardFieldView: cardFieldView) @@ -453,9 +451,6 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi return } - let cardFieldUIManager = bridge.module(forName: "CardFieldManager") as? CardFieldManager - let cardFieldView = cardFieldUIManager?.getCardFieldReference(id: CARD_FIELD_INSTANCE_ID) as? CardFieldView - var paymentMethodParams: STPPaymentMethodParams? let factory = PaymentMethodFactory.init(params: params, cardFieldView: cardFieldView) @@ -498,9 +493,6 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi } } - let cardFieldUIManager = bridge.module(forName: "CardFieldManager") as? CardFieldManager - let cardFieldView = cardFieldUIManager?.getCardFieldReference(id: CARD_FIELD_INSTANCE_ID) as? CardFieldView - guard let cardParams = cardFieldView?.cardParams else { resolve(Errors.createError(CreateTokenErrorType.Failed.rawValue, "Card details not complete")) return @@ -564,9 +556,6 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi ) -> Void { self.confirmPaymentResolver = resolve self.confirmPaymentClientSecret = paymentIntentClientSecret - - let cardFieldUIManager = bridge.module(forName: "CardFieldManager") as? CardFieldManager - let cardFieldView = cardFieldUIManager?.getCardFieldReference(id: CARD_FIELD_INSTANCE_ID) as? CardFieldView let paymentMethodId = params["paymentMethodId"] as? String let paymentIntentParams = STPPaymentIntentParams(clientSecret: paymentIntentClientSecret)