fidel-react-native 1.6.4 → 2.0.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.
- package/CHANGELOG.md +10 -0
- package/README.md +54 -55
- package/android/build.gradle +11 -8
- package/android/src/main/java/com/fidelreactlibrary/FidelModule.java +52 -44
- package/android/src/main/java/com/fidelreactlibrary/FidelPackage.java +64 -49
- package/android/src/main/java/com/fidelreactlibrary/adapters/CardVerificationConfigurationProperties.java +22 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardSchemesAdapter.java +46 -29
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapter.java +57 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelCountryAdapter.java +47 -19
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapter.java +46 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupAdapter.java +108 -6
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelSetupProperties.java +67 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapter.java +35 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/ImageFromReadableMapAdapter.java +5 -1
- package/android/src/main/java/com/fidelreactlibrary/adapters/ResultsAdapter.java +288 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardSchemesAdapter.java +6 -2
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CardVerificationChoiceAdapter.java +11 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/CountryAdapter.java +14 -3
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataAdapter.java +5 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/ProgramTypeAdapter.java +11 -0
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/VerificationConfigurationAdapter.java +9 -0
- package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEvent.java +17 -0
- package/android/src/main/java/com/fidelreactlibrary/events/BridgeLibraryEventEmitter.java +24 -0
- package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationChoiceObserver.java +29 -0
- package/android/src/main/java/com/fidelreactlibrary/events/CardVerificationStartedObserver.java +31 -0
- package/android/src/main/java/com/fidelreactlibrary/events/ResultsObserver.java +72 -0
- package/android/src/test/java/com/fidelreactlibrary/FidelModuleTests.java +50 -31
- package/android/src/test/java/com/fidelreactlibrary/FidelPackageTests.java +0 -1
- package/android/src/test/java/com/fidelreactlibrary/{FidelCardSchemesAdapterTests.java → adapters/FidelCardSchemesAdapterTests.java} +51 -47
- package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCardVerificationChoiceAdapterTest.java +70 -0
- package/android/src/test/java/com/fidelreactlibrary/adapters/FidelCountryAdapterTests.java +157 -0
- package/android/src/test/java/com/fidelreactlibrary/adapters/FidelProgramTypeAdapterTests.java +54 -0
- package/android/src/test/java/com/fidelreactlibrary/adapters/FidelSetupAdapterTests.java +900 -0
- package/android/src/test/java/com/fidelreactlibrary/adapters/FidelVerificationConfigurationAdapterTest.java +51 -0
- package/android/src/test/java/com/fidelreactlibrary/adapters/ResultsAdapterTests.java +74 -0
- package/android/src/test/java/com/fidelreactlibrary/{ErrorEventEmitterTests.java → events/BridgeLibraryEventEmitterTests.java} +18 -7
- package/android/src/test/java/com/fidelreactlibrary/events/BridgeLibraryEventTests.java +17 -0
- package/android/src/test/java/com/fidelreactlibrary/events/CardVerificationStartedObserverTests.java +49 -0
- package/android/src/test/java/com/fidelreactlibrary/events/ResultsObserverTests.java +38 -0
- package/android/src/test/java/com/fidelreactlibrary/fakes/CardSchemeAdapterStub.java +17 -6
- package/android/src/test/java/com/fidelreactlibrary/fakes/ConstantsProviderStub.java +2 -2
- package/android/src/test/java/com/fidelreactlibrary/fakes/CountryAdapterStub.java +25 -10
- package/android/src/test/java/com/fidelreactlibrary/fakes/{DataConverterStub.java → DataAdapterStub.java} +3 -3
- package/android/src/test/java/com/fidelreactlibrary/fakes/ProgramTypeAdapterStub.java +31 -0
- package/android/src/test/java/com/fidelreactlibrary/fakes/ReactContextMock.java +1 -1
- package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableArrayStub.java +82 -0
- package/android/src/test/java/com/fidelreactlibrary/fakes/ReadableMapStub.java +175 -40
- package/android/src/test/java/com/fidelreactlibrary/fakes/VerificationConfigurationAdapterStub.java +13 -0
- package/fidel-react-native.podspec +1 -1
- package/index.js +71 -19
- package/ios/Adapters/CardSchemesAdapter.swift +13 -0
- package/ios/Adapters/ConsentDetailsAdapter.swift +19 -0
- package/ios/Adapters/EnrollmentResultAdapter.swift +28 -0
- package/ios/Adapters/ErrorResultAdapter.swift +71 -0
- package/ios/{FLRNImageAdapter.h → Adapters/FLRNImageFromRNAdapter.h} +2 -3
- package/ios/Adapters/FidelSetupAdapter.swift +89 -0
- package/ios/Adapters/FidelVerificationConfigurationAdapter.swift +19 -0
- package/ios/Adapters/VerificationResultAdapter.swift +17 -0
- package/ios/CardVerificationConfigurationProperties.swift +14 -0
- package/ios/Constants/CardSchemeConstants.swift +38 -0
- package/ios/Constants/CardVerificationChoiceConstants.swift +24 -0
- package/ios/Constants/CountryConstants.swift +47 -0
- package/ios/Constants/EnrollmentErrorTypeConstants.swift +25 -0
- package/ios/Constants/ErrorTypeConstants.swift +37 -0
- package/ios/Constants/ExportedConstantsProvider.swift +42 -0
- package/ios/Constants/ProgramTypeConstants.swift +30 -0
- package/ios/Constants/ResultTypeConstants.swift +35 -0
- package/ios/Constants/VerificationErrorTypeConstants.swift +29 -0
- package/ios/Events/BridgeLibraryEvent.swift +14 -0
- package/ios/Events/CardVerificationChoiceSelectedObserver.swift +23 -0
- package/ios/Events/CardVerificationStartedObserver.swift +21 -0
- package/ios/Events/EventObserver.swift +13 -0
- package/ios/Events/JSResultProperties.swift +15 -0
- package/ios/Events/JSResultTypes.swift +14 -0
- package/ios/Events/ResultsObserver.swift +37 -0
- package/ios/FidelSetupProperties.swift +33 -0
- package/ios/NativeFidelBridge.m +11 -0
- package/ios/NativeFidelBridge.swift +93 -0
- package/package.json +1 -4
- package/android/src/main/java/com/fidelreactlibrary/adapters/FidelOptionsAdapter.java +0 -121
- package/android/src/main/java/com/fidelreactlibrary/adapters/WritableMapDataConverter.java +0 -94
- package/android/src/main/java/com/fidelreactlibrary/adapters/abstraction/DataConverter.java +0 -5
- package/android/src/main/java/com/fidelreactlibrary/events/CallbackActivityEventListener.java +0 -64
- package/android/src/main/java/com/fidelreactlibrary/events/CallbackInput.java +0 -7
- package/android/src/main/java/com/fidelreactlibrary/events/ErrorEventEmitter.java +0 -22
- package/android/src/test/java/com/fidelreactlibrary/CallbackActivityEventListenerTests.java +0 -133
- package/android/src/test/java/com/fidelreactlibrary/FidelCountryAdapterTests.java +0 -74
- package/android/src/test/java/com/fidelreactlibrary/FidelOptionsAdapterTests.java +0 -414
- package/android/src/test/java/com/fidelreactlibrary/FidelSetupAdapterTests.java +0 -65
- package/android/src/test/java/com/fidelreactlibrary/WritableMapDataConverterTests.java +0 -186
- package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackInputSpy.java +0 -12
- package/android/src/test/java/com/fidelreactlibrary/fakes/CallbackSpy.java +0 -18
- package/android/src/test/java/com/fidelreactlibrary/fakes/IntentMock.java +0 -20
- package/ios/FLRNCardSchemesAdapter.h +0 -16
- package/ios/FLRNCardSchemesFromJSAdapter.h +0 -14
- package/ios/FLRNCardSchemesFromJSAdapter.m +0 -39
- package/ios/FLRNConstantsProvider.h +0 -15
- package/ios/FLRNImageFromRNAdapter.h +0 -14
- package/ios/FLRNObjectToDictionaryAdapter.h +0 -15
- package/ios/FLRNOptionsAdapter.h +0 -24
- package/ios/FLRNOptionsAdapter.m +0 -133
- package/ios/FLRNRuntimeObjectToDictionaryAdapter.h +0 -14
- package/ios/FLRNRuntimeObjectToDictionaryAdapter.m +0 -36
- package/ios/FLRNSDKOptions.h +0 -24
- package/ios/FLRNSDKSetupOptions.h +0 -14
- package/ios/FLRNSetupAdapter.h +0 -17
- package/ios/FLRNSetupAdapter.m +0 -50
- package/ios/Fidel.h +0 -20
- package/ios/Fidel.m +0 -79
- package/ios/RCTConvert+CardScheme.h +0 -33
- package/ios/RCTConvert+Options.h +0 -52
- package/ios/RCTConvert+Options.m +0 -21
- /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,11 @@
|
|
|
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
|
+
@end
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
|
|
12
|
+
@objc(NativeFidelBridge)
|
|
13
|
+
class NativeFidelBridge: RCTEventEmitter {
|
|
14
|
+
|
|
15
|
+
private var eventObservers = [BridgeLibraryEvent: EventObserver]()
|
|
16
|
+
private let imageAdapter = FLRNImageFromRNAdapter()
|
|
17
|
+
private let setupAdapter: FidelSetupAdapter
|
|
18
|
+
private let constantsProvider = ExportedConstantsProvider()
|
|
19
|
+
private let verificationConfigAdapter = FidelVerificationConfigurationAdapter()
|
|
20
|
+
|
|
21
|
+
override init() {
|
|
22
|
+
setupAdapter = FidelSetupAdapter(imageAdapter: imageAdapter)
|
|
23
|
+
super.init()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@objc(setup:)
|
|
27
|
+
func setup(with jsSetupInfo: NSDictionary) {
|
|
28
|
+
setupAdapter.setup(with: jsSetupInfo)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@objc(start)
|
|
32
|
+
func start() {
|
|
33
|
+
guard let startViewController = UIApplication.shared.delegate?.window??.rootViewController else {
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
Fidel.start(from: startViewController)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@objc(verifyCard:)
|
|
40
|
+
func verifyCard(with parameters: NSDictionary) {
|
|
41
|
+
guard let startViewController = UIApplication.shared.delegate?.window??.rootViewController else {
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
let cardVerificationConfig = verificationConfigAdapter.adapt(parameters)
|
|
45
|
+
Fidel.verifyCard(from: startViewController, cardVerificationConfiguration: cardVerificationConfig)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
override func supportedEvents() -> [String]! {
|
|
49
|
+
return BridgeLibraryEvent.allCases.map { $0.rawValue }
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
override func addListener(_ eventName: String!) {
|
|
53
|
+
super.addListener(eventName)
|
|
54
|
+
guard let event = BridgeLibraryEvent(rawValue: eventName) else {
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
startObserving(event: event)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private func startObserving(event: BridgeLibraryEvent) {
|
|
61
|
+
let observer = self.makeObserver(for: event)
|
|
62
|
+
eventObservers[event] = observer
|
|
63
|
+
observer.startObserving { [weak self] in
|
|
64
|
+
self?.sendEvent(withName: event.rawValue, body: $0)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private func makeObserver(for event: BridgeLibraryEvent) -> EventObserver {
|
|
69
|
+
switch event {
|
|
70
|
+
case .cardVerificationStarted: return CardVerificationStartedObserver()
|
|
71
|
+
case .resultAvailable: return ResultsObserver()
|
|
72
|
+
case .cardVerificationChoiceSelected: return CardVerificationChoiceSelectedObserver()
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
override func removeListeners(_ count: Double) {
|
|
77
|
+
super.removeListeners(count)
|
|
78
|
+
eventObservers[.resultAvailable]?.stopObserving()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
override func constantsToExport() -> [AnyHashable : Any]! {
|
|
82
|
+
return constantsProvider.constants
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
86
|
+
return true
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
override var methodQueue: DispatchQueue! {
|
|
90
|
+
DispatchQueue.main
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fidel-react-native",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.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
|
},
|