@primer-io/react-native 2.39.0 → 2.39.1

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 (17) hide show
  1. package/android/build.gradle +12 -17
  2. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +4 -1
  3. package/android/src/main/java/com/primerioreactnative/PrimerSdkPackage.kt +117 -0
  4. package/android/src/main/java/com/primerioreactnative/components/manager/ach/PrimerRNAchMandateManager.kt +4 -1
  5. package/android/src/main/java/com/primerioreactnative/components/manager/ach/PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent.kt +8 -4
  6. package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +6 -0
  7. package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +7 -4
  8. package/android/src/main/java/com/primerioreactnative/components/manager/googlePay/PrimerGooglePayButtonConstantsModule.kt +3 -1
  9. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +9 -5
  10. package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +7 -1
  11. package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +7 -3
  12. package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +7 -1
  13. package/android/src/newarch/java/com/primerioreactnative/NativePrimerModule.kt +3 -3
  14. package/android/src/oldarch/java/com/primerioreactnative/NativePrimerModule.kt +3 -2
  15. package/ios/Sources/version.swift +1 -1
  16. package/package.json +1 -1
  17. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +0 -77
@@ -21,9 +21,15 @@ buildscript {
21
21
  }
22
22
  }
23
23
 
24
+ def isNewArchitectureEnabled() {
25
+ return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
26
+ }
27
+
24
28
  apply plugin: 'com.android.library'
25
29
  apply plugin: 'kotlin-android'
26
- apply plugin: "com.facebook.react"
30
+ if (isNewArchitectureEnabled()) {
31
+ apply plugin: "com.facebook.react"
32
+ }
27
33
  apply plugin: 'kotlinx-serialization'
28
34
  apply plugin: 'io.gitlab.arturbosch.detekt'
29
35
  apply from: "./config/coverage-scripts/kover.gradle"
@@ -36,10 +42,6 @@ def getExtOrIntegerDefault(name) {
36
42
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['ReactNative_' + name]).toInteger()
37
43
  }
38
44
 
39
- def isNewArchitectureEnabled() {
40
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
41
- }
42
-
43
45
  java {
44
46
  toolchain {
45
47
  languageVersion.set(JavaLanguageVersion.of(17))
@@ -86,18 +88,11 @@ android {
86
88
  }
87
89
  }
88
90
 
89
- sourceSets {
90
- main {
91
- java.srcDirs += [
92
- "generated/java",
93
- "generated/jni"
94
- ]
95
-
96
- if (isNewArchitectureEnabled()) {
97
- java.srcDirs += ['src/newarch']
98
- } else {
99
- java.srcDirs += ['src/oldarch']
100
- }
91
+ sourceSets.main {
92
+ if (isNewArchitectureEnabled()) {
93
+ java.srcDirs += ['src/newarch']
94
+ } else {
95
+ java.srcDirs += ['src/oldarch']
101
96
  }
102
97
  }
103
98
  }
@@ -7,6 +7,7 @@ import com.facebook.react.bridge.ReactApplicationContext
7
7
  import com.facebook.react.bridge.ReactContextBaseJavaModule
8
8
  import com.facebook.react.bridge.ReactMethod
9
9
  import com.facebook.react.bridge.WritableMap
10
+ import com.facebook.react.module.annotations.ReactModule
10
11
  import com.facebook.react.modules.core.DeviceEventManagerModule
11
12
  import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
12
13
  import com.primerioreactnative.datamodels.ErrorTypeRN
@@ -26,6 +27,7 @@ import org.json.JSONObject
26
27
 
27
28
  @Suppress("TooManyFunctions")
28
29
  @ExperimentalPrimerApi
30
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckout.NAME)
29
31
  class PrimerRNHeadlessUniversalCheckout(
30
32
  private val reactContext: ReactApplicationContext,
31
33
  private val json: Json,
@@ -193,7 +195,8 @@ class PrimerRNHeadlessUniversalCheckout(
193
195
  return data.toWritableMap()
194
196
  }
195
197
 
196
- private companion object {
198
+ companion object {
197
199
  const val TAG = "PrimerHUC"
200
+ const val NAME = "PrimerHeadlessUniversalCheckout"
198
201
  }
199
202
  }
@@ -0,0 +1,117 @@
1
+ package com.primerioreactnative
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.annotations.ReactModule
7
+ import com.facebook.react.module.annotations.ReactModuleList
8
+ import com.facebook.react.module.model.ReactModuleInfo
9
+ import com.facebook.react.module.model.ReactModuleInfoProvider
10
+ import com.facebook.react.uimanager.ViewManager
11
+ import com.primerioreactnative.components.manager.ach.PrimerRNAchMandateManager
12
+ import com.primerioreactnative.components.manager.ach.PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent
13
+ import com.primerioreactnative.components.manager.asset.PrimerRNHeadlessUniversalCheckoutAssetManager
14
+ import com.primerioreactnative.components.manager.banks.PrimerRNHeadlessUniversalCheckoutBanksComponent
15
+ import com.primerioreactnative.components.manager.googlePay.PrimerGooglePayButtonConstantsModule
16
+ import com.primerioreactnative.components.manager.googlePay.PrimerGooglePayButtonManager
17
+ import com.primerioreactnative.components.manager.klarna.PrimerKlarnaPaymentViewManager
18
+ import com.primerioreactnative.components.manager.klarna.PrimerRNHeadlessUniversalCheckoutKlarnaComponent
19
+ import com.primerioreactnative.components.manager.nativeUi.PrimerRNHeadlessUniversalCheckoutNativeUiManager
20
+ import com.primerioreactnative.components.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
21
+ import com.primerioreactnative.components.manager.vault.PrimerRNHeadlessUniversalCheckoutVaultManager
22
+ import kotlinx.serialization.json.Json
23
+
24
+ @ReactModuleList(
25
+ nativeModules = [
26
+ NativePrimerModule::class,
27
+ ],
28
+ )
29
+ class PrimerSdkPackage : BaseReactPackage() {
30
+
31
+ private val json = Json { ignoreUnknownKeys = true }
32
+
33
+ // Old Architecture modules
34
+ private val oldArchModules: Array<Class<out NativeModule>> = arrayOf(
35
+ PrimerRNHeadlessUniversalCheckout::class.java,
36
+ PrimerRNHeadlessUniversalCheckoutRawManager::class.java,
37
+ PrimerRNHeadlessUniversalCheckoutNativeUiManager::class.java,
38
+ PrimerRNHeadlessUniversalCheckoutAssetManager::class.java,
39
+ PrimerRNHeadlessUniversalCheckoutVaultManager::class.java,
40
+ PrimerRNHeadlessUniversalCheckoutKlarnaComponent::class.java,
41
+ PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent::class.java,
42
+ PrimerRNAchMandateManager::class.java,
43
+ PrimerRNHeadlessUniversalCheckoutBanksComponent::class.java,
44
+ PrimerGooglePayButtonConstantsModule::class.java,
45
+ )
46
+
47
+ // New Architecture modules
48
+ private val newArchModules: Array<Class<out NativeModule>> = arrayOf(
49
+ NativePrimerModule::class.java,
50
+ )
51
+
52
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? =
53
+ when (name) {
54
+ DefaultNativePrimerModule.NAME -> NativePrimerModule(reactContext, json)
55
+ PrimerRNHeadlessUniversalCheckout.NAME -> PrimerRNHeadlessUniversalCheckout(reactContext, json)
56
+ PrimerRNHeadlessUniversalCheckoutRawManager.NAME -> PrimerRNHeadlessUniversalCheckoutRawManager(
57
+ reactContext,
58
+ json,
59
+ )
60
+
61
+ PrimerRNHeadlessUniversalCheckoutNativeUiManager.NAME -> PrimerRNHeadlessUniversalCheckoutNativeUiManager(
62
+ reactContext,
63
+ )
64
+
65
+ PrimerRNHeadlessUniversalCheckoutAssetManager.NAME -> PrimerRNHeadlessUniversalCheckoutAssetManager(
66
+ reactContext,
67
+ )
68
+ PrimerRNHeadlessUniversalCheckoutVaultManager.NAME -> PrimerRNHeadlessUniversalCheckoutVaultManager(
69
+ reactContext,
70
+ json,
71
+ )
72
+
73
+ PrimerRNHeadlessUniversalCheckoutKlarnaComponent.NAME -> PrimerRNHeadlessUniversalCheckoutKlarnaComponent(
74
+ reactContext,
75
+ )
76
+
77
+ PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent.NAME ->
78
+ PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(
79
+ reactContext,
80
+ )
81
+
82
+ PrimerRNAchMandateManager.NAME -> PrimerRNAchMandateManager(reactContext)
83
+ PrimerRNHeadlessUniversalCheckoutBanksComponent.NAME -> PrimerRNHeadlessUniversalCheckoutBanksComponent(
84
+ reactContext,
85
+ )
86
+
87
+ PrimerGooglePayButtonConstantsModule.NAME -> PrimerGooglePayButtonConstantsModule(reactContext)
88
+ else -> null
89
+ }
90
+
91
+ override fun getReactModuleInfoProvider() = ReactModuleInfoProvider {
92
+ val moduleList = newArchModules + oldArchModules
93
+
94
+ val reactModuleInfoMap: MutableMap<String, ReactModuleInfo> = HashMap()
95
+ for (moduleClass in moduleList) {
96
+ val reactModule = moduleClass.getAnnotation(ReactModule::class.java) ?: continue
97
+ reactModuleInfoMap[reactModule.name] = ReactModuleInfo(
98
+ reactModule.name,
99
+ moduleClass.name,
100
+ reactModule.canOverrideExistingModule,
101
+ reactModule.needsEagerInit,
102
+ reactModule.isCxxModule,
103
+ newArchModules.any {
104
+ it.name == moduleClass.name
105
+ }, // isTurboModule
106
+ )
107
+ }
108
+ reactModuleInfoMap
109
+ }
110
+
111
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
112
+ return mutableListOf(
113
+ PrimerKlarnaPaymentViewManager(),
114
+ PrimerGooglePayButtonManager(),
115
+ )
116
+ }
117
+ }
@@ -6,14 +6,16 @@ import com.facebook.react.bridge.Promise
6
6
  import com.facebook.react.bridge.ReactApplicationContext
7
7
  import com.facebook.react.bridge.ReactContextBaseJavaModule
8
8
  import com.facebook.react.bridge.ReactMethod
9
+ import com.facebook.react.module.annotations.ReactModule
9
10
  import com.primerioreactnative.datamodels.ErrorTypeRN
10
11
  import com.primerioreactnative.utils.errorTo
11
12
  import kotlinx.coroutines.launch
12
13
 
14
+ @ReactModule(name = PrimerRNAchMandateManager.NAME)
13
15
  class PrimerRNAchMandateManager(
14
16
  private val reactContext: ReactApplicationContext,
15
17
  ) : ReactContextBaseJavaModule(reactContext) {
16
- override fun getName() = "RNTAchMandateManager"
18
+ override fun getName() = NAME
17
19
 
18
20
  @ReactMethod
19
21
  fun acceptMandate(promise: Promise) {
@@ -69,5 +71,6 @@ class PrimerRNAchMandateManager(
69
71
  """
70
72
  Unitialized 'declineMandate' property.
71
73
  """.trimIndent()
74
+ const val NAME = "RNTAchMandateManager"
72
75
  }
73
76
  }
@@ -8,6 +8,7 @@ import com.facebook.react.bridge.Promise
8
8
  import com.facebook.react.bridge.ReactApplicationContext
9
9
  import com.facebook.react.bridge.ReactContextBaseJavaModule
10
10
  import com.facebook.react.bridge.ReactMethod
11
+ import com.facebook.react.module.annotations.ReactModule
11
12
  import com.facebook.react.modules.core.DeviceEventManagerModule
12
13
  import com.primerioreactnative.PrimerRNViewModelStoreOwner
13
14
  import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutComponentEvent
@@ -37,10 +38,11 @@ import org.json.JSONArray
37
38
  import org.json.JSONObject
38
39
 
39
40
  @Suppress("TooManyFunctions")
41
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent.NAME)
40
42
  class PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(
41
43
  private val reactContext: ReactApplicationContext,
42
44
  ) : ReactContextBaseJavaModule(reactContext) {
43
- override fun getName() = "RNTPrimerHeadlessUniversalCheckoutStripeAchUserDetailsComponent"
45
+ override fun getName() = NAME
44
46
 
45
47
  private var job: Job? = null
46
48
  private var viewModelStoreOwner: ViewModelStoreOwner? = null
@@ -277,11 +279,13 @@ class PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(
277
279
  }
278
280
 
279
281
  companion object {
280
- const val INITIALIZATION_ERROR = """
282
+ private val json = Json { encodeDefaults = true }
283
+
284
+ private const val INITIALIZATION_ERROR = """
281
285
  An error occurred during component initialization.
282
286
  """
283
287
 
284
- const val UNINITIALIZED_ERROR =
288
+ private const val UNINITIALIZED_ERROR =
285
289
  """
286
290
  The component has not been initialized.
287
291
  Make sure you have initialized the `component` first.
@@ -293,6 +297,6 @@ class PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(
293
297
  Make sure your root activity extends ComponentActivity.
294
298
  """
295
299
 
296
- val json = Json { encodeDefaults = true }
300
+ const val NAME = "RNTPrimerHeadlessUniversalCheckoutStripeAchUserDetailsComponent"
297
301
  }
298
302
  }
@@ -5,6 +5,7 @@ import com.facebook.react.bridge.Promise
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
7
7
  import com.facebook.react.bridge.ReactMethod
8
+ import com.facebook.react.module.annotations.ReactModule
8
9
  import com.primerioreactnative.components.assets.AssetsManager
9
10
  import com.primerioreactnative.components.assets.AssetsManager.drawableToBitmap
10
11
  import com.primerioreactnative.components.assets.CardNetworkImageFileProvider.getFileForCardNetworkAsset
@@ -30,6 +31,7 @@ import kotlinx.serialization.json.Json
30
31
  import org.json.JSONObject
31
32
 
32
33
  @ExperimentalPrimerApi
34
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutAssetManager.NAME)
33
35
  internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
34
36
  private val reactContext: ReactApplicationContext,
35
37
  ) : ReactContextBaseJavaModule(reactContext) {
@@ -220,4 +222,8 @@ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
220
222
  promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
221
223
  }
222
224
  }
225
+
226
+ companion object {
227
+ const val NAME = "RNTPrimerHeadlessUniversalCheckoutAssetsManager"
228
+ }
223
229
  }
@@ -7,6 +7,7 @@ import com.facebook.react.bridge.Promise
7
7
  import com.facebook.react.bridge.ReactApplicationContext
8
8
  import com.facebook.react.bridge.ReactContextBaseJavaModule
9
9
  import com.facebook.react.bridge.ReactMethod
10
+ import com.facebook.react.module.annotations.ReactModule
10
11
  import com.facebook.react.modules.core.DeviceEventManagerModule
11
12
  import com.primerioreactnative.PrimerRNViewModelStoreOwner
12
13
  import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutComponentEvent
@@ -38,10 +39,11 @@ import org.json.JSONArray
38
39
  import org.json.JSONObject
39
40
 
40
41
  @Suppress("TooManyFunctions")
42
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutBanksComponent.NAME)
41
43
  class PrimerRNHeadlessUniversalCheckoutBanksComponent(
42
44
  private val reactContext: ReactApplicationContext,
43
45
  ) : ReactContextBaseJavaModule(reactContext) {
44
- override fun getName() = "RNTPrimerHeadlessUniversalCheckoutBanksComponent"
46
+ override fun getName() = NAME
45
47
 
46
48
  private var job: Job? = null
47
49
  private var banksComponent: BanksComponent? = null
@@ -255,13 +257,14 @@ class PrimerRNHeadlessUniversalCheckoutBanksComponent(
255
257
  promise.resolve(null)
256
258
  }
257
259
 
258
- private companion object {
259
- const val UNINITIALIZED_ERROR =
260
+ companion object {
261
+ private const val UNINITIALIZED_ERROR =
260
262
  """
261
263
  The BanksComponent has not been initialized.
262
264
  Make sure you have initialized the `BanksComponent` first.
263
265
  """
264
266
 
265
- val json = Json { encodeDefaults = true }
267
+ private val json = Json { encodeDefaults = true }
268
+ const val NAME = "RNTPrimerHeadlessUniversalCheckoutBanksComponent"
266
269
  }
267
270
  }
@@ -2,6 +2,7 @@ package com.primerioreactnative.components.manager.googlePay
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
4
  import com.facebook.react.bridge.ReactContextBaseJavaModule
5
+ import com.facebook.react.module.annotations.ReactModule
5
6
  import com.google.android.gms.wallet.button.ButtonConstants
6
7
 
7
8
  internal object PrimerGooglePayButtonOptionsMapping {
@@ -24,6 +25,7 @@ internal object PrimerGooglePayButtonOptionsMapping {
24
25
  }
25
26
  }
26
27
 
28
+ @ReactModule(name = PrimerGooglePayButtonConstantsModule.NAME)
27
29
  class PrimerGooglePayButtonConstantsModule(reactContext: ReactApplicationContext) :
28
30
  ReactContextBaseJavaModule(reactContext) {
29
31
  override fun getConstants(): Map<String, Any> = PrimerGooglePayButtonOptionsMapping.getOptions()
@@ -31,6 +33,6 @@ class PrimerGooglePayButtonConstantsModule(reactContext: ReactApplicationContext
31
33
  override fun getName() = NAME
32
34
 
33
35
  companion object {
34
- private const val NAME = "PrimerGooglePayButtonConstants"
36
+ const val NAME = "PrimerGooglePayButtonConstants"
35
37
  }
36
38
  }
@@ -8,6 +8,7 @@ import com.facebook.react.bridge.ReactApplicationContext
8
8
  import com.facebook.react.bridge.ReactContextBaseJavaModule
9
9
  import com.facebook.react.bridge.ReactMethod
10
10
  import com.facebook.react.bridge.ReadableMap
11
+ import com.facebook.react.module.annotations.ReactModule
11
12
  import com.facebook.react.modules.core.DeviceEventManagerModule
12
13
  import com.primerioreactnative.PrimerRNViewModelStoreOwner
13
14
  import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutComponentEvent
@@ -45,10 +46,11 @@ import org.json.JSONArray
45
46
  import org.json.JSONObject
46
47
 
47
48
  @Suppress("TooManyFunctions")
49
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutKlarnaComponent.NAME)
48
50
  class PrimerRNHeadlessUniversalCheckoutKlarnaComponent(
49
51
  private val reactContext: ReactApplicationContext,
50
52
  ) : ReactContextBaseJavaModule(reactContext) {
51
- override fun getName(): String = "RNTPrimerHeadlessUniversalCheckoutKlarnaComponent"
53
+ override fun getName(): String = NAME
52
54
 
53
55
  private var job: Job? = null
54
56
  private var viewModelStoreOwner: ViewModelStoreOwner? = null
@@ -314,17 +316,19 @@ class PrimerRNHeadlessUniversalCheckoutKlarnaComponent(
314
316
  promise.resolve(null)
315
317
  }
316
318
 
317
- private companion object {
318
- const val UNINITIALIZED_ERROR =
319
+ companion object {
320
+ private const val UNINITIALIZED_ERROR =
319
321
  """
320
322
  The KlarnaComponent has not been initialized.
321
323
  Make sure you have initialized the `KlarnaComponent` first.
322
324
  """
323
- const val MISSING_ACTIVITY_ERROR =
325
+ private const val MISSING_ACTIVITY_ERROR =
324
326
  """
325
327
  Could not retrieve running activity from context.
326
328
  """
327
329
 
328
- val json by lazy { Json { encodeDefaults = true } }
330
+ private val json by lazy { Json { encodeDefaults = true } }
331
+
332
+ const val NAME = "RNTPrimerHeadlessUniversalCheckoutKlarnaComponent"
329
333
  }
330
334
  }
@@ -4,6 +4,7 @@ import com.facebook.react.bridge.Promise
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.module.annotations.ReactModule
7
8
  import com.primerioreactnative.datamodels.ErrorTypeRN
8
9
  import com.primerioreactnative.datamodels.PrimerErrorRN
9
10
  import com.primerioreactnative.utils.errorTo
@@ -16,13 +17,14 @@ import io.primer.android.core.ExperimentalPrimerApi
16
17
  import io.primer.android.domain.exception.UnsupportedPaymentIntentException
17
18
 
18
19
  @ExperimentalPrimerApi
20
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutNativeUiManager.NAME)
19
21
  internal class PrimerRNHeadlessUniversalCheckoutNativeUiManager(
20
22
  private val reactContext: ReactApplicationContext,
21
23
  ) : ReactContextBaseJavaModule(reactContext) {
22
24
  private lateinit var nativeUiManager: PrimerHeadlessUniversalCheckoutNativeUiManagerInterface
23
25
  private var paymentMethodTypeStr: String? = null
24
26
 
25
- override fun getName() = "RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager"
27
+ override fun getName() = NAME
26
28
 
27
29
  @ReactMethod
28
30
  fun configure(
@@ -91,4 +93,8 @@ internal class PrimerRNHeadlessUniversalCheckoutNativeUiManager(
91
93
  }
92
94
  }
93
95
  }
96
+
97
+ companion object {
98
+ const val NAME = "RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager"
99
+ }
94
100
  }
@@ -6,6 +6,7 @@ import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReactContextBaseJavaModule
7
7
  import com.facebook.react.bridge.ReactMethod
8
8
  import com.facebook.react.bridge.WritableMap
9
+ import com.facebook.react.module.annotations.ReactModule
9
10
  import com.facebook.react.modules.core.DeviceEventManagerModule
10
11
  import com.primerioreactnative.Keys
11
12
  import com.primerioreactnative.components.datamodels.core.PrimerRawPaymentMethodType
@@ -33,6 +34,7 @@ import org.json.JSONObject
33
34
 
34
35
  @Suppress("TooManyFunctions")
35
36
  @ExperimentalPrimerApi
37
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutRawManager.NAME)
36
38
  internal class PrimerRNHeadlessUniversalCheckoutRawManager(
37
39
  reactContext: ReactApplicationContext,
38
40
  private val json: Json,
@@ -45,7 +47,7 @@ internal class PrimerRNHeadlessUniversalCheckoutRawManager(
45
47
  listener.sendEvent = { eventName, paramsJson -> sendEvent(eventName, paramsJson) }
46
48
  }
47
49
 
48
- override fun getName() = "RNTPrimerHeadlessUniversalCheckoutRawDataManager"
50
+ override fun getName() = NAME
49
51
 
50
52
  @ReactMethod
51
53
  fun configure(
@@ -221,11 +223,13 @@ internal class PrimerRNHeadlessUniversalCheckoutRawManager(
221
223
  sendEvent(PrimerHeadlessUniversalCheckoutEvent.ON_ERROR.eventName, params)
222
224
  }
223
225
 
224
- private companion object {
225
- const val UNINITIALIZED_ERROR =
226
+ companion object {
227
+ private const val UNINITIALIZED_ERROR =
226
228
  """
227
229
  The RawDataManager has not been initialized.
228
230
  Make sure you have initialized the `RawDataManager' first.
229
231
  """
232
+
233
+ const val NAME = "RNTPrimerHeadlessUniversalCheckoutRawDataManager"
230
234
  }
231
235
  }
@@ -4,6 +4,7 @@ import com.facebook.react.bridge.Promise
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.module.annotations.ReactModule
7
8
  import com.primerioreactnative.components.datamodels.manager.vault.PrimerRNValidationErrors
8
9
  import com.primerioreactnative.components.datamodels.manager.vault.PrimerRNVaultedPaymentMethodAdditionalData
9
10
  import com.primerioreactnative.components.datamodels.manager.vault.PrimerRNVaultedPaymentMethods
@@ -23,6 +24,7 @@ import kotlinx.serialization.encodeToString
23
24
  import kotlinx.serialization.json.Json
24
25
  import org.json.JSONObject
25
26
 
27
+ @ReactModule(name = PrimerRNHeadlessUniversalCheckoutVaultManager.NAME)
26
28
  class PrimerRNHeadlessUniversalCheckoutVaultManager(
27
29
  reactContext: ReactApplicationContext,
28
30
  private val json: Json,
@@ -30,7 +32,7 @@ class PrimerRNHeadlessUniversalCheckoutVaultManager(
30
32
  private val vaultScope = CoroutineScope(SupervisorJob())
31
33
  private lateinit var nativeVaultManager: PrimerHeadlessUniversalCheckoutVaultManagerInterface
32
34
 
33
- override fun getName() = "RNPrimerHeadlessUniversalCheckoutVaultManager"
35
+ override fun getName() = NAME
34
36
 
35
37
  @ReactMethod
36
38
  fun configure(promise: Promise) {
@@ -168,4 +170,8 @@ class PrimerRNHeadlessUniversalCheckoutVaultManager(
168
170
  }
169
171
  }
170
172
  }
173
+
174
+ companion object {
175
+ const val NAME = "RNPrimerHeadlessUniversalCheckoutVaultManager"
176
+ }
171
177
  }
@@ -1,12 +1,12 @@
1
- package java.com.primerioreactnative
1
+ package com.primerioreactnative
2
2
 
3
3
  import com.facebook.react.bridge.Arguments
4
4
  import com.facebook.react.bridge.Promise
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
- import com.primerioreactnative.DefaultNativePrimerModule
7
- import com.primerioreactnative.NativePrimerSpec
6
+ import com.facebook.react.module.annotations.ReactModule
8
7
  import kotlinx.serialization.json.Json
9
8
 
9
+ @ReactModule(name = DefaultNativePrimerModule.NAME)
10
10
  class NativePrimerModule(private val reactContext: ReactApplicationContext, private val json: Json) :
11
11
  NativePrimerSpec(reactContext) {
12
12
  private val implementation by lazy {
@@ -1,13 +1,14 @@
1
- package java.com.primerioreactnative
1
+ package com.primerioreactnative
2
2
 
3
3
  import com.facebook.react.bridge.Promise
4
4
  import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
6
6
  import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.module.annotations.ReactModule
7
8
  import com.facebook.react.modules.core.DeviceEventManagerModule
8
- import com.primerioreactnative.DefaultNativePrimerModule
9
9
  import kotlinx.serialization.json.Json
10
10
 
11
+ @ReactModule(name = DefaultNativePrimerModule.NAME)
11
12
  class NativePrimerModule(private val reactContext: ReactApplicationContext, private val json: Json) :
12
13
  ReactContextBaseJavaModule(reactContext) {
13
14
  private val implementation by lazy {
@@ -1,2 +1,2 @@
1
1
  // swiftlint:disable:next identifier_name
2
- public let PrimerReactNativeSDKVersion = "2.39.0"
2
+ public let PrimerReactNativeSDKVersion = "2.39.1"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/react-native",
3
- "version": "2.39.0",
3
+ "version": "2.39.1",
4
4
  "description": "Primer SDK for RN",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,77 +0,0 @@
1
- package com.primerioreactnative
2
-
3
- import com.facebook.react.BaseReactPackage
4
- import com.facebook.react.ReactPackage
5
- import com.facebook.react.bridge.NativeModule
6
- import com.facebook.react.bridge.ReactApplicationContext
7
- import com.facebook.react.module.model.ReactModuleInfo
8
- import com.facebook.react.module.model.ReactModuleInfoProvider
9
- import com.facebook.react.uimanager.ViewManager
10
- import com.primerioreactnative.components.manager.ach.PrimerRNAchMandateManager
11
- import com.primerioreactnative.components.manager.ach.PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent
12
- import com.primerioreactnative.components.manager.asset.PrimerRNHeadlessUniversalCheckoutAssetManager
13
- import com.primerioreactnative.components.manager.banks.PrimerRNHeadlessUniversalCheckoutBanksComponent
14
- import com.primerioreactnative.components.manager.googlePay.PrimerGooglePayButtonConstantsModule
15
- import com.primerioreactnative.components.manager.googlePay.PrimerGooglePayButtonManager
16
- import com.primerioreactnative.components.manager.klarna.PrimerKlarnaPaymentViewManager
17
- import com.primerioreactnative.components.manager.klarna.PrimerRNHeadlessUniversalCheckoutKlarnaComponent
18
- import com.primerioreactnative.components.manager.nativeUi.PrimerRNHeadlessUniversalCheckoutNativeUiManager
19
- import com.primerioreactnative.components.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
20
- import com.primerioreactnative.components.manager.vault.PrimerRNHeadlessUniversalCheckoutVaultManager
21
- import kotlinx.serialization.json.Json
22
- import java.com.primerioreactnative.NativePrimerModule
23
-
24
- class ReactNativePackage : ReactPackage {
25
- private val json = Json { ignoreUnknownKeys = true }
26
-
27
- override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
28
- return listOf(
29
- PrimerRNHeadlessUniversalCheckout(reactContext, json),
30
- PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json),
31
- PrimerRNHeadlessUniversalCheckoutNativeUiManager(reactContext),
32
- PrimerRNHeadlessUniversalCheckoutAssetManager(reactContext),
33
- PrimerRNHeadlessUniversalCheckoutVaultManager(reactContext, json),
34
- PrimerRNHeadlessUniversalCheckoutKlarnaComponent(reactContext),
35
- PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(reactContext),
36
- PrimerRNAchMandateManager(reactContext),
37
- // region Component with redirect components
38
- PrimerRNHeadlessUniversalCheckoutBanksComponent(reactContext),
39
- // endregion
40
- // region Google Pay Helpers
41
- PrimerGooglePayButtonConstantsModule(reactContext),
42
- // endregion
43
- )
44
- }
45
-
46
- override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
47
- return mutableListOf(
48
- PrimerKlarnaPaymentViewManager(),
49
- PrimerGooglePayButtonManager(),
50
- )
51
- }
52
- }
53
-
54
- class ReactNativeTurboPackage : BaseReactPackage() {
55
-
56
- private val json = Json { ignoreUnknownKeys = true }
57
-
58
- override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? =
59
- if (name == DefaultNativePrimerModule.NAME) {
60
- NativePrimerModule(reactContext, json)
61
- } else {
62
- null
63
- }
64
-
65
- override fun getReactModuleInfoProvider() = ReactModuleInfoProvider {
66
- mapOf(
67
- DefaultNativePrimerModule.NAME to ReactModuleInfo(
68
- name = DefaultNativePrimerModule.NAME,
69
- className = DefaultNativePrimerModule.NAME,
70
- canOverrideExistingModule = false,
71
- needsEagerInit = false,
72
- isCxxModule = false,
73
- isTurboModule = true,
74
- ),
75
- )
76
- }
77
- }