@yuno-payments/yuno-sdk-react-native 1.0.17-rc.6 → 1.0.17-rc.8

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.
@@ -26,6 +26,7 @@ import kotlinx.coroutines.CoroutineScope
26
26
  import kotlinx.coroutines.Dispatchers
27
27
  import kotlinx.coroutines.flow.launchIn
28
28
  import kotlinx.coroutines.flow.onEach
29
+ import kotlinx.coroutines.flow.catch
29
30
  import androidx.lifecycle.asFlow
30
31
 
31
32
  /**
@@ -853,6 +854,12 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
853
854
  try {
854
855
  Log.d(TAG, "generateToken called with checkoutSession: $checkoutSession")
855
856
 
857
+ val activity = currentActivity
858
+ if (activity == null) {
859
+ promise.reject("ACTIVITY_UNAVAILABLE", "Current activity is null. Cannot generate token.")
860
+ return
861
+ }
862
+
856
863
  // Convert ReadableMap to TokenCollectedData using Gson
857
864
  val gson = Gson()
858
865
  val jsonString = convertReadableMapToJson(tokenCollectedData)
@@ -864,11 +871,11 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
864
871
  val apiClient = Yuno.apiClientPayment(
865
872
  checkoutSession = checkoutSession,
866
873
  countryCode = countryCode,
867
- context = reactContext
874
+ context = activity.applicationContext
868
875
  )
869
876
 
870
- // Generate token
871
- apiClient.generateToken(collectedData, reactContext)
877
+ // Generate token - pass activity for WebView context
878
+ apiClient.generateToken(collectedData, activity)
872
879
  .asFlow()
873
880
  .onEach { result ->
874
881
  try {
@@ -897,6 +904,10 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
897
904
  promise.reject("TOKEN_GENERATION_ERROR", e.message)
898
905
  }
899
906
  }
907
+ .catch { e ->
908
+ Log.e(TAG, "❌ Flow error in token generation: ${e.message}")
909
+ promise.reject("TOKEN_GENERATION_ERROR", e.message ?: "Unknown error in token generation flow")
910
+ }
900
911
  .launchIn(CoroutineScope(Dispatchers.Main))
901
912
  } catch (e: Exception) {
902
913
  Log.e(TAG, "❌ Error in generateToken: ${e.message}")
@@ -921,15 +932,21 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
921
932
  try {
922
933
  Log.d(TAG, "getThreeDSecureChallenge called with checkoutSession: $checkoutSession")
923
934
 
935
+ val activity = currentActivity
936
+ if (activity == null) {
937
+ promise.reject("ACTIVITY_UNAVAILABLE", "Current activity is null. Cannot get 3DS challenge.")
938
+ return
939
+ }
940
+
924
941
  // Create API client
925
942
  val apiClient = Yuno.apiClientPayment(
926
943
  checkoutSession = checkoutSession,
927
944
  countryCode = countryCode,
928
- context = reactContext
945
+ context = activity.applicationContext
929
946
  )
930
947
 
931
- // Get 3DS challenge
932
- apiClient.getThreeDSecureChallenge(reactContext, checkoutSession)
948
+ // Get 3DS challenge - pass activity for WebView context
949
+ apiClient.getThreeDSecureChallenge(activity, checkoutSession)
933
950
  .asFlow()
934
951
  .onEach { result ->
935
952
  try {
@@ -950,6 +967,10 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
950
967
  promise.reject("THREE_DS_ERROR", e.message)
951
968
  }
952
969
  }
970
+ .catch { e ->
971
+ Log.e(TAG, "❌ Flow error in 3DS challenge: ${e.message}")
972
+ promise.reject("THREE_DS_ERROR", e.message ?: "Unknown error in 3DS challenge flow")
973
+ }
953
974
  .launchIn(CoroutineScope(Dispatchers.Main))
954
975
  } catch (e: Exception) {
955
976
  Log.e(TAG, "❌ Error in getThreeDSecureChallenge: ${e.message}")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuno-payments/yuno-sdk-react-native",
3
- "version": "1.0.17-rc.6",
3
+ "version": "1.0.17-rc.8",
4
4
  "description": "Yuno React Native SDK empowers you to create seamless payment experiences in your native Android and iOS apps built with React Native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",