fidel-react-native 1.6.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +1 -51
  2. package/README.md +4 -378
  3. package/android/build.gradle +12 -8
  4. package/android/jacoco.gradle +2 -2
  5. package/android/src/main/java/com/fidelreactlibrary/FidelModule.java +61 -44
  6. package/android/src/main/java/com/fidelreactlibrary/FidelPackage.java +64 -49
  7. package/android/src/main/java/com/fidelreactlibrary/adapters/CardVerificationConfigurationProperties.java +22 -0
  8. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardSchemesAdapter.java +46 -29
  9. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapter.java +57 -0
  10. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCountryAdapter.java +47 -19
  11. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapter.java +46 -0
  12. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupAdapter.java +108 -6
  13. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupProperties.java +67 -0
  14. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapter.java +35 -0
  15. package/android/src/main/java/com/fidelreactlibrary/adapters/ImageFromReadableMapAdapter.java +5 -1
  16. package/android/src/main/java/com/fidelreactlibrary/adapters/ResultsAdapter.java +288 -0
  17. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardSchemesAdapter.java +6 -2
  18. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardVerificationChoiceAdapter.java +11 -0
  19. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CountryAdapter.java +14 -3
  20. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataAdapter.java +5 -0
  21. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/ProgramTypeAdapter.java +11 -0
  22. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/VerificationConfigurationAdapter.java +9 -0
  23. package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEvent.java +17 -0
  24. package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEventEmitter.java +24 -0
  25. package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationChoiceObserver.java +29 -0
  26. package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationStartedObserver.java +31 -0
  27. package/android/src/main/java/com/fidelreactlibrary/events/ResultsObserver.java +72 -0
  28. package/android/src/test/java/com/fidelreactlibrary/FidelModuleTests.java +50 -31
  29. package/android/src/test/java/com/fidelreactlibrary/FidelPackageTests.java +0 -1
  30. package/android/src/test/java/com/fidelreactlibrary/{FidelCardSchemesAdapterTests.java → adapters/FidelCardSchemesAdapterTests.java} +51 -47
  31. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapterTest.java +70 -0
  32. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCountryAdapterTests.java +157 -0
  33. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapterTests.java +54 -0
  34. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelSetupAdapterTests.java +900 -0
  35. package/android/src/test/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapterTest.java +51 -0
  36. package/android/src/test/java/com/fidelreactlibrary/adapters/ResultsAdapterTests.java +74 -0
  37. package/android/src/test/java/com/fidelreactlibrary/{ErrorEventEmitterTests.java → events/BridgeLibraryEventEmitterTests.java} +18 -7
  38. package/android/src/test/java/com/fidelreactlibrary/events/BridgeLibraryEventTests.java +17 -0
  39. package/android/src/test/java/com/fidelreactlibrary/events/CardVerificationStartedObserverTests.java +49 -0
  40. package/android/src/test/java/com/fidelreactlibrary/events/ResultsObserverTests.java +38 -0
  41. package/android/src/test/java/com/fidelreactlibrary/fakes/CardSchemeAdapterStub.java +17 -6
  42. package/android/src/test/java/com/fidelreactlibrary/fakes/ConstantsProviderStub.java +2 -2
  43. package/android/src/test/java/com/fidelreactlibrary/fakes/CountryAdapterStub.java +25 -10
  44. package/android/src/test/java/com/fidelreactlibrary/fakes/{DataConverterStub.java → DataAdapterStub.java} +3 -3
  45. package/android/src/test/java/com/fidelreactlibrary/fakes/ProgramTypeAdapterStub.java +31 -0
  46. package/android/src/test/java/com/fidelreactlibrary/fakes/ReactContextMock.java +1 -1
  47. package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableArrayStub.java +82 -0
  48. package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableMapStub.java +175 -40
  49. package/android/src/test/java/com/fidelreactlibrary/fakes/VerificationConfigurationAdapterStub.java +13 -0
  50. package/fidel-react-native.podspec +1 -1
  51. package/index.js +78 -19
  52. package/ios/Adapters/CardSchemesAdapter.swift +13 -0
  53. package/ios/Adapters/ConsentDetailsAdapter.swift +19 -0
  54. package/ios/Adapters/EnrollmentResultAdapter.swift +28 -0
  55. package/ios/Adapters/ErrorResultAdapter.swift +71 -0
  56. package/ios/{FLRNImageAdapter.h → Adapters/FLRNImageFromRNAdapter.h} +2 -3
  57. package/ios/Adapters/FidelSetupAdapter.swift +89 -0
  58. package/ios/Adapters/FidelVerificationConfigurationAdapter.swift +19 -0
  59. package/ios/Adapters/VerificationResultAdapter.swift +17 -0
  60. package/ios/CardVerificationConfigurationProperties.swift +14 -0
  61. package/ios/Constants/CardSchemeConstants.swift +38 -0
  62. package/ios/Constants/CardVerificationChoiceConstants.swift +24 -0
  63. package/ios/Constants/CountryConstants.swift +47 -0
  64. package/ios/Constants/EnrollmentErrorTypeConstants.swift +25 -0
  65. package/ios/Constants/ErrorTypeConstants.swift +37 -0
  66. package/ios/Constants/ExportedConstantsProvider.swift +42 -0
  67. package/ios/Constants/ProgramTypeConstants.swift +30 -0
  68. package/ios/Constants/ResultTypeConstants.swift +35 -0
  69. package/ios/Constants/VerificationErrorTypeConstants.swift +29 -0
  70. package/ios/Events/BridgeLibraryEvent.swift +14 -0
  71. package/ios/Events/CardVerificationChoiceSelectedObserver.swift +23 -0
  72. package/ios/Events/CardVerificationStartedObserver.swift +21 -0
  73. package/ios/Events/EventObserver.swift +13 -0
  74. package/ios/Events/JSResultProperties.swift +15 -0
  75. package/ios/Events/JSResultTypes.swift +14 -0
  76. package/ios/Events/ResultsObserver.swift +37 -0
  77. package/ios/FidelSetupProperties.swift +33 -0
  78. package/ios/NativeFidelBridge.m +13 -0
  79. package/ios/NativeFidelBridge.swift +100 -0
  80. package/package.json +1 -4
  81. package/android/src/main/java/com/fidelreactlibrary/adapters/FidelOptionsAdapter.java +0 -121
  82. package/android/src/main/java/com/fidelreactlibrary/adapters/WritableMapDataConverter.java +0 -94
  83. package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataConverter.java +0 -5
  84. package/android/src/main/java/com/fidelreactlibrary/events/CallbackActivityEventListener.java +0 -64
  85. package/android/src/main/java/com/fidelreactlibrary/events/CallbackInput.java +0 -7
  86. package/android/src/main/java/com/fidelreactlibrary/events/ErrorEventEmitter.java +0 -22
  87. package/android/src/test/java/com/fidelreactlibrary/CallbackActivityEventListenerTests.java +0 -133
  88. package/android/src/test/java/com/fidelreactlibrary/FidelCountryAdapterTests.java +0 -74
  89. package/android/src/test/java/com/fidelreactlibrary/FidelOptionsAdapterTests.java +0 -414
  90. package/android/src/test/java/com/fidelreactlibrary/FidelSetupAdapterTests.java +0 -65
  91. package/android/src/test/java/com/fidelreactlibrary/WritableMapDataConverterTests.java +0 -186
  92. package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackInputSpy.java +0 -12
  93. package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackSpy.java +0 -18
  94. package/android/src/test/java/com/fidelreactlibrary/fakes/IntentMock.java +0 -20
  95. package/ios/FLRNCardSchemesAdapter.h +0 -16
  96. package/ios/FLRNCardSchemesFromJSAdapter.h +0 -14
  97. package/ios/FLRNCardSchemesFromJSAdapter.m +0 -39
  98. package/ios/FLRNConstantsProvider.h +0 -15
  99. package/ios/FLRNImageFromRNAdapter.h +0 -14
  100. package/ios/FLRNObjectToDictionaryAdapter.h +0 -15
  101. package/ios/FLRNOptionsAdapter.h +0 -24
  102. package/ios/FLRNOptionsAdapter.m +0 -133
  103. package/ios/FLRNRuntimeObjectToDictionaryAdapter.h +0 -14
  104. package/ios/FLRNRuntimeObjectToDictionaryAdapter.m +0 -36
  105. package/ios/FLRNSDKOptions.h +0 -24
  106. package/ios/FLRNSDKSetupOptions.h +0 -14
  107. package/ios/FLRNSetupAdapter.h +0 -17
  108. package/ios/FLRNSetupAdapter.m +0 -50
  109. package/ios/Fidel.h +0 -20
  110. package/ios/Fidel.m +0 -79
  111. package/ios/RCTConvert+CardScheme.h +0 -33
  112. package/ios/RCTConvert+Options.h +0 -52
  113. package/ios/RCTConvert+Options.m +0 -21
  114. /package/ios/{FLRNImageFromRNAdapter.m → Adapters/FLRNImageFromRNAdapter.m} +0 -0
@@ -0,0 +1,19 @@
1
+ //
2
+ // FidelVerificationConfigurationAdapter.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Valeria Rogatchevskikh on 07/06/23.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ class FidelVerificationConfigurationAdapter: NSObject {
12
+
13
+ func adapt(_ parameters: NSDictionary) -> CardVerificationConfiguration {
14
+ let id = parameters[CardVerificationConfigurationProperties.id.rawValue] as? String ?? ""
15
+ let consentID = parameters[CardVerificationConfigurationProperties.consentID.rawValue] as? String ?? ""
16
+ let last4Digits = parameters[CardVerificationConfigurationProperties.last4Digits.rawValue] as? String ?? nil
17
+ return CardVerificationConfiguration(cardID: id, consentID: consentID, last4Digits: last4Digits)
18
+ }
19
+ }
@@ -0,0 +1,17 @@
1
+ //
2
+ // VerificationResultAdapter.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Gabriel Godoi on 06/10/22.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension VerificationResult{
12
+ var dictionary: [String: Any] {
13
+ return [
14
+ "cardId": cardID,
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,14 @@
1
+ //
2
+ // CardVerificationConfigurationProperties.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Valeria Rogatchevskikh on 07/06/23.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ enum CardVerificationConfigurationProperties: String {
11
+ case id
12
+ case consentID = "consentId"
13
+ case last4Digits
14
+ }
@@ -0,0 +1,38 @@
1
+ //
2
+ // CardSchemeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension CardScheme: ConstantsProvider {
12
+
13
+ var constantKey: String {
14
+ switch self {
15
+ case .americanExpress: return "americanExpress"
16
+ case .visa: return "visa"
17
+ case .mastercard: return "mastercard"
18
+ @unknown default: return "unexpected"
19
+ }
20
+ }
21
+
22
+ static var allCases: Set<CardScheme> = [CardScheme.visa, .mastercard, .americanExpress]
23
+ static var parentKeyName: String = String(describing: Self.self)
24
+
25
+ static func cardSchemesSet(from cardSchemeConstantKeys: [String]) -> Set<CardScheme> {
26
+ return Set<CardScheme>(cardSchemeConstantKeys.compactMap { CardScheme.cardScheme(from: $0) })
27
+ }
28
+
29
+ private static func cardScheme(from constantKey: String) -> CardScheme? {
30
+ switch constantKey {
31
+ case "visa": return .visa
32
+ case "mastercard": return .mastercard
33
+ case "americanExpress": return .americanExpress
34
+ default: return nil
35
+ }
36
+ }
37
+
38
+ }
@@ -0,0 +1,24 @@
1
+ //
2
+ // CardVerificationChoiceConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Valeria Rogatchevskikh on 12/6/23.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension CardVerificationChoice: ConstantsProvider {
12
+
13
+ var constantKey: String {
14
+ switch self {
15
+ case .onTheSpot: return "onTheSpot"
16
+ case .delegatedToThirdParty: return "delegatedToThirdParty"
17
+ @unknown default: return "unexpected"
18
+ }
19
+ }
20
+
21
+ public static var allCases: Set<CardVerificationChoice> = [CardVerificationChoice.onTheSpot, .delegatedToThirdParty]
22
+ static var parentKeyName: String = String(describing: Self.self)
23
+
24
+ }
@@ -0,0 +1,47 @@
1
+ //
2
+ // CountryConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension Country: ConstantsProvider {
12
+
13
+ var constantKey: String {
14
+ switch self {
15
+ case .canada: return "canada"
16
+ case .ireland: return "ireland"
17
+ case .japan: return "japan"
18
+ case .sweden: return "sweden"
19
+ case .unitedArabEmirates: return "unitedArabEmirates"
20
+ case .unitedKingdom: return "unitedKingdom"
21
+ case .unitedStates: return "unitedStates"
22
+ case .norway: return "norway"
23
+ @unknown default: return "unexpected"
24
+ }
25
+ }
26
+
27
+ static var allCases: Set<Country> = Country.allCountries
28
+ static var parentKeyName: String = String(describing: Self.self)
29
+
30
+ static func countriesSet(from countryConstantKeys: [String]) -> Set<Country> {
31
+ return Set<Country>(countryConstantKeys.compactMap { Country.country(from: $0) })
32
+ }
33
+
34
+ static func country(from countryConstantKey: String) -> Country? {
35
+ switch countryConstantKey {
36
+ case "canada": return .canada
37
+ case "ireland": return .ireland
38
+ case "japan": return .japan
39
+ case "sweden": return .sweden
40
+ case "unitedArabEmirates": return .unitedArabEmirates
41
+ case "unitedKingdom": return .unitedKingdom
42
+ case "unitedStates": return .unitedStates
43
+ case "norway": return .norway
44
+ default: return nil
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // EnrollmentErrorTypeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension EnrollmentError: ConstantsProvider {
12
+ static var allCases: Set<EnrollmentError> = [EnrollmentError.cardAlreadyExists, .invalidProgramID, .invalidSDKKey, .inexistentProgram, .unexpected]
13
+ static var parentKeyName: String = "EnrollmentErrorType"
14
+
15
+ var constantKey: String {
16
+ switch self {
17
+ case .cardAlreadyExists: return "cardAlreadyExists"
18
+ case .invalidProgramID: return "invalidProgramId"
19
+ case .invalidSDKKey: return "invalidSdkKey"
20
+ case .inexistentProgram: return "inexistentProgram"
21
+ case .unexpected: return "unexpected"
22
+ @unknown default: return "unexpected"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,37 @@
1
+ //
2
+ // ErrorTypeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension FidelErrorType: ConstantsProvider {
12
+
13
+ static var allCases: Set<FidelErrorType> = [FidelErrorType.userCanceled, .enrollmentError(EnrollmentError.unexpected), .verificationError(.unexpected), .sdkConfigurationError]
14
+ static var parentKeyName: String = "ErrorType"
15
+
16
+ var constantKey: String {
17
+ switch self {
18
+ case .enrollmentError: return "enrollmentError"
19
+ case .verificationError: return "verificationError"
20
+ case .sdkConfigurationError: return "sdkConfigurationError"
21
+ case .userCanceled: return "userCanceled"
22
+ case .deviceNotSecure: return "deviceNotSecure"
23
+ @unknown default: return "unexpected"
24
+ }
25
+ }
26
+
27
+ public func hash(into hasher: inout Hasher) {
28
+ hasher.combine(self.constantKey)
29
+ switch self {
30
+ case let .enrollmentError(enrollmentError):
31
+ hasher.combine(enrollmentError)
32
+ case let .verificationError(verificationError):
33
+ hasher.combine(verificationError)
34
+ default: break;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,42 @@
1
+ //
2
+ // ExportedConstantsProvider.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ class ExportedConstantsProvider: NSObject {
12
+
13
+ var constants: [AnyHashable: Any] {
14
+ var constants = [String: [String: String]]()
15
+ constants.merge(CardScheme.constantsToExport) { (current, _) in current }
16
+ constants.merge(Country.constantsToExport) { (current, _) in current }
17
+ constants.merge(ProgramType.constantsToExport) { (current, _) in current }
18
+ constants.merge(EnrollmentError.constantsToExport) { (current, _) in current }
19
+ constants.merge(VerificationError.constantsToExport) { (current, _) in current }
20
+ constants.merge(FidelErrorType.constantsToExport) { (current, _) in current }
21
+ constants.merge(FidelResult.constantsToExport) { (current, _) in current }
22
+ constants.merge(CardVerificationChoice.constantsToExport) { (current, _) in current }
23
+ return constants
24
+ }
25
+ }
26
+
27
+ protocol ConstantsProvider where Self: Hashable {
28
+ var constantKey: String { get }
29
+ static var allCases: Set<Self> { get }
30
+ static var parentKeyName: String { get }
31
+ static var constantsToExport: [String: [String: String]] { get }
32
+ }
33
+
34
+ extension ConstantsProvider {
35
+ static var constantsToExport: [String: [String: String]] {
36
+ var casesConstants = [String: String]()
37
+ Self.allCases.forEach {
38
+ casesConstants[$0.constantKey] = $0.constantKey
39
+ }
40
+ return [Self.parentKeyName: casesConstants]
41
+ }
42
+ }
@@ -0,0 +1,30 @@
1
+ //
2
+ // ProgramTypeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension ProgramType: ConstantsProvider {
12
+
13
+ var constantKey: String {
14
+ switch self {
15
+ case .transactionSelect: return "transactionSelect"
16
+ case .transactionStream: return "transactionStream"
17
+ @unknown default: return "unexpected"
18
+ }
19
+ }
20
+
21
+ public static var allCases: Set<ProgramType> = [ProgramType.transactionSelect, .transactionStream]
22
+ static var parentKeyName: String = String(describing: Self.self)
23
+
24
+ static func programType(from constantKey: String?) -> ProgramType {
25
+ if constantKey == "transactionStream" {
26
+ return .transactionStream
27
+ }
28
+ return .transactionSelect
29
+ }
30
+ }
@@ -0,0 +1,35 @@
1
+ //
2
+ // ResultTypeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension FidelResult: ConstantsProvider {
12
+ static var allCases: Set<FidelResult> = []
13
+ static var parentKeyName: String = "ResultType"
14
+
15
+ var constantKey: String {
16
+ switch self {
17
+ case .enrollmentResult: return "EnrollmentResult"
18
+ case .error: return "Error"
19
+ case .verificationResult: return "VerificationResult"
20
+ @unknown default: return "unexpected"
21
+ }
22
+ }
23
+
24
+ static var constantsToExport: [String : [String : String]] {
25
+ var casesConstants = [String: String]()
26
+ casesConstants["EnrollmentResult"] = "EnrollmentResult"
27
+ casesConstants["VerificationResult"] = "VerificationResult"
28
+ casesConstants["Error"] = "Error"
29
+ return [Self.parentKeyName: casesConstants]
30
+ }
31
+
32
+ public func hash(into hasher: inout Hasher) {
33
+ hasher.combine(self.constantKey)
34
+ }
35
+ }
@@ -0,0 +1,29 @@
1
+ //
2
+ // VerificationErrorTypeConstants.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ extension VerificationError: ConstantsProvider {
12
+ static var allCases: Set<VerificationError> = [VerificationError.maximumAttemptsReached, .cardAlreadyVerified, .cardNotFound, .verificationNotFound, .genericError, .incorrectAmount, .invalidSDKKey, .unauthorized, .unexpected]
13
+ static var parentKeyName: String = "VerificationErrorType"
14
+
15
+ var constantKey: String {
16
+ switch self {
17
+ case .maximumAttemptsReached: return "maximumAttemptsReached"
18
+ case .cardAlreadyVerified: return "cardAlreadyVerified"
19
+ case .invalidSDKKey: return "invalidSdkKey"
20
+ case .cardNotFound: return "cardNotFound"
21
+ case .verificationNotFound: return "verificationNotFound"
22
+ case .genericError: return "genericError"
23
+ case .incorrectAmount: return "incorrectAmount"
24
+ case .unauthorized: return "unauthorized"
25
+ case .unexpected: return "unexpected"
26
+ @unknown default: return "unexpected"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,14 @@
1
+ //
2
+ // BridgeLibraryEvent.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 07/06/23.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ enum BridgeLibraryEvent: String, CaseIterable {
11
+ case resultAvailable = "ResultAvailable"
12
+ case cardVerificationStarted = "CardVerificationStarted"
13
+ case cardVerificationChoiceSelected = "CardVerificationChoiceSelected"
14
+ }
@@ -0,0 +1,23 @@
1
+ //
2
+ // CardVerificationChoiceSelectedObserver.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Valeria Rogatchevskikh on 8/6/23.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ struct CardVerificationChoiceSelectedObserver: EventObserver {
12
+ func startObserving(_ onEvent: @escaping (NSDictionary) -> Void) {
13
+ Fidel.onCardVerificationChoiceSelected = {
14
+ let dictionary: NSMutableDictionary = NSMutableDictionary()
15
+ dictionary["CardVerificationChoice"] = $0.constantKey
16
+ onEvent(dictionary)
17
+ }
18
+ }
19
+
20
+ func stopObserving() {
21
+ Fidel.onCardVerificationChoiceSelected = nil
22
+ }
23
+ }
@@ -0,0 +1,21 @@
1
+ //
2
+ // CardVerificationStartedObserver.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 07/06/23.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ struct CardVerificationStartedObserver: EventObserver {
12
+ func startObserving(_ onEvent: @escaping (NSDictionary) -> Void) {
13
+ Fidel.onCardVerificationStarted = {
14
+ onEvent($0.dictionary as NSDictionary)
15
+ }
16
+ }
17
+
18
+ func stopObserving() {
19
+ Fidel.onCardVerificationStarted = nil
20
+ }
21
+ }
@@ -0,0 +1,13 @@
1
+ //
2
+ // EventObserver.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 07/06/23.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ protocol EventObserver {
11
+ func startObserving(_ onEvent: @escaping (NSDictionary) -> Void)
12
+ func stopObserving()
13
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // JSResultProperties.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 09/12/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ enum JSResultProperties: String {
11
+ case type
12
+ case enrollmentResult
13
+ case verificationResult
14
+ case error
15
+ }
@@ -0,0 +1,14 @@
1
+ //
2
+ // JSResultTypes.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 09/12/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ enum JSResultTypes: String {
11
+ case enrollmentResult = "EnrollmentResult"
12
+ case error = "Error"
13
+ case verificationResult = "VerificationResult"
14
+ }
@@ -0,0 +1,37 @@
1
+ //
2
+ // ResultsObserver.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+ import Fidel
10
+
11
+ struct ResultsObserver: EventObserver {
12
+
13
+ func startObserving(_ onEvent: @escaping (NSDictionary) -> Void) {
14
+ Fidel.onResult = { result in
15
+ var resultDictionary = [String: Any?]()
16
+ switch result {
17
+ case .enrollmentResult(let enrollmentResult):
18
+ resultDictionary[JSResultProperties.type.rawValue] = JSResultTypes.enrollmentResult.rawValue
19
+ resultDictionary[JSResultProperties.enrollmentResult.rawValue] = enrollmentResult.dictionary
20
+ case .verificationResult(let verificationResult):
21
+ resultDictionary[JSResultProperties.type.rawValue] = JSResultTypes.verificationResult.rawValue
22
+ resultDictionary[JSResultProperties.verificationResult.rawValue] = verificationResult.dictionary
23
+ case .error(let fidelError):
24
+ resultDictionary[JSResultProperties.type.rawValue] = JSResultTypes.error.rawValue
25
+ resultDictionary[JSResultProperties.error.rawValue] = fidelError.dictionary
26
+ @unknown default:
27
+ resultDictionary[JSResultProperties.type.rawValue] = "unexpected"
28
+ }
29
+ let resultNSDictionary = resultDictionary as NSDictionary
30
+ onEvent(resultNSDictionary)
31
+ }
32
+ }
33
+
34
+ func stopObserving() {
35
+ Fidel.onResult = nil
36
+ }
37
+ }
@@ -0,0 +1,33 @@
1
+ //
2
+ // FidelSetupProperties.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 08/12/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ enum FidelSetupProperties: String {
11
+ case sdkKey
12
+ case programID = "programId"
13
+ case programType
14
+ case options
15
+ case consentText
16
+
17
+ enum Options: String {
18
+ case bannerImage
19
+ case allowedCountries
20
+ case defaultSelectedCountry
21
+ case supportedCardSchemes
22
+ case thirdPartyVerificationChoice
23
+ case metaData
24
+ }
25
+
26
+ enum ConsentText: String {
27
+ case termsAndConditionsURL = "termsAndConditionsUrl"
28
+ case privacyPolicyURL = "privacyPolicyUrl"
29
+ case companyName
30
+ case programName
31
+ case deleteInstructions
32
+ }
33
+ }
@@ -0,0 +1,13 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(NativeFidelBridge, NSObject)
4
+
5
+ RCT_EXTERN_METHOD(setup:(NSDictionary *)setupInfo)
6
+
7
+ RCT_EXTERN_METHOD(start)
8
+
9
+ RCT_EXTERN_METHOD(verifyCard:(NSDictionary *)cardVerificationConfiguration)
10
+
11
+ RCT_EXTERN_METHOD(identifyMetricsDataSource:(NSString *)name version:(NSString *)version)
12
+
13
+ @end
@@ -0,0 +1,100 @@
1
+ //
2
+ // NativeFidelBridge.swift
3
+ // fidel-react-native
4
+ //
5
+ // Created by Corneliu Chitanu on 06/01/22.
6
+ //
7
+
8
+ import Foundation
9
+ import React
10
+ import Fidel
11
+ import analytics
12
+
13
+ @objc(NativeFidelBridge)
14
+ class NativeFidelBridge: RCTEventEmitter {
15
+
16
+ private var eventObservers = [BridgeLibraryEvent: EventObserver]()
17
+ private let imageAdapter = FLRNImageFromRNAdapter()
18
+ private let setupAdapter: FidelSetupAdapter
19
+ private let constantsProvider = ExportedConstantsProvider()
20
+ private let verificationConfigAdapter = FidelVerificationConfigurationAdapter()
21
+
22
+ override init() {
23
+ setupAdapter = FidelSetupAdapter(imageAdapter: imageAdapter)
24
+ super.init()
25
+ }
26
+
27
+ @objc(setup:)
28
+ func setup(with jsSetupInfo: NSDictionary) {
29
+ setupAdapter.setup(with: jsSetupInfo)
30
+ }
31
+
32
+ @objc(start)
33
+ func start() {
34
+ guard let startViewController = UIApplication.shared.delegate?.window??.rootViewController else {
35
+ return
36
+ }
37
+ Fidel.start(from: startViewController)
38
+ }
39
+
40
+ @objc(verifyCard:)
41
+ func verifyCard(with parameters: NSDictionary) {
42
+ guard let startViewController = UIApplication.shared.delegate?.window??.rootViewController else {
43
+ return
44
+ }
45
+ let cardVerificationConfig = verificationConfigAdapter.adapt(parameters)
46
+ Fidel.verifyCard(from: startViewController, cardVerificationConfiguration: cardVerificationConfig)
47
+ }
48
+
49
+ @objc(identifyMetricsDataSource:version:)
50
+ func identifyMetricsDataSource(name: String, version: String) {
51
+ let reactNativeSdkDetails = SdkDetails(name: name, version: version)
52
+ Analytics().identifyMultiplatformDataSource(sdkDetails: reactNativeSdkDetails)
53
+ }
54
+
55
+ override func supportedEvents() -> [String]! {
56
+ return BridgeLibraryEvent.allCases.map { $0.rawValue }
57
+ }
58
+
59
+ override func addListener(_ eventName: String!) {
60
+ super.addListener(eventName)
61
+ guard let event = BridgeLibraryEvent(rawValue: eventName) else {
62
+ return
63
+ }
64
+ startObserving(event: event)
65
+ }
66
+
67
+ private func startObserving(event: BridgeLibraryEvent) {
68
+ let observer = self.makeObserver(for: event)
69
+ eventObservers[event] = observer
70
+ observer.startObserving { [weak self] in
71
+ self?.sendEvent(withName: event.rawValue, body: $0)
72
+ }
73
+ }
74
+
75
+ private func makeObserver(for event: BridgeLibraryEvent) -> EventObserver {
76
+ switch event {
77
+ case .cardVerificationStarted: return CardVerificationStartedObserver()
78
+ case .resultAvailable: return ResultsObserver()
79
+ case .cardVerificationChoiceSelected: return CardVerificationChoiceSelectedObserver()
80
+ }
81
+ }
82
+
83
+ override func removeListeners(_ count: Double) {
84
+ super.removeListeners(count)
85
+ eventObservers[.resultAvailable]?.stopObserving()
86
+ }
87
+
88
+ override func constantsToExport() -> [AnyHashable : Any]! {
89
+ return constantsProvider.constants
90
+ }
91
+
92
+ override class func requiresMainQueueSetup() -> Bool {
93
+ return true
94
+ }
95
+
96
+ override var methodQueue: DispatchQueue! {
97
+ DispatchQueue.main
98
+ }
99
+
100
+ }
package/package.json CHANGED
@@ -1,12 +1,9 @@
1
1
  {
2
2
  "name": "fidel-react-native",
3
- "version": "1.6.4",
3
+ "version": "2.1.0",
4
4
  "description": "Fidel's React Native bridge library for iOS and Android.",
5
5
  "main": "index.js",
6
6
  "nativePackage": true,
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1"
9
- },
10
7
  "directories": {
11
8
  "example": "./example"
12
9
  },