Skip to content

Commit

Permalink
fix: removing usage of the map for cardview reference (#436)
Browse files Browse the repository at this point in the history
* fix: removing usage of the map for cardview reference

* fix: move cardfield reference to StripeSdk class
  • Loading branch information
souhe committed Jul 21, 2021
1 parent cb0b58d commit ec34e55
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 51 deletions.
6 changes: 0 additions & 6 deletions ios/CardFieldDelegate.swift

This file was deleted.

25 changes: 5 additions & 20 deletions ios/CardFieldManager.swift
Original file line number Diff line number Diff line change
@@ -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
}


Expand Down
13 changes: 0 additions & 13 deletions ios/CardFieldView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
}
Expand All @@ -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()])
}
Expand Down
13 changes: 1 addition & 12 deletions ios/StripeSdk.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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?
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit ec34e55

Please sign in to comment.