@capillarytech/react-native-hydra-lib 1.8.1 → 1.8.3-beta.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 (58) hide show
  1. package/android/libs/repo/com/capillarytech/hydra-anonymous/{1.10.0/hydra-anonymous-1.10.0.module → 1.10.1/hydra-anonymous-1.10.1.module} +5 -5
  2. package/android/libs/repo/com/capillarytech/hydra-anonymous/{1.10.0/hydra-anonymous-1.10.0.pom → 1.10.1/hydra-anonymous-1.10.1.pom} +1 -1
  3. package/android/libs/repo/com/capillarytech/hydra-core/{1.10.0/hydra-core-1.10.0.aar → 1.10.1/hydra-core-1.10.1.aar} +0 -0
  4. package/android/libs/repo/com/capillarytech/hydra-core/{1.10.0/hydra-core-1.10.0.module → 1.10.1/hydra-core-1.10.1.module} +21 -21
  5. package/android/libs/repo/com/capillarytech/hydra-core/{1.10.0/hydra-core-1.10.0.pom → 1.10.1/hydra-core-1.10.1.pom} +4 -4
  6. package/android/libs/repo/com/capillarytech/hydra-firebase/{1.10.0/hydra-firebase-1.10.0.aar → 1.10.1/hydra-firebase-1.10.1.aar} +0 -0
  7. package/android/libs/repo/com/capillarytech/hydra-firebase/{1.10.0/hydra-firebase-1.10.0.module → 1.10.1/hydra-firebase-1.10.1.module} +16 -16
  8. package/android/libs/repo/com/capillarytech/hydra-firebase/{1.10.0/hydra-firebase-1.10.0.pom → 1.10.1/hydra-firebase-1.10.1.pom} +2 -2
  9. package/android/libs/repo/com/capillarytech/hydra-gamification/1.10.1/hydra-gamification-1.10.1.aar +0 -0
  10. package/android/libs/repo/com/capillarytech/hydra-gamification/{1.10.0/hydra-gamification-1.10.0.module → 1.10.1/hydra-gamification-1.10.1.module} +15 -15
  11. package/android/libs/repo/com/capillarytech/hydra-gamification/{1.10.0/hydra-gamification-1.10.0.pom → 1.10.1/hydra-gamification-1.10.1.pom} +1 -1
  12. package/android/libs/repo/com/capillarytech/hydra-gamification-ui/1.10.1/hydra-gamification-ui-1.10.1.aar +0 -0
  13. package/android/libs/repo/com/capillarytech/hydra-gamification-ui/{1.10.0/hydra-gamification-ui-1.10.0.module → 1.10.1/hydra-gamification-ui-1.10.1.module} +17 -17
  14. package/android/libs/repo/com/capillarytech/hydra-gamification-ui/{1.10.0/hydra-gamification-ui-1.10.0.pom → 1.10.1/hydra-gamification-ui-1.10.1.pom} +2 -2
  15. package/android/libs/repo/com/capillarytech/hydra-inapp/{1.10.0/hydra-inapp-1.10.0.aar → 1.10.1/hydra-inapp-1.10.1.aar} +0 -0
  16. package/android/libs/repo/com/capillarytech/hydra-inapp/{1.10.0/hydra-inapp-1.10.0.module → 1.10.1/hydra-inapp-1.10.1.module} +15 -15
  17. package/android/libs/repo/com/capillarytech/hydra-inapp/{1.10.0/hydra-inapp-1.10.0.pom → 1.10.1/hydra-inapp-1.10.1.pom} +1 -1
  18. package/android/libs/repo/com/capillarytech/hydra-inbox-core/{1.10.0/hydra-inbox-core-1.10.0.aar → 1.10.1/hydra-inbox-core-1.10.1.aar} +0 -0
  19. package/android/libs/repo/com/capillarytech/hydra-inbox-core/{1.10.0/hydra-inbox-core-1.10.0.module → 1.10.1/hydra-inbox-core-1.10.1.module} +15 -15
  20. package/android/libs/repo/com/capillarytech/hydra-inbox-core/{1.10.0/hydra-inbox-core-1.10.0.pom → 1.10.1/hydra-inbox-core-1.10.1.pom} +1 -1
  21. package/android/libs/repo/com/capillarytech/hydra-inbox-ui/{1.10.0/hydra-inbox-ui-1.10.0.aar → 1.10.1/hydra-inbox-ui-1.10.1.aar} +0 -0
  22. package/android/libs/repo/com/capillarytech/hydra-inbox-ui/{1.10.0/hydra-inbox-ui-1.10.0.module → 1.10.1/hydra-inbox-ui-1.10.1.module} +17 -17
  23. package/android/libs/repo/com/capillarytech/hydra-inbox-ui/{1.10.0/hydra-inbox-ui-1.10.0.pom → 1.10.1/hydra-inbox-ui-1.10.1.pom} +3 -3
  24. package/android/libs/repo/com/capillarytech/hydra-pushbase/{1.10.0/hydra-pushbase-1.10.0.aar → 1.10.1/hydra-pushbase-1.10.1.aar} +0 -0
  25. package/android/libs/repo/com/capillarytech/hydra-pushbase/{1.10.0/hydra-pushbase-1.10.0.module → 1.10.1/hydra-pushbase-1.10.1.module} +15 -15
  26. package/android/libs/repo/com/capillarytech/hydra-pushbase/{1.10.0/hydra-pushbase-1.10.0.pom → 1.10.1/hydra-pushbase-1.10.1.pom} +1 -1
  27. package/android/libs/repo/com/capillarytech/hydra-richnotification/{1.10.0/hydra-richnotification-1.10.0.aar → 1.10.1/hydra-richnotification-1.10.1.aar} +0 -0
  28. package/android/libs/repo/com/capillarytech/hydra-richnotification/{1.10.0/hydra-richnotification-1.10.0.module → 1.10.1/hydra-richnotification-1.10.1.module} +16 -16
  29. package/android/libs/repo/com/capillarytech/hydra-richnotification/{1.10.0/hydra-richnotification-1.10.0.pom → 1.10.1/hydra-richnotification-1.10.1.pom} +2 -2
  30. package/android/src/main/java/com/hydralib/gamification/GamificationBannerViewManager.kt +12 -2
  31. package/android/src/main/java/com/hydralib/gamification/GamificationEmbedViewManager.kt +8 -2
  32. package/android/src/main/java/com/hydralib/gamification/PendingEntryPointBinds.kt +37 -0
  33. package/android/src/main/java/com/hydralib/hydrasdk/HydraCore.kt +70 -2
  34. package/android/src/main/java/com/hydralib/hydrasdk/HydraPushNotification.kt +11 -0
  35. package/android/src/newarch/HydraLibModule.kt +4 -0
  36. package/android/src/oldarch/HydraLibModule.kt +5 -0
  37. package/ios/HydraLib.mm +5 -0
  38. package/lib/commonjs/NativeHydraLib.ts +1 -0
  39. package/lib/commonjs/hydra-apis/HydraPushNotification.js +5 -0
  40. package/lib/commonjs/hydra-apis/HydraPushNotification.js.map +1 -1
  41. package/lib/module/NativeHydraLib.ts +1 -0
  42. package/lib/module/hydra-apis/HydraPushNotification.js +5 -0
  43. package/lib/module/hydra-apis/HydraPushNotification.js.map +1 -1
  44. package/lib/typescript/commonjs/src/NativeHydraLib.d.ts +1 -0
  45. package/lib/typescript/commonjs/src/NativeHydraLib.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/src/hydra-apis/HydraPushNotification.d.ts +1 -0
  47. package/lib/typescript/commonjs/src/hydra-apis/HydraPushNotification.d.ts.map +1 -1
  48. package/lib/typescript/module/src/NativeHydraLib.d.ts +1 -0
  49. package/lib/typescript/module/src/NativeHydraLib.d.ts.map +1 -1
  50. package/lib/typescript/module/src/hydra-apis/HydraPushNotification.d.ts +1 -0
  51. package/lib/typescript/module/src/hydra-apis/HydraPushNotification.d.ts.map +1 -1
  52. package/package.json +1 -1
  53. package/sbom.spdx.json +4 -4
  54. package/src/NativeHydraLib.ts +1 -0
  55. package/src/hydra-apis/HydraPushNotification.ts +5 -0
  56. package/android/libs/repo/com/capillarytech/hydra-gamification/1.10.0/hydra-gamification-1.10.0.aar +0 -0
  57. package/android/libs/repo/com/capillarytech/hydra-gamification-ui/1.10.0/hydra-gamification-ui-1.10.0.aar +0 -0
  58. /package/android/libs/repo/com/capillarytech/hydra-anonymous/{1.10.0/hydra-anonymous-1.10.0.aar → 1.10.1/hydra-anonymous-1.10.1.aar} +0 -0
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "com.capillarytech",
5
5
  "module": "hydra-pushbase",
6
- "version": "1.10.0",
6
+ "version": "1.10.1",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "hydra-pushbase-1.10.0.aar",
28
- "url": "hydra-pushbase-1.10.0.aar",
29
- "size": 205837,
30
- "sha512": "192d952e9b77f0c77ee40cc569069d64da9e000072aae6cbbb53a5bc0b3a1d5c5f001c385d369ddaab8fb815bbc9f414f2a11fd24078e779da50c8224a3e43d2",
31
- "sha256": "cc3ecce5f8be2cb95ecbdbe2e643a214889456c8511fef3310e8d957fffb66e2",
32
- "sha1": "6e0ee780a877ac6b99b20690bf53f15511b6e6db",
33
- "md5": "ac5f263dedd0fc04eff58b8113605996"
27
+ "name": "hydra-pushbase-1.10.1.aar",
28
+ "url": "hydra-pushbase-1.10.1.aar",
29
+ "size": 205833,
30
+ "sha512": "b0aedca6b6fc8a38c9dc50ad3f8a51dbcd8b272eb3526db6070d8c84cf4e380fe1fe667bc7874df06f1729c63d934f1376d36dd42d8038c1ec253d5d61e68b96",
31
+ "sha256": "c892ed961f7bb16ba363fe93505c2cf1d434fc126022fffa2fac5583e5a7ca4d",
32
+ "sha1": "300f4beb758f2288b4d01ecb0e3a07f33783c391",
33
+ "md5": "cd88cd6e3514a89f9cfdd33d195522ee"
34
34
  }
35
35
  ]
36
36
  },
@@ -158,13 +158,13 @@
158
158
  ],
159
159
  "files": [
160
160
  {
161
- "name": "hydra-pushbase-1.10.0.aar",
162
- "url": "hydra-pushbase-1.10.0.aar",
163
- "size": 205837,
164
- "sha512": "192d952e9b77f0c77ee40cc569069d64da9e000072aae6cbbb53a5bc0b3a1d5c5f001c385d369ddaab8fb815bbc9f414f2a11fd24078e779da50c8224a3e43d2",
165
- "sha256": "cc3ecce5f8be2cb95ecbdbe2e643a214889456c8511fef3310e8d957fffb66e2",
166
- "sha1": "6e0ee780a877ac6b99b20690bf53f15511b6e6db",
167
- "md5": "ac5f263dedd0fc04eff58b8113605996"
161
+ "name": "hydra-pushbase-1.10.1.aar",
162
+ "url": "hydra-pushbase-1.10.1.aar",
163
+ "size": 205833,
164
+ "sha512": "b0aedca6b6fc8a38c9dc50ad3f8a51dbcd8b272eb3526db6070d8c84cf4e380fe1fe667bc7874df06f1729c63d934f1376d36dd42d8038c1ec253d5d61e68b96",
165
+ "sha256": "c892ed961f7bb16ba363fe93505c2cf1d434fc126022fffa2fac5583e5a7ca4d",
166
+ "sha1": "300f4beb758f2288b4d01ecb0e3a07f33783c391",
167
+ "md5": "cd88cd6e3514a89f9cfdd33d195522ee"
168
168
  }
169
169
  ]
170
170
  }
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>com.capillarytech</groupId>
11
11
  <artifactId>hydra-pushbase</artifactId>
12
- <version>1.10.0</version>
12
+ <version>1.10.1</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>hydra-pushbase</name>
15
15
  <description>Capillary Hydra PushBase SDK</description>
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "com.capillarytech",
5
5
  "module": "hydra-richnotification",
6
- "version": "1.10.0",
6
+ "version": "1.10.1",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "hydra-richnotification-1.10.0.aar",
28
- "url": "hydra-richnotification-1.10.0.aar",
29
- "size": 50723,
30
- "sha512": "e6199b39512cb9f0b7a23fe6c163ffef48a35e4c4cac58c2f433b1d133e0be8c358c3380d54816782f8f131705b6efdbf10a609132c8f573e3004ea22b902300",
31
- "sha256": "afb51395823c22929cd77523fc195f542930c2790183ceeea554f72e46f5a41d",
32
- "sha1": "848cd6b76a53bc0f12f57dfa07358bc9d68d1265",
33
- "md5": "a3cefb8017c5572eb26f290a7d5ae524"
27
+ "name": "hydra-richnotification-1.10.1.aar",
28
+ "url": "hydra-richnotification-1.10.1.aar",
29
+ "size": 50725,
30
+ "sha512": "76cde0f39be269c85f9fb85844cb5bce8e769ee6e13d3873ab7339897ca6ccc81ec86e909956972641afd075c248fd94392ed01bed9864c907a118302280ac2c",
31
+ "sha256": "39f9e2fd55e4037ca639f154cfa1c9485ddd46f7ba22862134c2076d34537332",
32
+ "sha1": "e2265b636a6311f1c4aee3228226308b8053eb2a",
33
+ "md5": "e96f0609c37d4ba2bcc03549731222e9"
34
34
  }
35
35
  ]
36
36
  },
@@ -152,19 +152,19 @@
152
152
  "group": "com.capillarytech",
153
153
  "module": "hydra-pushbase",
154
154
  "version": {
155
- "requires": "1.10.0"
155
+ "requires": "1.10.1"
156
156
  }
157
157
  }
158
158
  ],
159
159
  "files": [
160
160
  {
161
- "name": "hydra-richnotification-1.10.0.aar",
162
- "url": "hydra-richnotification-1.10.0.aar",
163
- "size": 50723,
164
- "sha512": "e6199b39512cb9f0b7a23fe6c163ffef48a35e4c4cac58c2f433b1d133e0be8c358c3380d54816782f8f131705b6efdbf10a609132c8f573e3004ea22b902300",
165
- "sha256": "afb51395823c22929cd77523fc195f542930c2790183ceeea554f72e46f5a41d",
166
- "sha1": "848cd6b76a53bc0f12f57dfa07358bc9d68d1265",
167
- "md5": "a3cefb8017c5572eb26f290a7d5ae524"
161
+ "name": "hydra-richnotification-1.10.1.aar",
162
+ "url": "hydra-richnotification-1.10.1.aar",
163
+ "size": 50725,
164
+ "sha512": "76cde0f39be269c85f9fb85844cb5bce8e769ee6e13d3873ab7339897ca6ccc81ec86e909956972641afd075c248fd94392ed01bed9864c907a118302280ac2c",
165
+ "sha256": "39f9e2fd55e4037ca639f154cfa1c9485ddd46f7ba22862134c2076d34537332",
166
+ "sha1": "e2265b636a6311f1c4aee3228226308b8053eb2a",
167
+ "md5": "e96f0609c37d4ba2bcc03549731222e9"
168
168
  }
169
169
  ]
170
170
  }
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>com.capillarytech</groupId>
11
11
  <artifactId>hydra-richnotification</artifactId>
12
- <version>1.10.0</version>
12
+ <version>1.10.1</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>hydra-richnotification</name>
15
15
  <description>Capillary Hydra Rich Notification SDK</description>
@@ -121,7 +121,7 @@
121
121
  <dependency>
122
122
  <groupId>com.capillarytech</groupId>
123
123
  <artifactId>hydra-pushbase</artifactId>
124
- <version>1.10.0</version>
124
+ <version>1.10.1</version>
125
125
  <scope>runtime</scope>
126
126
  </dependency>
127
127
  </dependencies>
@@ -33,8 +33,13 @@ class GamificationBannerViewManager : SimpleViewManager<BannerView>() {
33
33
  // re-increments the SDK's persistent show-count for this entry point, exhausting its
34
34
  // frequency cap in half the real number of screen visits.
35
35
  if (view.tag == bannerId) return
36
- // findEntryPointByBannerId already logs the reason on failure
37
- val data = findEntryPointByBannerId(bannerId) ?: return
36
+ PendingEntryPointBinds.remove(view)
37
+ // findEntryPointByBannerId already logs the reason on failure. Queue the view so it can be
38
+ // re-bound once the entry points are refreshed (e.g. after signIn).
39
+ val data = findEntryPointByBannerId(bannerId) ?: run {
40
+ PendingEntryPointBinds.add(view) { setBannerId(view, bannerId) }
41
+ return
42
+ }
38
43
 
39
44
  // Defer bind until Yoga has measured and laid out the view
40
45
  if (view.width > 0 && view.height >= 0) {
@@ -146,6 +151,11 @@ class GamificationBannerViewManager : SimpleViewManager<BannerView>() {
146
151
  return entryPoint
147
152
  }
148
153
 
154
+ override fun onDropViewInstance(view: BannerView) {
155
+ PendingEntryPointBinds.remove(view)
156
+ super.onDropViewInstance(view)
157
+ }
158
+
149
159
  companion object {
150
160
  const val NAME = "GamificationBannerView"
151
161
  }
@@ -38,8 +38,13 @@ class GamificationEmbedViewManager : SimpleViewManager<EmbedWebView>() {
38
38
  // re-render (triggered by the height-changed event) calls bindWithLayout again and
39
39
  // accumulates an additional OnPreDrawListener, producing an infinite emit loop.
40
40
  if (view.tag == embedId) return
41
- // findEntryPointByEmbedId already logs the reason on failure
42
- val data = findEntryPointByEmbedId(embedId) ?: return
41
+ PendingEntryPointBinds.remove(view)
42
+ // findEntryPointByEmbedId already logs the reason on failure. Queue the view so it can be
43
+ // re-bound once the entry points are refreshed (e.g. after signIn).
44
+ val data = findEntryPointByEmbedId(embedId) ?: run {
45
+ PendingEntryPointBinds.add(view) { setEmbedId(view, embedId) }
46
+ return
47
+ }
43
48
 
44
49
  // Defer bind until Yoga has measured and laid out the view
45
50
  if (view.width > 0 && view.height >= 0) {
@@ -163,6 +168,7 @@ class GamificationEmbedViewManager : SimpleViewManager<EmbedWebView>() {
163
168
 
164
169
  override fun onDropViewInstance(view: EmbedWebView) {
165
170
  Logger.d("GamificationEmbedViewManager.onDropViewInstance", "Destroying embed view instance")
171
+ PendingEntryPointBinds.remove(view)
166
172
  preDrawListeners.remove(view)?.let { view.viewTreeObserver.removeOnPreDrawListener(it) }
167
173
  view.destroy()
168
174
  super.onDropViewInstance(view)
@@ -0,0 +1,37 @@
1
+ package com.hydralib.gamification
2
+
3
+ import android.view.View
4
+ import com.capillary.hydra.android.sdk.utils.Logger
5
+ import java.util.WeakHashMap
6
+
7
+ /**
8
+ * Embed/banner views whose embedId/bannerId had no matching entry point when the prop was set.
9
+ *
10
+ * The view managers resolve entry points only once, when RN sets the prop. After signIn the SDK
11
+ * fetches the logged-in user's entry points asynchronously, so a view mounted before that fetch
12
+ * completes would otherwise stay empty until the next app launch. HydraCore calls [retryAll]
13
+ * after signIn to re-run the bind for these views.
14
+ *
15
+ * Accessed only on the main thread (ReactProp setters, onDropViewInstance, main-looper posts).
16
+ * Weak keys so a view dropped without onDropViewInstance can't leak.
17
+ */
18
+ internal object PendingEntryPointBinds {
19
+ private val retries = WeakHashMap<View, () -> Unit>()
20
+
21
+ fun add(view: View, retry: () -> Unit) {
22
+ retries[view] = retry
23
+ }
24
+
25
+ fun remove(view: View) {
26
+ retries.remove(view)
27
+ }
28
+
29
+ fun isEmpty(): Boolean = retries.isEmpty()
30
+
31
+ fun retryAll() {
32
+ if (retries.isEmpty()) return
33
+ Logger.d("PendingEntryPointBinds.retryAll", "Retrying bind for ${retries.size} pending view(s)")
34
+ // Snapshot: each retry removes its view and re-adds it if it still has no match
35
+ retries.values.toList().forEach { it() }
36
+ }
37
+ }
@@ -32,6 +32,7 @@ import com.google.gson.JsonSyntaxException
32
32
  import com.google.gson.reflect.TypeToken
33
33
  import com.hydralib.eventemitter.HydraEventEmitter
34
34
  import com.hydralib.eventemitter.HydraEventType
35
+ import com.hydralib.gamification.PendingEntryPointBinds
35
36
  import com.hydralib.nativeapis.HydraFirebaseRemoteConfigKeys
36
37
  import com.hydralib.nativeapis.HydraRemoteConfig
37
38
  import com.hydralib.utils.RNHydraPreferencesManager
@@ -58,6 +59,9 @@ object HydraCore {
58
59
  // check-then-act, and @Volatile alone only guarantees visibility, not atomicity between them.
59
60
  private var pendingGamificationScreen: String? = null
60
61
  private val gamificationLock = Any()
62
+ // Delays after signIn at which to retry embed/banner views that had no matching entry point.
63
+ // The post-signIn entry point fetch usually lands within ~1s; later retries cover slow networks.
64
+ private val ENTRY_POINT_BIND_RETRY_DELAYS_MS = longArrayOf(1000L, 2000L, 4000L)
61
65
 
62
66
  var firebaseRemoteConfigActivated = false
63
67
 
@@ -280,6 +284,10 @@ object HydraCore {
280
284
  )
281
285
  }
282
286
  override fun onGameEventTrigger(eventName: String, data: Map<String, Any?>) {
287
+ Logger.d(
288
+ "onGameEventTrigger",
289
+ "Game event triggered with eventName: $eventName, data: $data"
290
+ )
283
291
  HydraEventEmitter.sendEvent(
284
292
  HydraEventType.ON_GAMIFICATION_EVENT_TRIGGER,
285
293
  mapOf("name" to eventName, "payload" to data)
@@ -292,16 +300,32 @@ object HydraCore {
292
300
  gamificationUIManager = GamificationUIManager(it, appContext!!)
293
301
  pendingGamificationScreen.also { pendingGamificationScreen = null }
294
302
  }
303
+ Logger.d(
304
+ "HydraCore.initHydraInstance",
305
+ "GamificationUIManager created, pendingGamificationScreen: $pending"
306
+ )
295
307
  // Replay any screen that was registered before the manager was ready.
296
308
  if (pending != null) {
297
309
  Handler(Looper.getMainLooper()).post {
298
310
  val act = curReactActivity
299
311
  if (act != null) {
312
+ Logger.d(
313
+ "HydraCore.initHydraInstance",
314
+ "Replaying onScreenChanged with screenName: $pending, activity: ${act.javaClass.simpleName}"
315
+ )
300
316
  gamificationUIManager?.onScreenChanged(act, pending)
317
+ } else {
318
+ Logger.e(
319
+ "HydraCore.initHydraInstance",
320
+ "curReactActivity is null, dropping pendingGamificationScreen: $pending"
321
+ )
301
322
  }
302
323
  }
303
324
  }
304
- }
325
+ } ?: Logger.e(
326
+ "HydraCore.initHydraInstance",
327
+ "getGamificationManager() returned null, GamificationUIManager not created"
328
+ )
305
329
 
306
330
 
307
331
  lastUsedHydraRemoteConfig = hydraRemoteConfig
@@ -709,7 +733,25 @@ object HydraCore {
709
733
 
710
734
  promise?.resolve(true)
711
735
  Logger.d("HydraCore.signIn", "Signed in successfully")
736
+ scheduleEntryPointBindRetries()
737
+ }
712
738
 
739
+ /**
740
+ * The SDK fetches the logged-in user's entry points asynchronously after signIn (~1s), and
741
+ * exposes no callback for when it completes. Embed/banner views mounted before then found no
742
+ * match and are queued in PendingEntryPointBinds; retry them a few times, stopping early once
743
+ * none are left.
744
+ */
745
+ private fun scheduleEntryPointBindRetries() {
746
+ val handler = Handler(Looper.getMainLooper())
747
+ ENTRY_POINT_BIND_RETRY_DELAYS_MS.forEach { delayMs ->
748
+ handler.postDelayed({
749
+ if (!PendingEntryPointBinds.isEmpty()) {
750
+ Logger.d("HydraCore.signIn", "Retrying pending entry point binds after ${delayMs}ms")
751
+ PendingEntryPointBinds.retryAll()
752
+ }
753
+ }, delayMs)
754
+ }
713
755
  }
714
756
 
715
757
  fun updateUser(
@@ -861,6 +903,7 @@ object HydraCore {
861
903
  screenName: String?,
862
904
  promise: Promise?
863
905
  ){
906
+ Logger.d("HydraCore.gamificationScreenAppeared", "Called with screenName: $screenName")
864
907
  val activity = curReactActivity
865
908
  if (activity != null) {
866
909
  activity.runOnUiThread {
@@ -869,22 +912,47 @@ object HydraCore {
869
912
  synchronized(gamificationLock) {
870
913
  val manager = gamificationUIManager
871
914
  if (manager != null) {
915
+ Logger.d(
916
+ "HydraCore.gamificationScreenAppeared",
917
+ "Calling onScreenChanged with screenName: $screenName, activity: ${activity.javaClass.simpleName}"
918
+ )
872
919
  manager.onScreenChanged(activity, screenName ?: "")
873
920
  } else {
921
+ Logger.d(
922
+ "HydraCore.gamificationScreenAppeared",
923
+ "GamificationUIManager not ready, queueing pendingGamificationScreen: $screenName"
924
+ )
874
925
  pendingGamificationScreen = screenName
875
926
  }
876
927
  }
877
928
  }
929
+ } else {
930
+ Logger.e(
931
+ "HydraCore.gamificationScreenAppeared",
932
+ "curReactActivity is null, dropping screenName: $screenName"
933
+ )
878
934
  }
879
935
  promise?.resolve(true)
880
936
  }
881
937
 
882
938
  fun gamificationScreenDisappeared(promise: Promise?){
883
939
  synchronized(gamificationLock) {
940
+ Logger.d(
941
+ "HydraCore.gamificationScreenDisappeared",
942
+ "Called, clearing pendingGamificationScreen: $pendingGamificationScreen"
943
+ )
884
944
  pendingGamificationScreen = null
885
945
  }
886
- curReactActivity?.let {
946
+ val activity = curReactActivity
947
+ if (activity == null) {
948
+ Logger.e("HydraCore.gamificationScreenDisappeared", "curReactActivity is null, skipping onActivityDestroyed")
949
+ }
950
+ activity?.let {
887
951
  it.runOnUiThread {
952
+ Logger.d(
953
+ "HydraCore.gamificationScreenDisappeared",
954
+ "Calling onActivityDestroyed, gamificationUIManager ready: ${gamificationUIManager != null}"
955
+ )
888
956
  gamificationUIManager?.onActivityDestroyed(it)
889
957
  }
890
958
  }
@@ -226,6 +226,17 @@ object HydraPushNotification {
226
226
  promise?.resolve(fcmToken)
227
227
  }
228
228
 
229
+ fun passFCMToken(token: String, promise: Promise?) {
230
+ val context = HydraCore.appContext ?: run {
231
+ Logger.e("HydraPushNotification.passFCMToken", "HydraCore.appContext is null")
232
+ promise?.reject("ContextNotSet", "Application context is not available")
233
+ return
234
+ }
235
+ HydraFirebaseAPI.getInstance().passPushToken(context, token)
236
+ Logger.d("HydraPushNotification.passFCMToken", "Passed push token = $token")
237
+ promise?.resolve(null)
238
+ }
239
+
229
240
  private fun createNotificationChannel(context: Context) {
230
241
  if (notificationChannelCreated) return
231
242
 
@@ -145,6 +145,10 @@ class HydraLibModule(reactContext: ReactApplicationContext) :
145
145
  HydraPushNotification.getFCMToken(promise)
146
146
  }
147
147
 
148
+ override fun passFCMToken(token: String, promise: Promise?) {
149
+ HydraPushNotification.passFCMToken(token, promise)
150
+ }
151
+
148
152
  override fun requestPermission(promise: Promise?) {
149
153
  HydraPushNotification.requestPermission(promise)
150
154
  }
@@ -171,6 +171,11 @@ class HydraLibModule internal constructor(context: ReactApplicationContext) :
171
171
  HydraPushNotification.getFCMToken(promise)
172
172
  }
173
173
 
174
+ @ReactMethod(isBlockingSynchronousMethod = false)
175
+ fun passFCMToken(token: String, promise: Promise?) {
176
+ HydraPushNotification.passFCMToken(token, promise)
177
+ }
178
+
174
179
  @ReactMethod(isBlockingSynchronousMethod = false)
175
180
  fun requestPermission(promise: Promise?) {
176
181
  HydraPushNotification.requestPermission(promise)
package/ios/HydraLib.mm CHANGED
@@ -103,6 +103,11 @@ RCT_EXPORT_METHOD(getFCMToken:(RCTPromiseResolveBlock)resolve reject:(RCTPromise
103
103
  [[HydraPushNotification shared] getFCMToken:resolve reject:reject];
104
104
  }
105
105
 
106
+ // Android only; no-op on iOS.
107
+ RCT_EXPORT_METHOD(passFCMToken:(NSString *)token resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
108
+ resolve(nil);
109
+ }
110
+
106
111
  RCT_EXPORT_METHOD(requestPermission:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
107
112
  [[HydraPushNotification shared] requestPermission:resolve reject:reject];
108
113
  }
@@ -43,6 +43,7 @@ export interface Spec extends TurboModule {
43
43
  //HydraPushNotification Methods
44
44
  openExternalUrl(url: string): Promise<void>;
45
45
  getFCMToken(): Promise<string>;
46
+ passFCMToken(token: string): Promise<void>;
46
47
  requestPermission(): Promise<boolean>;
47
48
 
48
49
  //HydraInboxUI Methods
@@ -13,6 +13,11 @@ class HydraPushNotification {
13
13
  static getFCMToken() {
14
14
  return _NativeHydraLib.default.getFCMToken();
15
15
  }
16
+
17
+ // Android only; resolves without doing anything on iOS.
18
+ static passFCMToken(token) {
19
+ return _NativeHydraLib.default.passFCMToken(token);
20
+ }
16
21
  static requestPermission() {
17
22
  return _NativeHydraLib.default.requestPermission();
18
23
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeHydraLib","_interopRequireDefault","require","e","__esModule","default","HydraPushNotification","openExternalUrl","url","NativeHydraLib","getFCMToken","requestPermission","exports"],"sourceRoot":"../../../src","sources":["hydra-apis/HydraPushNotification.ts"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA+C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC,MAAMG,qBAAqB,CAAC;EACjC,OAAOC,eAAeA,CAACC,GAAW,EAAiB;IACjD,OAAOC,uBAAc,CAACF,eAAe,CAACC,GAAG,CAAC;EAC5C;EAEA,OAAOE,WAAWA,CAAA,EAAoB;IACpC,OAAOD,uBAAc,CAACC,WAAW,CAAC,CAAC;EACrC;EAEA,OAAOC,iBAAiBA,CAAA,EAAqB;IAC3C,OAAOF,uBAAc,CAACE,iBAAiB,CAAC,CAAC;EAC3C;AACF;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_NativeHydraLib","_interopRequireDefault","require","e","__esModule","default","HydraPushNotification","openExternalUrl","url","NativeHydraLib","getFCMToken","passFCMToken","token","requestPermission","exports"],"sourceRoot":"../../../src","sources":["hydra-apis/HydraPushNotification.ts"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA+C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC,MAAMG,qBAAqB,CAAC;EACjC,OAAOC,eAAeA,CAACC,GAAW,EAAiB;IACjD,OAAOC,uBAAc,CAACF,eAAe,CAACC,GAAG,CAAC;EAC5C;EAEA,OAAOE,WAAWA,CAAA,EAAoB;IACpC,OAAOD,uBAAc,CAACC,WAAW,CAAC,CAAC;EACrC;;EAEA;EACA,OAAOC,YAAYA,CAACC,KAAa,EAAiB;IAChD,OAAOH,uBAAc,CAACE,YAAY,CAACC,KAAK,CAAC;EAC3C;EAEA,OAAOC,iBAAiBA,CAAA,EAAqB;IAC3C,OAAOJ,uBAAc,CAACI,iBAAiB,CAAC,CAAC;EAC3C;AACF;AAACC,OAAA,CAAAR,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -43,6 +43,7 @@ export interface Spec extends TurboModule {
43
43
  //HydraPushNotification Methods
44
44
  openExternalUrl(url: string): Promise<void>;
45
45
  getFCMToken(): Promise<string>;
46
+ passFCMToken(token: string): Promise<void>;
46
47
  requestPermission(): Promise<boolean>;
47
48
 
48
49
  //HydraInboxUI Methods
@@ -8,6 +8,11 @@ export class HydraPushNotification {
8
8
  static getFCMToken() {
9
9
  return NativeHydraLib.getFCMToken();
10
10
  }
11
+
12
+ // Android only; resolves without doing anything on iOS.
13
+ static passFCMToken(token) {
14
+ return NativeHydraLib.passFCMToken(token);
15
+ }
11
16
  static requestPermission() {
12
17
  return NativeHydraLib.requestPermission();
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeHydraLib","HydraPushNotification","openExternalUrl","url","getFCMToken","requestPermission"],"sourceRoot":"../../../src","sources":["hydra-apis/HydraPushNotification.ts"],"mappings":";;AAAA,OAAOA,cAAc,MAAM,sBAAmB;AAE9C,OAAO,MAAMC,qBAAqB,CAAC;EACjC,OAAOC,eAAeA,CAACC,GAAW,EAAiB;IACjD,OAAOH,cAAc,CAACE,eAAe,CAACC,GAAG,CAAC;EAC5C;EAEA,OAAOC,WAAWA,CAAA,EAAoB;IACpC,OAAOJ,cAAc,CAACI,WAAW,CAAC,CAAC;EACrC;EAEA,OAAOC,iBAAiBA,CAAA,EAAqB;IAC3C,OAAOL,cAAc,CAACK,iBAAiB,CAAC,CAAC;EAC3C;AACF","ignoreList":[]}
1
+ {"version":3,"names":["NativeHydraLib","HydraPushNotification","openExternalUrl","url","getFCMToken","passFCMToken","token","requestPermission"],"sourceRoot":"../../../src","sources":["hydra-apis/HydraPushNotification.ts"],"mappings":";;AAAA,OAAOA,cAAc,MAAM,sBAAmB;AAE9C,OAAO,MAAMC,qBAAqB,CAAC;EACjC,OAAOC,eAAeA,CAACC,GAAW,EAAiB;IACjD,OAAOH,cAAc,CAACE,eAAe,CAACC,GAAG,CAAC;EAC5C;EAEA,OAAOC,WAAWA,CAAA,EAAoB;IACpC,OAAOJ,cAAc,CAACI,WAAW,CAAC,CAAC;EACrC;;EAEA;EACA,OAAOC,YAAYA,CAACC,KAAa,EAAiB;IAChD,OAAON,cAAc,CAACK,YAAY,CAACC,KAAK,CAAC;EAC3C;EAEA,OAAOC,iBAAiBA,CAAA,EAAqB;IAC3C,OAAOP,cAAc,CAACO,iBAAiB,CAAC,CAAC;EAC3C;AACF","ignoreList":[]}
@@ -25,6 +25,7 @@ export interface Spec extends TurboModule {
25
25
  reset(customerId: string): Promise<boolean>;
26
26
  openExternalUrl(url: string): Promise<void>;
27
27
  getFCMToken(): Promise<string>;
28
+ passFCMToken(token: string): Promise<void>;
28
29
  requestPermission(): Promise<boolean>;
29
30
  showNotificationCenter(): Promise<void>;
30
31
  hideNotificationCenterIfShowing(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHydraLib.d.ts","sourceRoot":"","sources":["../../../../src/NativeHydraLib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeHydraLib.d.ts","sourceRoot":"","sources":["../../../../src/NativeHydraLib.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare class HydraPushNotification {
2
2
  static openExternalUrl(url: string): Promise<void>;
3
3
  static getFCMToken(): Promise<string>;
4
+ static passFCMToken(token: string): Promise<void>;
4
5
  static requestPermission(): Promise<boolean>;
5
6
  }
6
7
  //# sourceMappingURL=HydraPushNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydraPushNotification.d.ts","sourceRoot":"","sources":["../../../../../src/hydra-apis/HydraPushNotification.ts"],"names":[],"mappings":"AAEA,qBAAa,qBAAqB;IAChC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C"}
1
+ {"version":3,"file":"HydraPushNotification.d.ts","sourceRoot":"","sources":["../../../../../src/hydra-apis/HydraPushNotification.ts"],"names":[],"mappings":"AAEA,qBAAa,qBAAqB;IAChC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C"}
@@ -25,6 +25,7 @@ export interface Spec extends TurboModule {
25
25
  reset(customerId: string): Promise<boolean>;
26
26
  openExternalUrl(url: string): Promise<void>;
27
27
  getFCMToken(): Promise<string>;
28
+ passFCMToken(token: string): Promise<void>;
28
29
  requestPermission(): Promise<boolean>;
29
30
  showNotificationCenter(): Promise<void>;
30
31
  hideNotificationCenterIfShowing(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHydraLib.d.ts","sourceRoot":"","sources":["../../../../src/NativeHydraLib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,qBAAqB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,GAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGzC,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,yBAAyB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG5C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGtC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjD,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3C,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,kBAAkB,EAAE,GAAG,CAAC;CAC7B;AAID,QAAA,MAAM,cAAc,EAAE,IAEI,CAAC;AAE3B,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"NativeHydraLib.d.ts","sourceRoot":"","sources":["../../../../src/NativeHydraLib.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare class HydraPushNotification {
2
2
  static openExternalUrl(url: string): Promise<void>;
3
3
  static getFCMToken(): Promise<string>;
4
+ static passFCMToken(token: string): Promise<void>;
4
5
  static requestPermission(): Promise<boolean>;
5
6
  }
6
7
  //# sourceMappingURL=HydraPushNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydraPushNotification.d.ts","sourceRoot":"","sources":["../../../../../src/hydra-apis/HydraPushNotification.ts"],"names":[],"mappings":"AAEA,qBAAa,qBAAqB;IAChC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C"}
1
+ {"version":3,"file":"HydraPushNotification.d.ts","sourceRoot":"","sources":["../../../../../src/hydra-apis/HydraPushNotification.ts"],"names":[],"mappings":"AAEA,qBAAa,qBAAqB;IAChC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capillarytech/react-native-hydra-lib",
3
- "version": "1.8.1",
3
+ "version": "1.8.3-beta.1",
4
4
  "description": "Library to use Hydra native iOS and Native Android SDKs in React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
package/sbom.spdx.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
5
  "name": "capillarytech-react-native-hydra-lib-sbom",
6
- "documentNamespace": "https://github.com/Capillary/react-native-hydra-lib/sbom-2d37fed6",
6
+ "documentNamespace": "https://github.com/Capillary/react-native-hydra-lib/sbom-8786206f",
7
7
  "creationInfo": {
8
- "created": "2026-09-24T16:57:35.472Z",
8
+ "created": "2026-09-29T07:15:01.667Z",
9
9
  "creators": [
10
10
  "Tool: react-native-hydra-lib-sbom-generator-v1.0.0",
11
- "Tool: @capillarytech/react-native-hydra-lib@1.8.0"
11
+ "Tool: @capillarytech/react-native-hydra-lib@1.8.2"
12
12
  ],
13
13
  "licenseListVersion": "3.19"
14
14
  },
@@ -21,7 +21,7 @@
21
21
  "licenseConcluded": "MIT",
22
22
  "licenseDeclared": "MIT",
23
23
  "copyrightText": "Copyright (c) Sandesh Jain <sandesh.Jain@capillarytech.com> (https://docs.capillarytech.com/reference/setting-up-react-native-project-for-hydra-sdk)",
24
- "versionInfo": "1.8.0",
24
+ "versionInfo": "1.8.2",
25
25
  "supplier": "Person: Sandesh Jain <sandesh.Jain@capillarytech.com> (https://docs.capillarytech.com/reference/setting-up-react-native-project-for-hydra-sdk)",
26
26
  "homepage": "https://github.com/Capillary/react-native-hydra-lib#readme",
27
27
  "description": "Library to use Hydra native iOS and Native Android SDKs in React Native",
@@ -43,6 +43,7 @@ export interface Spec extends TurboModule {
43
43
  //HydraPushNotification Methods
44
44
  openExternalUrl(url: string): Promise<void>;
45
45
  getFCMToken(): Promise<string>;
46
+ passFCMToken(token: string): Promise<void>;
46
47
  requestPermission(): Promise<boolean>;
47
48
 
48
49
  //HydraInboxUI Methods
@@ -9,6 +9,11 @@ export class HydraPushNotification {
9
9
  return NativeHydraLib.getFCMToken();
10
10
  }
11
11
 
12
+ // Android only; resolves without doing anything on iOS.
13
+ static passFCMToken(token: string): Promise<void> {
14
+ return NativeHydraLib.passFCMToken(token);
15
+ }
16
+
12
17
  static requestPermission(): Promise<boolean> {
13
18
  return NativeHydraLib.requestPermission();
14
19
  }