@primer-io/react-native 2.21.0 → 2.22.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/android/build.gradle +4 -4
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +10 -8
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +36 -13
- package/android/src/main/java/com/primerioreactnative/PrimerRNViewModelStoreOwner.kt +9 -0
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +9 -1
- package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutComponentEvent.kt +10 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +8 -13
- package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +284 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerKlarnaPaymentViewManager.kt +103 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +334 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +10 -8
- package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +5 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentStepRN.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentValidatableDataRN.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIssuingBankRN.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksCollectableDataRN.kt +17 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksStepRN.kt +20 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksCollectableData.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksStep.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCategoryRN.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCollectableDataRN.kt +21 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentStepRN.kt +31 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerError.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerIssuingBank.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategory.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategoryRN.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCollectableData.kt +14 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentStep.kt +21 -0
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +3 -2
- package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +8 -1
- package/ios/ReactNative-Bridging-Header.h +1 -0
- package/ios/Sources/DataModels/Banks Component/RNTBanksCollectableData.swift +42 -0
- package/ios/Sources/DataModels/Banks Component/RNTBanksStep.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/PrimerHeadlessUniversalCheckoutComponentEvent.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaCollectableData.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaPaymentCategory.swift +33 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaStep.swift +61 -0
- package/ios/Sources/DataModels/Klarna Component/RNTPrimerError.swift +67 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.h +14 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.m +25 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.m +27 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.swift +272 -0
- package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.m +25 -0
- package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.swift +183 -0
- package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +3 -1
- package/ios/Sources/Helpers/PrimerCheckoutPaymentMethodData+RN.swift +21 -0
- package/ios/Sources/RNTPrimer.swift +4 -2
- package/ios/Sources/version.swift +1 -1
- package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +9 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +103 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +99 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +8 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/commonjs/Primer.js +2 -1
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/index.js +186 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/IssuingBank.js +2 -0
- package/lib/commonjs/models/IssuingBank.js.map +1 -0
- package/lib/commonjs/models/NamedComponentStep.js +2 -0
- package/lib/commonjs/models/NamedComponentStep.js.map +1 -0
- package/lib/commonjs/models/NamedComponentValidatableData.js +2 -0
- package/lib/commonjs/models/NamedComponentValidatableData.js.map +1 -0
- package/lib/commonjs/models/PrimerComponentDataValidation.js +6 -0
- package/lib/commonjs/models/PrimerComponentDataValidation.js.map +1 -0
- package/lib/commonjs/models/PrimerError.js +2 -1
- package/lib/commonjs/models/PrimerError.js.map +1 -1
- package/lib/commonjs/models/banks/BanksCollectableData.js +6 -0
- package/lib/commonjs/models/banks/BanksCollectableData.js.map +1 -0
- package/lib/commonjs/models/banks/BanksSteps.js +6 -0
- package/lib/commonjs/models/banks/BanksSteps.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js +2 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js +6 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js +6 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +3 -0
- package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +96 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +92 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +2 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/module/Primer.js +2 -1
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/index.js +24 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/IssuingBank.js +2 -0
- package/lib/module/models/IssuingBank.js.map +1 -0
- package/lib/module/models/NamedComponentStep.js +2 -0
- package/lib/module/models/NamedComponentStep.js.map +1 -0
- package/lib/module/models/NamedComponentValidatableData.js +2 -0
- package/lib/module/models/NamedComponentValidatableData.js.map +1 -0
- package/lib/module/models/PrimerComponentDataValidation.js +2 -0
- package/lib/module/models/PrimerComponentDataValidation.js.map +1 -0
- package/lib/module/models/PrimerError.js +2 -1
- package/lib/module/models/PrimerError.js.map +1 -1
- package/lib/module/models/banks/BanksCollectableData.js +2 -0
- package/lib/module/models/banks/BanksCollectableData.js.map +1 -0
- package/lib/module/models/banks/BanksSteps.js +2 -0
- package/lib/module/models/banks/BanksSteps.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentCategory.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentCategory.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentCollectableData.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentSteps.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentSteps.js.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts +2 -0
- package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts +54 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts +50 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts +3 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -1
- package/lib/typescript/Primer.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +26 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/models/IssuingBank.d.ts +9 -0
- package/lib/typescript/models/IssuingBank.d.ts.map +1 -0
- package/lib/typescript/models/NamedComponentStep.d.ts +12 -0
- package/lib/typescript/models/NamedComponentStep.d.ts.map +1 -0
- package/lib/typescript/models/NamedComponentValidatableData.d.ts +12 -0
- package/lib/typescript/models/NamedComponentValidatableData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +1 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -1
- package/lib/typescript/models/PrimerComponentDataValidation.d.ts +54 -0
- package/lib/typescript/models/PrimerComponentDataValidation.d.ts.map +1 -0
- package/lib/typescript/models/PrimerError.d.ts +2 -6
- package/lib/typescript/models/PrimerError.d.ts.map +1 -1
- package/lib/typescript/models/PrimerValidationError.d.ts +3 -3
- package/lib/typescript/models/PrimerValidationError.d.ts.map +1 -1
- package/lib/typescript/models/banks/BanksCollectableData.d.ts +23 -0
- package/lib/typescript/models/banks/BanksCollectableData.d.ts.map +1 -0
- package/lib/typescript/models/banks/BanksSteps.d.ts +20 -0
- package/lib/typescript/models/banks/BanksSteps.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts +24 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts +24 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts +36 -0
- package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx +5 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts +161 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.ts +147 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +4 -4
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.ts +10 -0
- package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +3 -2
- package/src/Primer.ts +2 -1
- package/src/index.tsx +62 -62
- package/src/models/IssuingBank.ts +8 -0
- package/src/models/NamedComponentStep.ts +11 -0
- package/src/models/NamedComponentValidatableData.ts +11 -0
- package/src/models/PrimerCheckoutPaymentMethodData.ts +6 -1
- package/src/models/PrimerComponentDataValidation.ts +60 -0
- package/src/models/PrimerError.ts +8 -14
- package/src/models/PrimerValidationError.ts +3 -3
- package/src/models/banks/BanksCollectableData.ts +25 -0
- package/src/models/banks/BanksSteps.ts +22 -0
- package/src/models/klarna/KlarnaPaymentCategory.ts +23 -0
- package/src/models/klarna/KlarnaPaymentCollectableData.ts +26 -0
- package/src/models/klarna/KlarnaPaymentSteps.ts +36 -0
- /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.m → Assets Manager/RNTAssetsManager.m} +0 -0
- /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.swift → Assets Manager/RNTAssetsManager.swift} +0 -0
package/android/build.gradle
CHANGED
|
@@ -9,7 +9,7 @@ buildscript {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
dependencies {
|
|
12
|
-
classpath 'com.android.tools.build:gradle:
|
|
12
|
+
classpath 'com.android.tools.build:gradle:8.2.2'
|
|
13
13
|
// noinspection DifferentKotlinGradleVersion
|
|
14
14
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
15
15
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
|
@@ -50,8 +50,8 @@ android {
|
|
|
50
50
|
disable 'GradleCompatible'
|
|
51
51
|
}
|
|
52
52
|
compileOptions {
|
|
53
|
-
sourceCompatibility JavaVersion.
|
|
54
|
-
targetCompatibility JavaVersion.
|
|
53
|
+
sourceCompatibility JavaVersion.VERSION_17
|
|
54
|
+
targetCompatibility JavaVersion.VERSION_17
|
|
55
55
|
}
|
|
56
56
|
kotlinOptions {
|
|
57
57
|
freeCompilerArgs += '-Xjvm-default=all'
|
|
@@ -135,6 +135,6 @@ dependencies {
|
|
|
135
135
|
// noinspection GradleDynamicVersion
|
|
136
136
|
api 'com.facebook.react:react-native:+'
|
|
137
137
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
138
|
-
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.
|
|
138
|
+
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1"
|
|
139
139
|
implementation 'io.primer:android:2.27.0'
|
|
140
140
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
#Tue Feb 23 12:42:30 CET 2021
|
|
2
1
|
distributionBase=GRADLE_USER_HOME
|
|
3
2
|
distributionPath=wrapper/dists
|
|
4
|
-
distributionUrl=https\://services.gradle.org/distributions/gradle-
|
|
3
|
+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
|
|
5
4
|
zipStoreBase=GRADLE_USER_HOME
|
|
6
5
|
zipStorePath=wrapper/dists
|
|
@@ -5,8 +5,8 @@ import com.facebook.react.bridge.*
|
|
|
5
5
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
6
6
|
import com.primerioreactnative.datamodels.*
|
|
7
7
|
import com.primerioreactnative.utils.PrimerImplementedRNCallbacks
|
|
8
|
-
import com.primerioreactnative.utils.convertJsonToMap
|
|
9
8
|
import com.primerioreactnative.utils.errorTo
|
|
9
|
+
import com.primerioreactnative.utils.toWritableMap
|
|
10
10
|
import io.primer.android.Primer
|
|
11
11
|
import io.primer.android.data.settings.PrimerSettings
|
|
12
12
|
import kotlinx.serialization.decodeFromString
|
|
@@ -202,7 +202,7 @@ class PrimerRN(reactContext: ReactApplicationContext, private val json: Json) :
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
private fun prepareData(data: JSONObject?): WritableMap {
|
|
205
|
-
return data
|
|
205
|
+
return data.toWritableMap()
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -211,10 +211,11 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
211
211
|
}
|
|
212
212
|
sendErrorWithCheckoutData?.invoke(
|
|
213
213
|
PrimerErrorRN(
|
|
214
|
-
error.errorId,
|
|
215
|
-
error.
|
|
216
|
-
error.
|
|
217
|
-
error.
|
|
214
|
+
errorId = error.errorId,
|
|
215
|
+
errorCode = error.errorCode,
|
|
216
|
+
description = error.description,
|
|
217
|
+
diagnosticsId = error.diagnosticsId,
|
|
218
|
+
recoverySuggestion = error.recoverySuggestion
|
|
218
219
|
), checkoutData?.toPrimerCheckoutDataRN()
|
|
219
220
|
)
|
|
220
221
|
} else {
|
|
@@ -229,10 +230,11 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
229
230
|
}
|
|
230
231
|
sendError?.invoke(
|
|
231
232
|
PrimerErrorRN(
|
|
232
|
-
error.errorId,
|
|
233
|
-
error.
|
|
234
|
-
error.
|
|
235
|
-
error.
|
|
233
|
+
errorId = error.errorId,
|
|
234
|
+
errorCode = error.errorCode,
|
|
235
|
+
description = error.description,
|
|
236
|
+
diagnosticsId = error.diagnosticsId,
|
|
237
|
+
recoverySuggestion = error.recoverySuggestion
|
|
236
238
|
)
|
|
237
239
|
)
|
|
238
240
|
} else {
|
|
@@ -6,8 +6,8 @@ import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
|
6
6
|
import com.primerioreactnative.datamodels.*
|
|
7
7
|
import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
|
|
8
8
|
import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
|
|
9
|
-
import com.primerioreactnative.utils.convertJsonToMap
|
|
10
9
|
import com.primerioreactnative.utils.errorTo
|
|
10
|
+
import com.primerioreactnative.utils.toWritableMap
|
|
11
11
|
import io.primer.android.ExperimentalPrimerApi
|
|
12
12
|
import io.primer.android.components.PrimerHeadlessUniversalCheckout
|
|
13
13
|
import kotlinx.serialization.decodeFromString
|
|
@@ -156,7 +156,7 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
private fun prepareData(data: JSONObject?): WritableMap {
|
|
159
|
-
return data
|
|
159
|
+
return data.toWritableMap()
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
private companion object {
|
package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt
CHANGED
|
@@ -10,8 +10,8 @@ import com.primerioreactnative.extensions.toPrimerCheckoutDataRN
|
|
|
10
10
|
import com.primerioreactnative.extensions.toPrimerClientSessionRN
|
|
11
11
|
import com.primerioreactnative.extensions.toPrimerPaymentMethodDataRN
|
|
12
12
|
import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
|
|
13
|
-
import com.primerioreactnative.utils.convertJsonToMap
|
|
14
13
|
import com.primerioreactnative.utils.errorTo
|
|
14
|
+
import com.primerioreactnative.utils.toWritableMap
|
|
15
15
|
import io.primer.android.completion.PrimerHeadlessUniversalCheckoutResumeDecisionHandler
|
|
16
16
|
import io.primer.android.completion.PrimerPaymentCreationDecisionHandler
|
|
17
17
|
import io.primer.android.components.PrimerHeadlessUniversalCheckoutListener
|
|
@@ -61,28 +61,49 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
61
61
|
availablePaymentMethods
|
|
62
62
|
)
|
|
63
63
|
successCallback?.resolve(
|
|
64
|
-
|
|
64
|
+
availablePaymentMethods.toWritableMap()
|
|
65
65
|
)
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
override fun onPreparationStarted(paymentMethodType: String) {
|
|
69
69
|
sendEvent?.invoke(
|
|
70
70
|
PrimerHeadlessUniversalCheckoutEvent.ON_PREPARE_START.eventName,
|
|
71
|
-
JSONObject(
|
|
71
|
+
JSONObject(
|
|
72
|
+
Json.encodeToString(
|
|
73
|
+
PrimerPaymentMethodDataRN(
|
|
74
|
+
paymentMethodType = paymentMethodType,
|
|
75
|
+
paymentMethod = paymentMethodType
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
)
|
|
72
79
|
)
|
|
73
80
|
}
|
|
74
81
|
|
|
75
82
|
override fun onPaymentMethodShowed(paymentMethodType: String) {
|
|
76
83
|
sendEvent?.invoke(
|
|
77
84
|
PrimerHeadlessUniversalCheckoutEvent.ON_PAYMENT_METHOD_SHOW.eventName,
|
|
78
|
-
JSONObject(
|
|
85
|
+
JSONObject(
|
|
86
|
+
Json.encodeToString(
|
|
87
|
+
PrimerPaymentMethodDataRN(
|
|
88
|
+
paymentMethodType = paymentMethodType,
|
|
89
|
+
paymentMethod = paymentMethodType
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
)
|
|
79
93
|
)
|
|
80
94
|
}
|
|
81
95
|
|
|
82
96
|
override fun onTokenizationStarted(paymentMethodType: String) {
|
|
83
97
|
sendEvent?.invoke(
|
|
84
98
|
PrimerHeadlessUniversalCheckoutEvent.ON_TOKENIZE_START.eventName,
|
|
85
|
-
JSONObject(
|
|
99
|
+
JSONObject(
|
|
100
|
+
Json.encodeToString(
|
|
101
|
+
PrimerPaymentMethodDataRN(
|
|
102
|
+
paymentMethodType = paymentMethodType,
|
|
103
|
+
paymentMethod = paymentMethodType
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
)
|
|
86
107
|
)
|
|
87
108
|
}
|
|
88
109
|
|
|
@@ -243,10 +264,11 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
243
264
|
if (implementedRNCallbacks?.isOnErrorImplemented == true) {
|
|
244
265
|
sendErrorWithCheckoutData?.invoke(
|
|
245
266
|
PrimerErrorRN(
|
|
246
|
-
error.errorId,
|
|
247
|
-
error.
|
|
248
|
-
error.
|
|
249
|
-
error.
|
|
267
|
+
errorId = error.errorId,
|
|
268
|
+
errorCode = error.errorCode,
|
|
269
|
+
description = error.description,
|
|
270
|
+
diagnosticsId = error.diagnosticsId,
|
|
271
|
+
recoverySuggestion = error.recoverySuggestion
|
|
250
272
|
), checkoutData?.toPrimerCheckoutDataRN()
|
|
251
273
|
)
|
|
252
274
|
} else {
|
|
@@ -258,10 +280,11 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
258
280
|
if (implementedRNCallbacks?.isOnErrorImplemented == true) {
|
|
259
281
|
sendError?.invoke(
|
|
260
282
|
PrimerErrorRN(
|
|
261
|
-
error.errorId,
|
|
262
|
-
error.
|
|
263
|
-
error.
|
|
264
|
-
error.
|
|
283
|
+
errorId = error.errorId,
|
|
284
|
+
errorCode = error.errorCode,
|
|
285
|
+
description = error.description,
|
|
286
|
+
diagnosticsId = error.diagnosticsId,
|
|
287
|
+
recoverySuggestion = error.recoverySuggestion
|
|
265
288
|
)
|
|
266
289
|
)
|
|
267
290
|
} else {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
package com.primerioreactnative
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import androidx.lifecycle.ViewModelStoreOwner
|
|
5
|
+
import androidx.lifecycle.ViewModelStore
|
|
6
|
+
|
|
7
|
+
class PrimerRNViewModelStoreOwner : ViewModelStoreOwner {
|
|
8
|
+
override val viewModelStore: ViewModelStore = ViewModelStore()
|
|
9
|
+
}
|
|
@@ -8,6 +8,9 @@ import com.primerioreactnative.components.manager.asset.PrimerRNHeadlessUniversa
|
|
|
8
8
|
import com.primerioreactnative.components.manager.nativeUi.PrimerRNHeadlessUniversalCheckoutNativeUiManager
|
|
9
9
|
import com.primerioreactnative.components.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
|
|
10
10
|
import com.primerioreactnative.components.manager.vault.PrimerRNHeadlessUniversalCheckoutVaultManager
|
|
11
|
+
import com.primerioreactnative.components.manager.redirect.PrimerRNHeadlessUniversalCheckoutBanksComponent
|
|
12
|
+
import com.primerioreactnative.components.manager.klarna.PrimerRNHeadlessUniversalCheckoutKlarnaComponent
|
|
13
|
+
import com.primerioreactnative.components.manager.klarna.PrimerKlarnaPaymentViewManager
|
|
11
14
|
import kotlinx.serialization.json.Json
|
|
12
15
|
|
|
13
16
|
class ReactNativePackage : ReactPackage {
|
|
@@ -21,7 +24,11 @@ class ReactNativePackage : ReactPackage {
|
|
|
21
24
|
PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json),
|
|
22
25
|
PrimerRNHeadlessUniversalCheckoutNativeUiManager(reactContext),
|
|
23
26
|
PrimerRNHeadlessUniversalCheckoutAssetManager(reactContext),
|
|
24
|
-
PrimerRNHeadlessUniversalCheckoutVaultManager(reactContext, json)
|
|
27
|
+
PrimerRNHeadlessUniversalCheckoutVaultManager(reactContext, json),
|
|
28
|
+
PrimerRNHeadlessUniversalCheckoutKlarnaComponent(reactContext),
|
|
29
|
+
//region Component with redirect components
|
|
30
|
+
PrimerRNHeadlessUniversalCheckoutBanksComponent(reactContext)
|
|
31
|
+
//endregion
|
|
25
32
|
)
|
|
26
33
|
}
|
|
27
34
|
|
|
@@ -31,6 +38,7 @@ class ReactNativePackage : ReactPackage {
|
|
|
31
38
|
PrimerCardholderNameEditTextManager(),
|
|
32
39
|
PrimerExpiryEditTextManager(),
|
|
33
40
|
PrimerCvvEditTextManager(),
|
|
41
|
+
PrimerKlarnaPaymentViewManager(reactContext)
|
|
34
42
|
)
|
|
35
43
|
}
|
|
36
44
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
package com.primerioreactnative.components.events
|
|
2
|
+
|
|
3
|
+
internal enum class PrimerHeadlessUniversalCheckoutComponentEvent(val eventName: String) {
|
|
4
|
+
ON_STEP("onStep"),
|
|
5
|
+
ON_ERROR("onError"),
|
|
6
|
+
ON_IN_VALID("onInvalid"),
|
|
7
|
+
ON_VALID("onValid"),
|
|
8
|
+
ON_VALIDATING("onValidating"),
|
|
9
|
+
ON_VALIDATION_ERROR("onValidationError"),
|
|
10
|
+
}
|
|
@@ -13,8 +13,8 @@ import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPayme
|
|
|
13
13
|
import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPaymentMethodAssets
|
|
14
14
|
import com.primerioreactnative.components.datamodels.manager.asset.toPrimerRNPaymentMethodAsset
|
|
15
15
|
import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
16
|
-
import com.primerioreactnative.utils.convertJsonToMap
|
|
17
16
|
import com.primerioreactnative.utils.errorTo
|
|
17
|
+
import com.primerioreactnative.utils.toWritableMap
|
|
18
18
|
import io.primer.android.ExperimentalPrimerApi
|
|
19
19
|
import io.primer.android.components.SdkUninitializedException
|
|
20
20
|
import io.primer.android.components.ui.assets.PrimerHeadlessUniversalCheckoutAssetsManager
|
|
@@ -52,13 +52,11 @@ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
|
|
|
52
52
|
drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
|
|
53
53
|
)
|
|
54
54
|
promise.resolve(
|
|
55
|
-
|
|
56
|
-
JSONObject(
|
|
55
|
+
JSONObject(
|
|
57
56
|
Json.encodeToString(
|
|
58
57
|
PrimerCardNetworkAsset("file://${file.absolutePath}")
|
|
59
58
|
)
|
|
60
|
-
)
|
|
61
|
-
)
|
|
59
|
+
).toWritableMap()
|
|
62
60
|
)
|
|
63
61
|
}
|
|
64
62
|
} catch (e: SdkUninitializedException) {
|
|
@@ -78,8 +76,7 @@ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
|
|
|
78
76
|
paymentMethodTypeStr
|
|
79
77
|
)
|
|
80
78
|
promise.resolve(
|
|
81
|
-
|
|
82
|
-
JSONObject(
|
|
79
|
+
JSONObject(
|
|
83
80
|
Json.encodeToString(
|
|
84
81
|
PrimerRNPaymentMethodAssetWrapper(
|
|
85
82
|
paymentMethodAsset.toPrimerRNPaymentMethodAsset(
|
|
@@ -87,9 +84,8 @@ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
|
|
|
87
84
|
paymentMethodTypeStr
|
|
88
85
|
)
|
|
89
86
|
)
|
|
90
|
-
)
|
|
91
87
|
)
|
|
92
|
-
)
|
|
88
|
+
).toWritableMap()
|
|
93
89
|
)
|
|
94
90
|
} catch (e: SdkUninitializedException) {
|
|
95
91
|
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
@@ -111,18 +107,17 @@ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
|
|
|
111
107
|
promise.reject(exception.errorId, exception.description)
|
|
112
108
|
}
|
|
113
109
|
promise.resolve(
|
|
114
|
-
|
|
115
|
-
JSONObject(
|
|
110
|
+
JSONObject(
|
|
116
111
|
Json.encodeToString(
|
|
117
112
|
PrimerRNPaymentMethodAssets(paymentMethodAssets.map {
|
|
118
113
|
it.toPrimerRNPaymentMethodAsset(
|
|
119
114
|
reactContext,
|
|
120
115
|
it.paymentMethodType
|
|
121
116
|
)
|
|
122
|
-
}
|
|
117
|
+
}
|
|
123
118
|
)
|
|
124
119
|
)
|
|
125
|
-
)
|
|
120
|
+
).toWritableMap()
|
|
126
121
|
)
|
|
127
122
|
} catch (e: SdkUninitializedException) {
|
|
128
123
|
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
package com.primerioreactnative.components.manager.redirect
|
|
2
|
+
|
|
3
|
+
import androidx.lifecycle.LifecycleOwner
|
|
4
|
+
import androidx.lifecycle.ViewModelStoreOwner
|
|
5
|
+
import androidx.lifecycle.lifecycleScope
|
|
6
|
+
import com.facebook.react.bridge.Arguments
|
|
7
|
+
import com.facebook.react.bridge.Promise
|
|
8
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
9
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
10
|
+
import com.facebook.react.bridge.ReactMethod
|
|
11
|
+
import com.facebook.react.bridge.WritableMap
|
|
12
|
+
import com.facebook.react.bridge.WritableArray
|
|
13
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
14
|
+
import com.primerioreactnative.PrimerRNViewModelStoreOwner
|
|
15
|
+
import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutComponentEvent
|
|
16
|
+
import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
17
|
+
import com.primerioreactnative.datamodels.PrimerValidationErrorRN
|
|
18
|
+
import com.primerioreactnative.datamodels.extensions.banks.toBankIdRN
|
|
19
|
+
import com.primerioreactnative.datamodels.extensions.banks.toFilterRN
|
|
20
|
+
import com.primerioreactnative.datamodels.extensions.banks.toLoadingRN
|
|
21
|
+
import com.primerioreactnative.datamodels.extensions.banks.toBanksRetrievedRN
|
|
22
|
+
import com.primerioreactnative.datamodels.NamedComponentStep
|
|
23
|
+
import com.primerioreactnative.extensions.toPrimerErrorRN
|
|
24
|
+
import com.primerioreactnative.extensions.toPrimerIssuingBankRN
|
|
25
|
+
import com.primerioreactnative.utils.convertJsonToMap
|
|
26
|
+
import com.primerioreactnative.utils.convertJsonToArray
|
|
27
|
+
import com.primerioreactnative.utils.errorTo
|
|
28
|
+
import io.primer.android.components.manager.banks.composable.BanksCollectableData
|
|
29
|
+
import io.primer.android.components.manager.banks.composable.BanksStep
|
|
30
|
+
import io.primer.android.components.manager.componentWithRedirect.PrimerHeadlessUniversalCheckoutComponentWithRedirectManager
|
|
31
|
+
import io.primer.android.components.manager.componentWithRedirect.component.BanksComponent
|
|
32
|
+
import io.primer.android.components.manager.core.composable.PrimerValidationStatus
|
|
33
|
+
import kotlinx.coroutines.CoroutineScope
|
|
34
|
+
import kotlinx.coroutines.Dispatchers
|
|
35
|
+
import kotlinx.coroutines.Job
|
|
36
|
+
import kotlinx.coroutines.SupervisorJob
|
|
37
|
+
import kotlinx.coroutines.coroutineScope
|
|
38
|
+
import kotlinx.coroutines.flow.collectLatest
|
|
39
|
+
import kotlinx.coroutines.launch
|
|
40
|
+
import kotlinx.serialization.encodeToString
|
|
41
|
+
import kotlinx.serialization.json.Json
|
|
42
|
+
import org.json.JSONArray
|
|
43
|
+
import org.json.JSONObject
|
|
44
|
+
|
|
45
|
+
class PrimerRNHeadlessUniversalCheckoutBanksComponent(
|
|
46
|
+
private val reactContext: ReactApplicationContext,
|
|
47
|
+
) : ReactContextBaseJavaModule(reactContext) {
|
|
48
|
+
override fun getName() = "RNTPrimerHeadlessUniversalCheckoutBanksComponent"
|
|
49
|
+
|
|
50
|
+
private var job: Job? = null
|
|
51
|
+
private var banksComponent: BanksComponent? = null
|
|
52
|
+
private var viewModelStoreOwner: ViewModelStoreOwner? = null
|
|
53
|
+
|
|
54
|
+
@ReactMethod
|
|
55
|
+
fun configure(paymentMethodType: String, promise: Promise) {
|
|
56
|
+
|
|
57
|
+
val currentViewModelStoreOwner =
|
|
58
|
+
reactContext.currentActivity as? ViewModelStoreOwner
|
|
59
|
+
?: run { PrimerRNViewModelStoreOwner() }
|
|
60
|
+
|
|
61
|
+
viewModelStoreOwner = currentViewModelStoreOwner
|
|
62
|
+
banksComponent =
|
|
63
|
+
PrimerHeadlessUniversalCheckoutComponentWithRedirectManager(currentViewModelStoreOwner)
|
|
64
|
+
.provide<BanksComponent>(paymentMethodType = paymentMethodType)
|
|
65
|
+
|
|
66
|
+
val lifecycleScope =
|
|
67
|
+
(reactContext.currentActivity as? LifecycleOwner)?.lifecycleScope
|
|
68
|
+
?: CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
69
|
+
|
|
70
|
+
job =
|
|
71
|
+
lifecycleScope.launch {
|
|
72
|
+
if (banksComponent == null) {
|
|
73
|
+
val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
|
|
74
|
+
promise.reject(exception.errorId, exception.description)
|
|
75
|
+
} else {
|
|
76
|
+
coroutineScope {
|
|
77
|
+
launch { configureBanksListener() }
|
|
78
|
+
|
|
79
|
+
launch { configureValidationListener() }
|
|
80
|
+
|
|
81
|
+
launch { configureErrorListener() }
|
|
82
|
+
promise.resolve(null)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@ReactMethod
|
|
89
|
+
fun start(promise: Promise) {
|
|
90
|
+
if (banksComponent == null) {
|
|
91
|
+
val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
|
|
92
|
+
promise.reject(exception.errorId, exception.description)
|
|
93
|
+
} else {
|
|
94
|
+
banksComponent?.start()
|
|
95
|
+
promise.resolve(null)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@ReactMethod
|
|
100
|
+
fun submit(promise: Promise) {
|
|
101
|
+
if (banksComponent == null) {
|
|
102
|
+
val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
|
|
103
|
+
promise.reject(exception.errorId, exception.description)
|
|
104
|
+
} else {
|
|
105
|
+
banksComponent?.submit()
|
|
106
|
+
promise.resolve(null)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@ReactMethod
|
|
111
|
+
fun onBankSelected(bankId: String, promise: Promise) {
|
|
112
|
+
if (banksComponent == null) {
|
|
113
|
+
val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
|
|
114
|
+
promise.reject(exception.errorId, exception.description)
|
|
115
|
+
} else {
|
|
116
|
+
banksComponent?.updateCollectedData(BanksCollectableData.BankId(bankId))
|
|
117
|
+
promise.resolve(null)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@ReactMethod
|
|
122
|
+
fun onBankFilterChange(filter: String, promise: Promise) {
|
|
123
|
+
if (banksComponent == null) {
|
|
124
|
+
val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
|
|
125
|
+
promise.reject(exception.errorId, exception.description)
|
|
126
|
+
} else {
|
|
127
|
+
banksComponent?.updateCollectedData(BanksCollectableData.Filter(filter))
|
|
128
|
+
promise.resolve(null)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private suspend fun configureErrorListener() {
|
|
133
|
+
banksComponent?.componentError?.collectLatest { error ->
|
|
134
|
+
sendEvent(
|
|
135
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_ERROR.eventName,
|
|
136
|
+
JSONObject().apply {
|
|
137
|
+
put(
|
|
138
|
+
"errors",
|
|
139
|
+
JSONArray().apply {
|
|
140
|
+
put(JSONObject(json.encodeToString(error.toPrimerErrorRN())))
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private suspend fun configureBanksListener() {
|
|
149
|
+
banksComponent?.componentStep?.collectLatest { banksStep ->
|
|
150
|
+
when (banksStep) {
|
|
151
|
+
is BanksStep.Loading -> {
|
|
152
|
+
sendEvent(
|
|
153
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
|
|
154
|
+
JSONObject(json.encodeToString(banksStep.toLoadingRN()))
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
is BanksStep.BanksRetrieved -> {
|
|
158
|
+
sendEvent(
|
|
159
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
|
|
160
|
+
JSONObject(
|
|
161
|
+
json.encodeToString(banksStep.toBanksRetrievedRN())
|
|
162
|
+
)
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
private suspend fun configureValidationListener() {
|
|
170
|
+
banksComponent?.componentValidationStatus?.collectLatest { validationStatus ->
|
|
171
|
+
when (validationStatus) {
|
|
172
|
+
is PrimerValidationStatus.Validating -> {
|
|
173
|
+
sendEvent(
|
|
174
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATING.eventName,
|
|
175
|
+
JSONObject().apply {
|
|
176
|
+
putData(validationStatus.collectableData as BanksCollectableData)
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
is PrimerValidationStatus.Invalid -> {
|
|
181
|
+
sendEvent(
|
|
182
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_IN_VALID.eventName,
|
|
183
|
+
JSONObject().apply {
|
|
184
|
+
putData(validationStatus.collectableData as BanksCollectableData)
|
|
185
|
+
put(
|
|
186
|
+
"errors",
|
|
187
|
+
JSONArray(
|
|
188
|
+
validationStatus.validationErrors.map {
|
|
189
|
+
JSONObject(
|
|
190
|
+
json.encodeToString(
|
|
191
|
+
PrimerValidationErrorRN(
|
|
192
|
+
it.errorId,
|
|
193
|
+
it.description,
|
|
194
|
+
it.diagnosticsId,
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
}
|
|
199
|
+
)
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
is PrimerValidationStatus.Valid -> {
|
|
205
|
+
sendEvent(
|
|
206
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALID.eventName,
|
|
207
|
+
JSONObject().apply {
|
|
208
|
+
putData(validationStatus.collectableData as BanksCollectableData)
|
|
209
|
+
}
|
|
210
|
+
)
|
|
211
|
+
}
|
|
212
|
+
is PrimerValidationStatus.Error -> {
|
|
213
|
+
sendEvent(
|
|
214
|
+
PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATION_ERROR.eventName,
|
|
215
|
+
JSONObject().apply {
|
|
216
|
+
putData(validationStatus.collectableData as BanksCollectableData)
|
|
217
|
+
put(
|
|
218
|
+
"errors",
|
|
219
|
+
JSONArray().apply {
|
|
220
|
+
put(JSONObject(json.encodeToString(validationStatus.error.toPrimerErrorRN())))
|
|
221
|
+
}
|
|
222
|
+
)
|
|
223
|
+
}
|
|
224
|
+
)
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
private fun JSONObject.putData(collectableData: BanksCollectableData) {
|
|
231
|
+
put(
|
|
232
|
+
"data",
|
|
233
|
+
JSONObject(
|
|
234
|
+
json.encodeToString(
|
|
235
|
+
when (collectableData) {
|
|
236
|
+
is BanksCollectableData.BankId -> collectableData.toBankIdRN()
|
|
237
|
+
is BanksCollectableData.Filter -> collectableData.toFilterRN()
|
|
238
|
+
}
|
|
239
|
+
)
|
|
240
|
+
)
|
|
241
|
+
)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@ReactMethod fun addListener(eventName: String?) = Unit
|
|
245
|
+
|
|
246
|
+
@ReactMethod fun removeListeners(count: Int?) = Unit
|
|
247
|
+
|
|
248
|
+
private fun JSONObject?.toWritableMap(): WritableMap =
|
|
249
|
+
this?.let { convertJsonToMap(this) } ?: Arguments.createMap()
|
|
250
|
+
|
|
251
|
+
private fun JSONArray?.toWritableArray(): WritableArray =
|
|
252
|
+
this?.let { convertJsonToArray(this) } ?: Arguments.createArray()
|
|
253
|
+
|
|
254
|
+
private fun sendEvent(name: String, data: JSONObject?) {
|
|
255
|
+
reactApplicationContext
|
|
256
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
257
|
+
.emit(name, data.toWritableMap())
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
private fun sendEvent(name: String, data: JSONArray?) {
|
|
261
|
+
reactApplicationContext
|
|
262
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
263
|
+
.emit(name, data.toWritableArray())
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
@ReactMethod
|
|
267
|
+
fun cleanUp(promise: Promise) {
|
|
268
|
+
job?.cancel()
|
|
269
|
+
job = null
|
|
270
|
+
banksComponent = null
|
|
271
|
+
viewModelStoreOwner?.viewModelStore?.clear()
|
|
272
|
+
promise.resolve(null)
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
private companion object {
|
|
276
|
+
const val UNINITIALIZED_ERROR =
|
|
277
|
+
"""
|
|
278
|
+
The BanksComponent has not been initialized.
|
|
279
|
+
Make sure you have initialized the `BanksComponent` first.
|
|
280
|
+
"""
|
|
281
|
+
|
|
282
|
+
val json = Json { encodeDefaults = true }
|
|
283
|
+
}
|
|
284
|
+
}
|