react-native-rook-sdk 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/AndroidManifestNew.xml +0 -8
  3. package/android/src/main/java/com/rooksdk/RookSdkModule.kt +113 -53
  4. package/android/src/main/java/com/rooksdk/broadcasts/AndroidPermissionsReceiverTransmitter.kt +36 -0
  5. package/android/src/main/java/com/rooksdk/broadcasts/HealthConnectPermissionsReceiverTransmitter.kt +35 -0
  6. package/android/src/main/java/com/rooksdk/utils/ReadableToWritable.kt +44 -0
  7. package/android/src/main/java/com/rooksdk/{RookDateTime.kt → utils/RookDateTime.kt} +1 -1
  8. package/ios/RookSdk.mm +104 -41
  9. package/lib/commonjs/context/RookSyncGateProvider.js +2 -1
  10. package/lib/commonjs/context/RookSyncGateProvider.js.map +1 -1
  11. package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js +5 -2
  12. package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js.map +1 -1
  13. package/lib/commonjs/hooks/useRookConfiguration.js.map +1 -1
  14. package/lib/commonjs/hooks/useRookDataSources.js +13 -1
  15. package/lib/commonjs/hooks/useRookDataSources.js.map +1 -1
  16. package/lib/commonjs/hooks/useRookPermissions.js +27 -16
  17. package/lib/commonjs/hooks/useRookPermissions.js.map +1 -1
  18. package/lib/commonjs/hooks/useRookSummaries.js +1 -0
  19. package/lib/commonjs/hooks/useRookSummaries.js.map +1 -1
  20. package/lib/commonjs/index.js +20 -8
  21. package/lib/commonjs/index.js.map +1 -1
  22. package/lib/commonjs/modules/hook/useRookAutoSync.js +44 -6
  23. package/lib/commonjs/modules/hook/useRookAutoSync.js.map +1 -1
  24. package/lib/commonjs/modules/types/sendMessageBroadcast.js +2 -0
  25. package/lib/commonjs/modules/types/sendMessageBroadcast.js.map +1 -0
  26. package/lib/module/context/RookSyncGateProvider.js +2 -1
  27. package/lib/module/context/RookSyncGateProvider.js.map +1 -1
  28. package/lib/module/hooks/useRookAndroidBackgroundSteps.js +5 -2
  29. package/lib/module/hooks/useRookAndroidBackgroundSteps.js.map +1 -1
  30. package/lib/module/hooks/useRookConfiguration.js.map +1 -1
  31. package/lib/module/hooks/useRookDataSources.js +13 -1
  32. package/lib/module/hooks/useRookDataSources.js.map +1 -1
  33. package/lib/module/hooks/useRookPermissions.js +28 -17
  34. package/lib/module/hooks/useRookPermissions.js.map +1 -1
  35. package/lib/module/hooks/useRookSummaries.js +1 -0
  36. package/lib/module/hooks/useRookSummaries.js.map +1 -1
  37. package/lib/module/index.js +2 -1
  38. package/lib/module/index.js.map +1 -1
  39. package/lib/module/modules/hook/useRookAutoSync.js +44 -6
  40. package/lib/module/modules/hook/useRookAutoSync.js.map +1 -1
  41. package/lib/module/modules/types/sendMessageBroadcast.js +2 -0
  42. package/lib/module/modules/types/sendMessageBroadcast.js.map +1 -0
  43. package/lib/typescript/src/context/RookSyncGateProvider.d.ts.map +1 -1
  44. package/lib/typescript/src/hooks/useRookAndroidBackgroundSteps.d.ts.map +1 -1
  45. package/lib/typescript/src/hooks/useRookConfiguration.d.ts +1 -1
  46. package/lib/typescript/src/hooks/useRookConfiguration.d.ts.map +1 -1
  47. package/lib/typescript/src/hooks/useRookDataSources.d.ts +2 -1
  48. package/lib/typescript/src/hooks/useRookDataSources.d.ts.map +1 -1
  49. package/lib/typescript/src/hooks/useRookPermissions.d.ts +6 -3
  50. package/lib/typescript/src/hooks/useRookPermissions.d.ts.map +1 -1
  51. package/lib/typescript/src/hooks/useRookSummaries.d.ts.map +1 -1
  52. package/lib/typescript/src/index.d.ts +2 -1
  53. package/lib/typescript/src/index.d.ts.map +1 -1
  54. package/lib/typescript/src/modules/hook/useRookAutoSync.d.ts +2 -1
  55. package/lib/typescript/src/modules/hook/useRookAutoSync.d.ts.map +1 -1
  56. package/lib/typescript/src/modules/types/sendMessageBroadcast.d.ts +6 -0
  57. package/lib/typescript/src/modules/types/sendMessageBroadcast.d.ts.map +1 -0
  58. package/lib/typescript/src/types/DataSource.d.ts +1 -0
  59. package/lib/typescript/src/types/DataSource.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/react-native-rook-sdk.podspec +1 -1
  62. package/android/src/main/java/com/rooksdk/HealthConnectPermissionsActivity.kt +0 -40
  63. package/android/src/main/res/layout/activity_health_connect_permissions.xml +0 -15
@@ -90,6 +90,6 @@ dependencies {
90
90
  //noinspection GradleDynamicVersion
91
91
  implementation "com.facebook.react:react-native:+"
92
92
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
93
- implementation 'com.rookmotion.android:rook-sdk:1.4.0'
93
+ implementation 'com.rookmotion.android:rook-sdk:1.6.0'
94
94
  }
95
95
 
@@ -33,12 +33,4 @@
33
33
  <uses-permission android:name="android.permission.health.READ_NUTRITION"/>
34
34
  <uses-permission android:name="android.permission.health.READ_MENSTRUATION"/>
35
35
  <uses-permission android:name="android.permission.health.READ_POWER"/>
36
-
37
- <application>
38
- <activity
39
- android:name=".HealthConnectPermissionsActivity"
40
- android:theme="@style/HealthConnectTheme"
41
- android:excludeFromRecents="true"
42
- android:exported="false"/>
43
- </application>
44
36
  </manifest>
@@ -1,5 +1,7 @@
1
1
  package com.rooksdk
2
2
 
3
+ import android.content.IntentFilter
4
+ import androidx.core.content.ContextCompat
3
5
  import com.facebook.react.bridge.Arguments
4
6
  import com.facebook.react.bridge.Promise
5
7
  import com.facebook.react.bridge.ReactApplicationContext
@@ -11,21 +13,24 @@ import com.facebook.react.modules.core.DeviceEventManagerModule
11
13
  import com.rookmotion.rook.sdk.RookConfigurationManager
12
14
  import com.rookmotion.rook.sdk.RookDataSources
13
15
  import com.rookmotion.rook.sdk.RookEventManager
14
- import com.rookmotion.rook.sdk.RookHealthPermissionsManager
15
16
  import com.rookmotion.rook.sdk.RookHelpers
17
+ import com.rookmotion.rook.sdk.RookPermissionsManager
16
18
  import com.rookmotion.rook.sdk.RookStepsManager
17
- import com.rookmotion.rook.sdk.RookStepsPermissions
18
19
  import com.rookmotion.rook.sdk.RookSummaryManager
19
20
  import com.rookmotion.rook.sdk.RookYesterdaySyncManager
20
- import com.rookmotion.rook.sdk.RookYesterdaySyncPermissions
21
+ import com.rookmotion.rook.sdk.domain.enums.HealthConnectAvailability
21
22
  import com.rookmotion.rook.sdk.domain.environment.RookAndroidClass
22
23
  import com.rookmotion.rook.sdk.domain.environment.RookEnvironment
23
24
  import com.rookmotion.rook.sdk.domain.model.RookConfiguration
24
25
  import com.rookmotion.rook.sdk.domain.enums.HealthDataType
25
- import com.rookmotion.rook.sdk.domain.enums.SyncInstruction
26
+ import com.rookmotion.rook.sdk.domain.enums.RequestPermissionsStatus
26
27
  import com.rookmotion.rook.sdk.domain.enums.SyncStatus
27
28
  import com.rookmotion.rook.sdk.domain.model.DataSource
28
29
  import com.rookmotion.rook.sdk.domain.model.SyncStatusWithData
30
+ import com.rooksdk.broadcasts.AndroidPermissionsReceiverTransmitter
31
+ import com.rooksdk.broadcasts.HealthConnectPermissionsReceiverTransmitter
32
+ import com.rooksdk.utils.ReadableToWritable
33
+ import com.rooksdk.utils.RookDateTime
29
34
  import kotlinx.coroutines.CoroutineScope
30
35
  import kotlinx.coroutines.Dispatchers
31
36
  import kotlinx.coroutines.SupervisorJob
@@ -36,7 +41,6 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
36
41
  ReactContextBaseJavaModule(reactContext) {
37
42
 
38
43
  private val rookConfigurationManager = RookConfigurationManager(reactApplicationContext)
39
- private val rookHealthPermissionsManager = RookHealthPermissionsManager(rookConfigurationManager)
40
44
  private val rookSummaryManager = RookSummaryManager(rookConfigurationManager)
41
45
  private val rookEventManager = RookEventManager(rookConfigurationManager)
42
46
  private var scope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
@@ -54,12 +58,43 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
54
58
  RookStepsManager(reactApplicationContext)
55
59
  }
56
60
 
61
+ private val rookPermissionsManager: RookPermissionsManager by lazy {
62
+ RookPermissionsManager(reactApplicationContext)
63
+ }
64
+
65
+ private val androidPermissionsReceiverTransmitter: AndroidPermissionsReceiverTransmitter by lazy {
66
+ AndroidPermissionsReceiverTransmitter()
67
+ }
68
+
69
+ private val hcPermissionsReceiverTransmitter: HealthConnectPermissionsReceiverTransmitter by lazy {
70
+ HealthConnectPermissionsReceiverTransmitter()
71
+ }
72
+
57
73
  override fun getName(): String {
58
74
  return NAME
59
75
  }
60
76
 
61
77
  @ReactMethod
62
78
  fun addListener(eventName: String) {
79
+ if (listenerCount == 0) {
80
+ androidPermissionsReceiverTransmitter.setReactApplicationContext(reactApplicationContext)
81
+ hcPermissionsReceiverTransmitter.setReactApplicationContext(reactApplicationContext)
82
+
83
+ ContextCompat.registerReceiver(
84
+ reactApplicationContext,
85
+ androidPermissionsReceiverTransmitter,
86
+ IntentFilter(RookPermissionsManager.ACTION_ANDROID_PERMISSIONS),
87
+ ContextCompat.RECEIVER_EXPORTED
88
+ )
89
+
90
+ ContextCompat.registerReceiver(
91
+ reactApplicationContext,
92
+ hcPermissionsReceiverTransmitter,
93
+ IntentFilter(RookPermissionsManager.ACTION_HEALTH_CONNECT_PERMISSIONS),
94
+ ContextCompat.RECEIVER_EXPORTED,
95
+ )
96
+ }
97
+
63
98
  listenerCount += 1
64
99
  }
65
100
 
@@ -68,6 +103,9 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
68
103
  listenerCount -= count
69
104
  if (listenerCount == 0) {
70
105
  stepsScope.cancel()
106
+
107
+ reactApplicationContext.unregisterReceiver(hcPermissionsReceiverTransmitter)
108
+ reactApplicationContext.unregisterReceiver(androidPermissionsReceiverTransmitter)
71
109
  }
72
110
  }
73
111
 
@@ -95,7 +133,7 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
95
133
  val map = Arguments.createMap()
96
134
  map.putString("name", dataSource.name)
97
135
  map.putString("description", dataSource.description)
98
- map.putString("image", dataSource.image)
136
+ map.putString("imageUrl", dataSource.image)
99
137
  map.putBoolean("connected", dataSource.connected)
100
138
  dataSource.authorizationUrl?.let {
101
139
  map.putString("authorizationUrl", it)
@@ -105,21 +143,15 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
105
143
  return array
106
144
  }
107
145
 
108
- private fun determineDoEndValue(permissionString: String): SyncInstruction {
109
- return when (permissionString) {
110
- "oldest" -> SyncInstruction.SYNC_OLDEST
111
- "latest" -> SyncInstruction.SYNC_LATEST
112
- else -> SyncInstruction.NOTHING
113
- }
114
- }
115
-
116
146
  @ReactMethod
117
147
  fun getUserID(promise: Promise) {
118
- try {
119
- promise.resolve(rookConfigurationManager.getUserID())
120
- }
121
- catch (e: Exception) {
122
- promise.reject(e)
148
+ scope.launch {
149
+ try {
150
+ promise.resolve(rookConfigurationManager.getUserID())
151
+ }
152
+ catch (e: Exception) {
153
+ promise.reject(e)
154
+ }
123
155
  }
124
156
  }
125
157
 
@@ -217,10 +249,34 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
217
249
  }
218
250
 
219
251
  // MARK: - Permissions
252
+ @ReactMethod
253
+ fun shouldRequestPermissions(promise: Promise) {
254
+ val activity = reactApplicationContext.currentActivity
255
+
256
+ if (activity == null) {
257
+ promise.reject(Exception("Error trying to request permissions"))
258
+ return
259
+ }
260
+
261
+ try {
262
+ val r = RookPermissionsManager.shouldRequestAndroidPermissions(activity)
263
+ promise.resolve(r)
264
+ }
265
+ catch (e: Exception) {
266
+ promise.reject(e)
267
+ }
268
+ }
269
+
220
270
  @ReactMethod
221
271
  fun checkAvailability(promise: Promise) {
222
272
 
223
- promise.resolve(RookHealthPermissionsManager.checkAvailability(reactApplicationContext).toString())
273
+ val r = rookPermissionsManager.checkHealthConnectAvailability()
274
+
275
+ when(r) {
276
+ HealthConnectAvailability.INSTALLED -> promise.resolve("INSTALED")
277
+ HealthConnectAvailability.NOT_INSTALLED -> promise.resolve("NOT_INSTALED")
278
+ HealthConnectAvailability.NOT_SUPPORTED -> promise.resolve("NOT_SUPPORTED")
279
+ }
224
280
 
225
281
  }
226
282
 
@@ -228,7 +284,7 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
228
284
  fun openHealthConnectSettings(promise: Promise) {
229
285
  scope.launch {
230
286
 
231
- val result = rookHealthPermissionsManager.openHealthConnectSettings()
287
+ val result = rookPermissionsManager.openHealthConnectSettings()
232
288
 
233
289
  result.fold({
234
290
  promise.resolve(true)
@@ -242,7 +298,7 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
242
298
  @ReactMethod
243
299
  fun checkPermissions(promise: Promise) {
244
300
  scope.launch {
245
- val result = rookHealthPermissionsManager.checkPermissions();
301
+ val result = rookPermissionsManager.checkHealthConnectPermissions()
246
302
 
247
303
  result.fold({
248
304
  promise.resolve(it)
@@ -254,26 +310,22 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
254
310
 
255
311
  @ReactMethod
256
312
  fun requestPermissions(promise: Promise) {
257
- val activity = reactApplicationContext.currentActivity
258
-
259
- if (activity == null) {
260
- promise.reject(Exception("Error trying to request permissions"))
261
- return
262
- }
263
-
264
- try {
265
-
266
- HealthConnectPermissionsActivity.launch(activity)
267
- promise.resolve(true)
268
-
269
- }
270
- catch (e: Exception) {
271
- promise.reject(e)
313
+ scope.launch {
314
+ rookPermissionsManager.requestHealthConnectPermissions().fold({
315
+ when(it) {
316
+ RequestPermissionsStatus.REQUEST_SENT -> {
317
+ promise.resolve("REQUEST_SENT")
318
+ }
319
+ RequestPermissionsStatus .ALREADY_GRANTED -> {
320
+ promise.resolve("ALREADY_GRANTED")
321
+ }
322
+ }
323
+ }, {
324
+ promise.reject(it)
325
+ })
272
326
  }
273
-
274
327
  }
275
328
 
276
-
277
329
  // MARK: - Sync Summaries
278
330
  @ReactMethod
279
331
  fun shouldSyncFor(summaryString: String, date: String,promise: Promise) {
@@ -524,14 +576,11 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
524
576
  if (config.getString("environment") == "production")
525
577
  environment = RookEnvironment.PRODUCTION
526
578
 
527
- val doEnd = determineDoEndValue(config.getString("doOnEnd") ?: "")
528
-
529
579
  rookSynManager.scheduleYesterdaySync(
530
580
  enableLogs = true,
531
581
  clientUUID = config.getString("clientUUID") ?: "",
532
582
  secretKey = config.getString(",") ?: "",
533
583
  environment = environment,
534
- doOnEnd = doEnd
535
584
  )
536
585
 
537
586
  promise.resolve(true)
@@ -547,8 +596,11 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
547
596
  @ReactMethod
548
597
  fun requestAndroidBackgroundPermissions(promise: Promise) {
549
598
  try {
550
- RookYesterdaySyncPermissions.requestAndroidPermissions(reactApplicationContext)
551
- promise.resolve(true)
599
+ val response = rookPermissionsManager.requestAndroidPermissions()
600
+
601
+ if (response == RequestPermissionsStatus.REQUEST_SENT)
602
+ promise.resolve("REQUEST_SENT")
603
+ else promise.resolve("ALREADY_GRANTED")
552
604
  }
553
605
  catch (e: Exception) {
554
606
  promise.reject(e)
@@ -558,7 +610,7 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
558
610
  @ReactMethod
559
611
  fun hasAndroidBackgroundPermissions(promise: Promise) {
560
612
  try {
561
- val result = RookYesterdaySyncPermissions.hasAndroidPermissions(reactApplicationContext)
613
+ val result = rookPermissionsManager.checkAndroidPermissions()
562
614
  promise.resolve(result)
563
615
  }
564
616
  catch (e: Exception) {
@@ -569,18 +621,12 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
569
621
  // MARK: - Steps
570
622
  @ReactMethod
571
623
  fun isStepsAvailable(promise: Promise) {
572
- promise.resolve(RookStepsPermissions.isAvailable(reactApplicationContext))
624
+ promise.resolve(rookStepsManager.isAvailable())
573
625
  }
574
626
 
575
627
  @ReactMethod
576
628
  fun hasStepsPermissions(promise: Promise) {
577
- promise.resolve(RookStepsPermissions.hasPermissions(reactApplicationContext))
578
- }
579
-
580
- @ReactMethod
581
- fun requestStepsPermissions(promise: Promise) {
582
- RookStepsPermissions.requestPermissions(reactApplicationContext)
583
- promise.resolve(true)
629
+ promise.resolve(rookPermissionsManager.checkAndroidPermissions())
584
630
  }
585
631
 
586
632
  @ReactMethod
@@ -683,6 +729,20 @@ class RookSdkModule(reactContext: ReactApplicationContext) :
683
729
  })
684
730
  }
685
731
 
732
+ @ReactMethod
733
+ fun sendMessageToBroadcast(message: ReadableMap, promise: Promise) {
734
+ if (listenerCount <= 0) return
735
+
736
+ val hash = ReadableToWritable.readableMapToHashMap(message)
737
+ val writable = ReadableToWritable.hashMapToWritableMap(hash)
738
+
739
+ reactApplicationContext
740
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
741
+ .emit("ROOK_NOTIFICATION", writable)
742
+
743
+ promise.resolve(true)
744
+ }
745
+
686
746
  companion object {
687
747
  const val NAME = "RookSdk"
688
748
  }
@@ -0,0 +1,36 @@
1
+ package com.rooksdk.broadcasts
2
+
3
+ import android.content.BroadcastReceiver
4
+ import android.content.Context
5
+ import android.content.Intent
6
+ import com.facebook.react.bridge.Arguments
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.modules.core.DeviceEventManagerModule
9
+ import com.rookmotion.rook.sdk.RookPermissionsManager
10
+
11
+ class AndroidPermissionsReceiverTransmitter: BroadcastReceiver() {
12
+ private var reactApplicationContext: ReactApplicationContext? = null
13
+
14
+ override fun onReceive(context: Context?, intent: Intent?) {
15
+ val permissionsGranted = intent?.getBooleanExtra(
16
+ /* name = */ RookPermissionsManager.EXTRA_ANDROID_PERMISSIONS_GRANTED,
17
+ /* defaultValue = */ false
18
+ ) ?: false
19
+
20
+ if (reactApplicationContext == null) return
21
+
22
+ val params = Arguments.createMap().apply {
23
+ putString("type", "ROOK_BACKGROUND_ANDROID_PERMISSIONS")
24
+ putBoolean("value", permissionsGranted)
25
+ }
26
+
27
+ reactApplicationContext!!
28
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
29
+ .emit("ROOK_NOTIFICATION", params)
30
+ }
31
+
32
+ fun setReactApplicationContext(context: ReactApplicationContext) {
33
+ this.reactApplicationContext = context
34
+ }
35
+
36
+ }
@@ -0,0 +1,35 @@
1
+ package com.rooksdk.broadcasts
2
+
3
+ import android.content.BroadcastReceiver
4
+ import android.content.Context
5
+ import android.content.Intent
6
+ import com.facebook.react.bridge.Arguments
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.modules.core.DeviceEventManagerModule
9
+ import com.rookmotion.rook.sdk.RookPermissionsManager
10
+
11
+ class HealthConnectPermissionsReceiverTransmitter: BroadcastReceiver() {
12
+ private var reactApplicationContext: ReactApplicationContext? = null
13
+
14
+ override fun onReceive(context: Context?, intent: Intent?) {
15
+ val permissionsGranted = intent?.getBooleanExtra(
16
+ /* name = */ RookPermissionsManager.EXTRA_HEALTH_CONNECT_PERMISSIONS_GRANTED,
17
+ /* defaultValue = */ false
18
+ ) ?: false
19
+
20
+ if (reactApplicationContext == null) return
21
+
22
+ val params = Arguments.createMap().apply {
23
+ putString("type", "ROOK_HEALTH_CONNECT_PERMISSIONS")
24
+ putBoolean("value", permissionsGranted)
25
+ }
26
+
27
+ reactApplicationContext!!
28
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
29
+ .emit("ROOK_NOTIFICATION", params)
30
+ }
31
+
32
+ fun setReactApplicationContext(context: ReactApplicationContext) {
33
+ this.reactApplicationContext = context
34
+ }
35
+ }
@@ -0,0 +1,44 @@
1
+ package com.rooksdk.utils
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import com.facebook.react.bridge.ReadableType
6
+ import com.facebook.react.bridge.WritableMap
7
+
8
+ object ReadableToWritable {
9
+ fun readableMapToHashMap(readableMap: ReadableMap): HashMap<String, Any> {
10
+ val map = HashMap<String, Any>()
11
+ val iterator = readableMap.keySetIterator()
12
+
13
+ while (iterator.hasNextKey()) {
14
+ val key = iterator.nextKey()
15
+ when (readableMap.getType(key)) {
16
+ ReadableType.Boolean -> map[key] = readableMap.getBoolean(key)
17
+ ReadableType.Number -> map[key] = readableMap.getDouble(key)
18
+ ReadableType.String -> map[key] = readableMap.getString(key) ?: ""
19
+ ReadableType.Map -> map[key] = readableMapToHashMap(readableMap.getMap(key)!!)
20
+ ReadableType.Array -> map[key] = readableMap.getArray(key)!!.toArrayList()
21
+ else -> {} // Manejar otros tipos si es necesario
22
+ }
23
+ }
24
+
25
+ return map
26
+ }
27
+
28
+ fun hashMapToWritableMap(hashMap: HashMap<String, Any>): WritableMap {
29
+ val writableMap = Arguments.createMap()
30
+
31
+ for ((key, value) in hashMap) {
32
+ when (value) {
33
+ is Boolean -> writableMap.putBoolean(key, value)
34
+ is Double -> writableMap.putDouble(key, value)
35
+ is String -> writableMap.putString(key, value)
36
+ is HashMap<*, *> -> writableMap.putMap(key, hashMapToWritableMap(value as HashMap<String, Any>))
37
+ is ArrayList<*> -> writableMap.putArray(key, Arguments.fromArray(value))
38
+ }
39
+ }
40
+
41
+ return writableMap
42
+ }
43
+
44
+ }
@@ -1,4 +1,4 @@
1
- package com.rooksdk
1
+ package com.rooksdk.utils
2
2
 
3
3
  import java.time.LocalDate
4
4
  import java.time.format.DateTimeFormatter