@capillarytech/react-native-hydra-lib 1.7.0-beta.8 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -438
- package/android/build.gradle +17 -8
- package/android/libs/repo/com/capillarytech/hydra-anonymous/1.10.0/hydra-anonymous-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-anonymous/1.10.0/hydra-anonymous-1.10.0.module +114 -0
- package/android/libs/repo/com/capillarytech/hydra-anonymous/1.10.0/hydra-anonymous-1.10.0.pom +73 -0
- package/android/libs/repo/com/capillarytech/hydra-core/1.10.0/hydra-core-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-core/1.10.0/hydra-core-1.10.0.module +195 -0
- package/android/libs/repo/com/capillarytech/hydra-core/1.10.0/hydra-core-1.10.0.pom +122 -0
- package/android/libs/repo/com/capillarytech/hydra-firebase/1.10.0/hydra-firebase-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-firebase/1.10.0/hydra-firebase-1.10.0.module +139 -0
- package/android/libs/repo/com/capillarytech/hydra-firebase/1.10.0/hydra-firebase-1.10.0.pom +96 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification/1.10.0/hydra-gamification-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification/1.10.0/hydra-gamification-1.10.0.module +114 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification/1.10.0/hydra-gamification-1.10.0.pom +73 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification-ui/1.10.0/hydra-gamification-ui-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification-ui/1.10.0/hydra-gamification-ui-1.10.0.module +163 -0
- package/android/libs/repo/com/capillarytech/hydra-gamification-ui/1.10.0/hydra-gamification-ui-1.10.0.pom +109 -0
- package/android/libs/repo/com/capillarytech/hydra-inapp/1.10.0/hydra-inapp-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-inapp/1.10.0/hydra-inapp-1.10.0.module +172 -0
- package/android/libs/repo/com/capillarytech/hydra-inapp/1.10.0/hydra-inapp-1.10.0.pom +128 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-core/1.10.0/hydra-inbox-core-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-core/1.10.0/hydra-inbox-core-1.10.0.module +111 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-core/1.10.0/hydra-inbox-core-1.10.0.pom +68 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-ui/1.10.0/hydra-inbox-ui-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-ui/1.10.0/hydra-inbox-ui-1.10.0.module +132 -0
- package/android/libs/repo/com/capillarytech/hydra-inbox-ui/1.10.0/hydra-inbox-ui-1.10.0.pom +86 -0
- package/android/libs/repo/com/capillarytech/hydra-pushbase/1.10.0/hydra-pushbase-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-pushbase/1.10.0/hydra-pushbase-1.10.0.module +172 -0
- package/android/libs/repo/com/capillarytech/hydra-pushbase/1.10.0/hydra-pushbase-1.10.0.pom +128 -0
- package/android/libs/repo/com/capillarytech/hydra-richnotification/1.10.0/hydra-richnotification-1.10.0.aar +0 -0
- package/android/libs/repo/com/capillarytech/hydra-richnotification/1.10.0/hydra-richnotification-1.10.0.module +172 -0
- package/android/libs/repo/com/capillarytech/hydra-richnotification/1.10.0/hydra-richnotification-1.10.0.pom +128 -0
- package/android/src/main/java/com/hydralib/eventemitter/HydraEventEmitter.kt +31 -1
- package/android/src/main/java/com/hydralib/eventemitter/HydraEventType.kt +3 -1
- package/android/src/main/java/com/hydralib/gamification/GamificationBannerViewManager.kt +3 -3
- package/android/src/main/java/com/hydralib/gamification/GamificationEmbedViewManager.kt +3 -3
- package/android/src/main/java/com/hydralib/gamification/GamificationLoyaltyViewManager.kt +2 -2
- package/android/src/main/java/com/hydralib/hydrasdk/HydraCore.kt +30 -6
- package/ios/EventEmitter/HydraEventType.swift +1 -0
- package/ios/HydraSDK/HydraSDKCore.swift +38 -0
- package/lib/commonjs/hydra-apis/HydraNativeEventEmitter.js +5 -0
- package/lib/commonjs/hydra-apis/HydraNativeEventEmitter.js.map +1 -1
- package/lib/commonjs/models/HydraNativeEvent.js +1 -0
- package/lib/commonjs/models/HydraNativeEvent.js.map +1 -1
- package/lib/module/hydra-apis/HydraNativeEventEmitter.js +5 -0
- package/lib/module/hydra-apis/HydraNativeEventEmitter.js.map +1 -1
- package/lib/module/models/HydraNativeEvent.js +1 -0
- package/lib/module/models/HydraNativeEvent.js.map +1 -1
- package/lib/typescript/commonjs/src/hydra-apis/HydraNativeEventEmitter.d.ts +1 -0
- package/lib/typescript/commonjs/src/hydra-apis/HydraNativeEventEmitter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/models/HydraNativeEvent.d.ts +2 -1
- package/lib/typescript/commonjs/src/models/HydraNativeEvent.d.ts.map +1 -1
- package/lib/typescript/module/src/hydra-apis/HydraNativeEventEmitter.d.ts +1 -0
- package/lib/typescript/module/src/hydra-apis/HydraNativeEventEmitter.d.ts.map +1 -1
- package/lib/typescript/module/src/models/HydraNativeEvent.d.ts +2 -1
- package/lib/typescript/module/src/models/HydraNativeEvent.d.ts.map +1 -1
- package/package.json +1 -1
- package/sbom.spdx.json +4 -4
- package/scripts/HydraPods.rb +1 -1
- package/src/hydra-apis/HydraNativeEventEmitter.ts +11 -0
- package/src/models/HydraNativeEvent.ts +1 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
4
|
+
<!-- This module was also published with a richer model, Gradle metadata, -->
|
|
5
|
+
<!-- which should be used instead. Do not delete the following line which -->
|
|
6
|
+
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
|
|
7
|
+
<!-- that they should prefer consuming it instead. -->
|
|
8
|
+
<!-- do_not_remove: published-with-gradle-metadata -->
|
|
9
|
+
<modelVersion>4.0.0</modelVersion>
|
|
10
|
+
<groupId>com.capillarytech</groupId>
|
|
11
|
+
<artifactId>hydra-pushbase</artifactId>
|
|
12
|
+
<version>1.10.0</version>
|
|
13
|
+
<packaging>aar</packaging>
|
|
14
|
+
<name>hydra-pushbase</name>
|
|
15
|
+
<description>Capillary Hydra PushBase SDK</description>
|
|
16
|
+
<url>https://github.com/Capillary/hydra-sdk-android</url>
|
|
17
|
+
<licenses>
|
|
18
|
+
<license>
|
|
19
|
+
<name>The Apache Software License, Version 2.0</name>
|
|
20
|
+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
|
21
|
+
</license>
|
|
22
|
+
</licenses>
|
|
23
|
+
<developers>
|
|
24
|
+
<developer>
|
|
25
|
+
<id>capillary</id>
|
|
26
|
+
<name>Capillary</name>
|
|
27
|
+
<email>support@capillarytech.com</email>
|
|
28
|
+
</developer>
|
|
29
|
+
</developers>
|
|
30
|
+
<dependencies>
|
|
31
|
+
<dependency>
|
|
32
|
+
<groupId>org.jetbrains.kotlin</groupId>
|
|
33
|
+
<artifactId>kotlin-parcelize-runtime</artifactId>
|
|
34
|
+
<version>1.7.0</version>
|
|
35
|
+
<scope>runtime</scope>
|
|
36
|
+
</dependency>
|
|
37
|
+
<dependency>
|
|
38
|
+
<groupId>androidx.security</groupId>
|
|
39
|
+
<artifactId>security-crypto</artifactId>
|
|
40
|
+
<version>1.1.0-alpha03</version>
|
|
41
|
+
<scope>runtime</scope>
|
|
42
|
+
</dependency>
|
|
43
|
+
<dependency>
|
|
44
|
+
<groupId>androidx.test.ext</groupId>
|
|
45
|
+
<artifactId>junit-ktx</artifactId>
|
|
46
|
+
<version>1.1.4-rc01</version>
|
|
47
|
+
<scope>runtime</scope>
|
|
48
|
+
</dependency>
|
|
49
|
+
<dependency>
|
|
50
|
+
<groupId>androidx.room</groupId>
|
|
51
|
+
<artifactId>room-ktx</artifactId>
|
|
52
|
+
<version>2.4.3</version>
|
|
53
|
+
<scope>runtime</scope>
|
|
54
|
+
</dependency>
|
|
55
|
+
<dependency>
|
|
56
|
+
<groupId>org.jetbrains.kotlinx</groupId>
|
|
57
|
+
<artifactId>kotlinx-datetime</artifactId>
|
|
58
|
+
<version>0.3.0</version>
|
|
59
|
+
<scope>runtime</scope>
|
|
60
|
+
</dependency>
|
|
61
|
+
<dependency>
|
|
62
|
+
<groupId>androidx.work</groupId>
|
|
63
|
+
<artifactId>work-runtime-ktx</artifactId>
|
|
64
|
+
<version>2.7.1</version>
|
|
65
|
+
<scope>runtime</scope>
|
|
66
|
+
</dependency>
|
|
67
|
+
<dependency>
|
|
68
|
+
<groupId>androidx.sqlite</groupId>
|
|
69
|
+
<artifactId>sqlite</artifactId>
|
|
70
|
+
<version>2.2.0</version>
|
|
71
|
+
<scope>runtime</scope>
|
|
72
|
+
</dependency>
|
|
73
|
+
<dependency>
|
|
74
|
+
<groupId>androidx.sqlite</groupId>
|
|
75
|
+
<artifactId>sqlite-framework</artifactId>
|
|
76
|
+
<version>2.2.0</version>
|
|
77
|
+
<scope>runtime</scope>
|
|
78
|
+
</dependency>
|
|
79
|
+
<dependency>
|
|
80
|
+
<groupId>androidx.core</groupId>
|
|
81
|
+
<artifactId>core-ktx</artifactId>
|
|
82
|
+
<version>1.8.0</version>
|
|
83
|
+
<scope>runtime</scope>
|
|
84
|
+
</dependency>
|
|
85
|
+
<dependency>
|
|
86
|
+
<groupId>org.jetbrains.kotlin</groupId>
|
|
87
|
+
<artifactId>kotlin-stdlib-jdk7</artifactId>
|
|
88
|
+
<version>1.6.0</version>
|
|
89
|
+
<scope>runtime</scope>
|
|
90
|
+
</dependency>
|
|
91
|
+
<dependency>
|
|
92
|
+
<groupId>androidx.appcompat</groupId>
|
|
93
|
+
<artifactId>appcompat</artifactId>
|
|
94
|
+
<version>1.5.0</version>
|
|
95
|
+
<scope>runtime</scope>
|
|
96
|
+
</dependency>
|
|
97
|
+
<dependency>
|
|
98
|
+
<groupId>com.google.android.material</groupId>
|
|
99
|
+
<artifactId>material</artifactId>
|
|
100
|
+
<version>1.6.1</version>
|
|
101
|
+
<scope>runtime</scope>
|
|
102
|
+
</dependency>
|
|
103
|
+
<dependency>
|
|
104
|
+
<groupId>com.squareup.okhttp3</groupId>
|
|
105
|
+
<artifactId>okhttp</artifactId>
|
|
106
|
+
<version>4.11.0</version>
|
|
107
|
+
<scope>runtime</scope>
|
|
108
|
+
</dependency>
|
|
109
|
+
<dependency>
|
|
110
|
+
<groupId>com.google.android.exoplayer</groupId>
|
|
111
|
+
<artifactId>exoplayer</artifactId>
|
|
112
|
+
<version>2.19.1</version>
|
|
113
|
+
<scope>runtime</scope>
|
|
114
|
+
</dependency>
|
|
115
|
+
<dependency>
|
|
116
|
+
<groupId>com.google.android.exoplayer</groupId>
|
|
117
|
+
<artifactId>exoplayer-hls</artifactId>
|
|
118
|
+
<version>2.19.1</version>
|
|
119
|
+
<scope>runtime</scope>
|
|
120
|
+
</dependency>
|
|
121
|
+
<dependency>
|
|
122
|
+
<groupId>com.google.android.exoplayer</groupId>
|
|
123
|
+
<artifactId>exoplayer-ui</artifactId>
|
|
124
|
+
<version>2.19.1</version>
|
|
125
|
+
<scope>runtime</scope>
|
|
126
|
+
</dependency>
|
|
127
|
+
</dependencies>
|
|
128
|
+
</project>
|
|
Binary file
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
{
|
|
2
|
+
"formatVersion": "1.1",
|
|
3
|
+
"component": {
|
|
4
|
+
"group": "com.capillarytech",
|
|
5
|
+
"module": "hydra-richnotification",
|
|
6
|
+
"version": "1.10.0",
|
|
7
|
+
"attributes": {
|
|
8
|
+
"org.gradle.status": "release"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"createdBy": {
|
|
12
|
+
"gradle": {
|
|
13
|
+
"version": "7.3.3"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"variants": [
|
|
17
|
+
{
|
|
18
|
+
"name": "releaseVariantReleaseApiPublication",
|
|
19
|
+
"attributes": {
|
|
20
|
+
"org.gradle.category": "library",
|
|
21
|
+
"org.gradle.dependency.bundling": "external",
|
|
22
|
+
"org.gradle.libraryelements": "aar",
|
|
23
|
+
"org.gradle.usage": "java-api"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
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"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "releaseVariantReleaseRuntimePublication",
|
|
39
|
+
"attributes": {
|
|
40
|
+
"org.gradle.category": "library",
|
|
41
|
+
"org.gradle.dependency.bundling": "external",
|
|
42
|
+
"org.gradle.libraryelements": "aar",
|
|
43
|
+
"org.gradle.usage": "java-runtime"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": [
|
|
46
|
+
{
|
|
47
|
+
"group": "org.jetbrains.kotlin",
|
|
48
|
+
"module": "kotlin-parcelize-runtime",
|
|
49
|
+
"version": {
|
|
50
|
+
"requires": "1.7.0"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"group": "androidx.test.ext",
|
|
55
|
+
"module": "junit-ktx",
|
|
56
|
+
"version": {
|
|
57
|
+
"requires": "1.1.4-rc01"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"group": "androidx.core",
|
|
62
|
+
"module": "core-ktx",
|
|
63
|
+
"version": {
|
|
64
|
+
"requires": "1.8.0"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"group": "org.jetbrains.kotlin",
|
|
69
|
+
"module": "kotlin-stdlib-jdk7",
|
|
70
|
+
"version": {
|
|
71
|
+
"requires": "1.6.0"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"group": "org.jetbrains.kotlin",
|
|
76
|
+
"module": "kotlin-reflect",
|
|
77
|
+
"version": {
|
|
78
|
+
"requires": "1.6.0"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"group": "com.google.code.gson",
|
|
83
|
+
"module": "gson",
|
|
84
|
+
"version": {
|
|
85
|
+
"requires": "2.8.9"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"group": "androidx.room",
|
|
90
|
+
"module": "room-ktx",
|
|
91
|
+
"version": {
|
|
92
|
+
"requires": "2.4.3"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"group": "org.jetbrains.kotlinx",
|
|
97
|
+
"module": "kotlinx-datetime",
|
|
98
|
+
"version": {
|
|
99
|
+
"requires": "0.3.0"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"group": "androidx.lifecycle",
|
|
104
|
+
"module": "lifecycle-common",
|
|
105
|
+
"version": {
|
|
106
|
+
"requires": "2.5.1"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"group": "androidx.lifecycle",
|
|
111
|
+
"module": "lifecycle-process",
|
|
112
|
+
"version": {
|
|
113
|
+
"requires": "2.5.1"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"group": "androidx.appcompat",
|
|
118
|
+
"module": "appcompat",
|
|
119
|
+
"version": {
|
|
120
|
+
"requires": "1.5.0"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"group": "com.google.android.material",
|
|
125
|
+
"module": "material",
|
|
126
|
+
"version": {
|
|
127
|
+
"requires": "1.6.1"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"group": "com.github.bumptech.glide",
|
|
132
|
+
"module": "glide",
|
|
133
|
+
"version": {
|
|
134
|
+
"requires": "4.12.0"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"group": "androidx.media3",
|
|
139
|
+
"module": "media3-exoplayer",
|
|
140
|
+
"version": {
|
|
141
|
+
"requires": "1.2.1"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"group": "androidx.media3",
|
|
146
|
+
"module": "media3-ui",
|
|
147
|
+
"version": {
|
|
148
|
+
"requires": "1.2.1"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"group": "com.capillarytech",
|
|
153
|
+
"module": "hydra-pushbase",
|
|
154
|
+
"version": {
|
|
155
|
+
"requires": "1.10.0"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"files": [
|
|
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"
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
4
|
+
<!-- This module was also published with a richer model, Gradle metadata, -->
|
|
5
|
+
<!-- which should be used instead. Do not delete the following line which -->
|
|
6
|
+
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
|
|
7
|
+
<!-- that they should prefer consuming it instead. -->
|
|
8
|
+
<!-- do_not_remove: published-with-gradle-metadata -->
|
|
9
|
+
<modelVersion>4.0.0</modelVersion>
|
|
10
|
+
<groupId>com.capillarytech</groupId>
|
|
11
|
+
<artifactId>hydra-richnotification</artifactId>
|
|
12
|
+
<version>1.10.0</version>
|
|
13
|
+
<packaging>aar</packaging>
|
|
14
|
+
<name>hydra-richnotification</name>
|
|
15
|
+
<description>Capillary Hydra Rich Notification SDK</description>
|
|
16
|
+
<url>https://github.com/Capillary/hydra-sdk-android</url>
|
|
17
|
+
<licenses>
|
|
18
|
+
<license>
|
|
19
|
+
<name>The Apache Software License, Version 2.0</name>
|
|
20
|
+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
|
21
|
+
</license>
|
|
22
|
+
</licenses>
|
|
23
|
+
<developers>
|
|
24
|
+
<developer>
|
|
25
|
+
<id>capillary</id>
|
|
26
|
+
<name>Capillary</name>
|
|
27
|
+
<email>support@capillarytech.com</email>
|
|
28
|
+
</developer>
|
|
29
|
+
</developers>
|
|
30
|
+
<dependencies>
|
|
31
|
+
<dependency>
|
|
32
|
+
<groupId>org.jetbrains.kotlin</groupId>
|
|
33
|
+
<artifactId>kotlin-parcelize-runtime</artifactId>
|
|
34
|
+
<version>1.7.0</version>
|
|
35
|
+
<scope>runtime</scope>
|
|
36
|
+
</dependency>
|
|
37
|
+
<dependency>
|
|
38
|
+
<groupId>androidx.test.ext</groupId>
|
|
39
|
+
<artifactId>junit-ktx</artifactId>
|
|
40
|
+
<version>1.1.4-rc01</version>
|
|
41
|
+
<scope>runtime</scope>
|
|
42
|
+
</dependency>
|
|
43
|
+
<dependency>
|
|
44
|
+
<groupId>androidx.core</groupId>
|
|
45
|
+
<artifactId>core-ktx</artifactId>
|
|
46
|
+
<version>1.8.0</version>
|
|
47
|
+
<scope>runtime</scope>
|
|
48
|
+
</dependency>
|
|
49
|
+
<dependency>
|
|
50
|
+
<groupId>org.jetbrains.kotlin</groupId>
|
|
51
|
+
<artifactId>kotlin-stdlib-jdk7</artifactId>
|
|
52
|
+
<version>1.6.0</version>
|
|
53
|
+
<scope>runtime</scope>
|
|
54
|
+
</dependency>
|
|
55
|
+
<dependency>
|
|
56
|
+
<groupId>org.jetbrains.kotlin</groupId>
|
|
57
|
+
<artifactId>kotlin-reflect</artifactId>
|
|
58
|
+
<version>1.6.0</version>
|
|
59
|
+
<scope>runtime</scope>
|
|
60
|
+
</dependency>
|
|
61
|
+
<dependency>
|
|
62
|
+
<groupId>com.google.code.gson</groupId>
|
|
63
|
+
<artifactId>gson</artifactId>
|
|
64
|
+
<version>2.8.9</version>
|
|
65
|
+
<scope>runtime</scope>
|
|
66
|
+
</dependency>
|
|
67
|
+
<dependency>
|
|
68
|
+
<groupId>androidx.room</groupId>
|
|
69
|
+
<artifactId>room-ktx</artifactId>
|
|
70
|
+
<version>2.4.3</version>
|
|
71
|
+
<scope>runtime</scope>
|
|
72
|
+
</dependency>
|
|
73
|
+
<dependency>
|
|
74
|
+
<groupId>org.jetbrains.kotlinx</groupId>
|
|
75
|
+
<artifactId>kotlinx-datetime</artifactId>
|
|
76
|
+
<version>0.3.0</version>
|
|
77
|
+
<scope>runtime</scope>
|
|
78
|
+
</dependency>
|
|
79
|
+
<dependency>
|
|
80
|
+
<groupId>androidx.lifecycle</groupId>
|
|
81
|
+
<artifactId>lifecycle-common</artifactId>
|
|
82
|
+
<version>2.5.1</version>
|
|
83
|
+
<scope>runtime</scope>
|
|
84
|
+
</dependency>
|
|
85
|
+
<dependency>
|
|
86
|
+
<groupId>androidx.lifecycle</groupId>
|
|
87
|
+
<artifactId>lifecycle-process</artifactId>
|
|
88
|
+
<version>2.5.1</version>
|
|
89
|
+
<scope>runtime</scope>
|
|
90
|
+
</dependency>
|
|
91
|
+
<dependency>
|
|
92
|
+
<groupId>androidx.appcompat</groupId>
|
|
93
|
+
<artifactId>appcompat</artifactId>
|
|
94
|
+
<version>1.5.0</version>
|
|
95
|
+
<scope>runtime</scope>
|
|
96
|
+
</dependency>
|
|
97
|
+
<dependency>
|
|
98
|
+
<groupId>com.google.android.material</groupId>
|
|
99
|
+
<artifactId>material</artifactId>
|
|
100
|
+
<version>1.6.1</version>
|
|
101
|
+
<scope>runtime</scope>
|
|
102
|
+
</dependency>
|
|
103
|
+
<dependency>
|
|
104
|
+
<groupId>com.github.bumptech.glide</groupId>
|
|
105
|
+
<artifactId>glide</artifactId>
|
|
106
|
+
<version>4.12.0</version>
|
|
107
|
+
<scope>runtime</scope>
|
|
108
|
+
</dependency>
|
|
109
|
+
<dependency>
|
|
110
|
+
<groupId>androidx.media3</groupId>
|
|
111
|
+
<artifactId>media3-exoplayer</artifactId>
|
|
112
|
+
<version>1.2.1</version>
|
|
113
|
+
<scope>runtime</scope>
|
|
114
|
+
</dependency>
|
|
115
|
+
<dependency>
|
|
116
|
+
<groupId>androidx.media3</groupId>
|
|
117
|
+
<artifactId>media3-ui</artifactId>
|
|
118
|
+
<version>1.2.1</version>
|
|
119
|
+
<scope>runtime</scope>
|
|
120
|
+
</dependency>
|
|
121
|
+
<dependency>
|
|
122
|
+
<groupId>com.capillarytech</groupId>
|
|
123
|
+
<artifactId>hydra-pushbase</artifactId>
|
|
124
|
+
<version>1.10.0</version>
|
|
125
|
+
<scope>runtime</scope>
|
|
126
|
+
</dependency>
|
|
127
|
+
</dependencies>
|
|
128
|
+
</project>
|
|
@@ -8,6 +8,8 @@ import com.facebook.react.bridge.Promise
|
|
|
8
8
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
9
9
|
import com.facebook.react.bridge.ReadableMap
|
|
10
10
|
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
11
|
+
import org.json.JSONArray
|
|
12
|
+
import org.json.JSONObject
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
// Callback interface for event completion
|
|
@@ -147,11 +149,39 @@ object HydraEventEmitter {
|
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
// org.json.JSONObject.opt()/JSONArray.opt() return raw org.json types for nested
|
|
153
|
+
// object/array fields — Arguments.makeNativeMap has no idea what those are and throws
|
|
154
|
+
// ("Could not convert class org.json.JSONObject") the moment a payload has one nested
|
|
155
|
+
// inside it, which is common for gamification analytics payloads (campaign_details,
|
|
156
|
+
// page_details, etc). Recursively convert them to plain Map/List first.
|
|
157
|
+
private fun sanitizeValue(value: Any?): Any? {
|
|
158
|
+
return when (value) {
|
|
159
|
+
null, JSONObject.NULL -> null
|
|
160
|
+
is JSONObject -> {
|
|
161
|
+
val map = mutableMapOf<String, Any?>()
|
|
162
|
+
value.keys().forEach { key -> map[key] = sanitizeValue(value.opt(key)) }
|
|
163
|
+
map
|
|
164
|
+
}
|
|
165
|
+
is JSONArray -> (0 until value.length()).map { i -> sanitizeValue(value.opt(i)) }
|
|
166
|
+
is Map<*, *> -> {
|
|
167
|
+
val map = mutableMapOf<String, Any?>()
|
|
168
|
+
value.forEach { (k, v) -> if (k is String) map[k] = sanitizeValue(v) }
|
|
169
|
+
map
|
|
170
|
+
}
|
|
171
|
+
is List<*> -> value.map { sanitizeValue(it) }
|
|
172
|
+
is Array<*> -> value.map { sanitizeValue(it) }
|
|
173
|
+
else -> value
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
150
177
|
private fun convertMapToMutable(originalMap: Map<*, *>): Map<String, Any> {
|
|
151
178
|
val resultMap = mutableMapOf<String, Any>()
|
|
152
179
|
originalMap.forEach {
|
|
153
180
|
if (it.key is String && it.value != null) {
|
|
154
|
-
|
|
181
|
+
val sanitized = sanitizeValue(it.value)
|
|
182
|
+
if (sanitized != null) {
|
|
183
|
+
resultMap[it.key as String] = sanitized
|
|
184
|
+
}
|
|
155
185
|
}
|
|
156
186
|
}
|
|
157
187
|
return resultMap
|
|
@@ -19,7 +19,8 @@ enum class HydraEventType(val event: String) {
|
|
|
19
19
|
ON_USER_STATE_CHANGED("onUserStateChanged"),
|
|
20
20
|
ON_GAMIFICATION_VIEW_HEIGHT_CHANGED("onGamificationViewHeightChanged"),
|
|
21
21
|
ON_GAMIFICATION_ANALYTICS_EVENT("gamificationAnalyticsEvent"),
|
|
22
|
-
ON_GAMIFICATION_DEEPLINK("gamificationDeeplink")
|
|
22
|
+
ON_GAMIFICATION_DEEPLINK("gamificationDeeplink"),
|
|
23
|
+
ON_GAMIFICATION_EVENT_TRIGGER("gamificationEventTrigger");
|
|
23
24
|
|
|
24
25
|
companion object {
|
|
25
26
|
fun from(eventName: String?): HydraEventType? = when (eventName) {
|
|
@@ -42,6 +43,7 @@ enum class HydraEventType(val event: String) {
|
|
|
42
43
|
ON_GAMIFICATION_VIEW_HEIGHT_CHANGED.event -> ON_GAMIFICATION_VIEW_HEIGHT_CHANGED
|
|
43
44
|
ON_GAMIFICATION_ANALYTICS_EVENT.event -> ON_GAMIFICATION_ANALYTICS_EVENT
|
|
44
45
|
ON_GAMIFICATION_DEEPLINK.event -> ON_GAMIFICATION_DEEPLINK
|
|
46
|
+
ON_GAMIFICATION_EVENT_TRIGGER.event -> ON_GAMIFICATION_EVENT_TRIGGER
|
|
45
47
|
else -> throw IllegalArgumentException()
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -37,7 +37,7 @@ class GamificationBannerViewManager : SimpleViewManager<BannerView>() {
|
|
|
37
37
|
val data = findEntryPointByBannerId(bannerId) ?: return
|
|
38
38
|
|
|
39
39
|
// Defer bind until Yoga has measured and laid out the view
|
|
40
|
-
if (view.width > 0 && view.height
|
|
40
|
+
if (view.width > 0 && view.height >= 0) {
|
|
41
41
|
view.tag = bannerId
|
|
42
42
|
bindWithLayout(view, data, bannerId)
|
|
43
43
|
} else {
|
|
@@ -46,7 +46,7 @@ class GamificationBannerViewManager : SimpleViewManager<BannerView>() {
|
|
|
46
46
|
v: View, left: Int, top: Int, right: Int, bottom: Int,
|
|
47
47
|
oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int
|
|
48
48
|
) {
|
|
49
|
-
if (right - left > 0 && bottom - top
|
|
49
|
+
if (right - left > 0 && bottom - top >= 0) {
|
|
50
50
|
view.removeOnLayoutChangeListener(this)
|
|
51
51
|
view.tag = bannerId
|
|
52
52
|
bindWithLayout(view, data, bannerId)
|
|
@@ -120,7 +120,7 @@ class GamificationBannerViewManager : SimpleViewManager<BannerView>() {
|
|
|
120
120
|
view.layout(view.left, view.top, view.left + w, view.top + finalHeight)
|
|
121
121
|
|
|
122
122
|
// Emit the SDK-computed height to RN so JS side can update its style
|
|
123
|
-
if (finalHeight
|
|
123
|
+
if (finalHeight >= 0) {
|
|
124
124
|
val heightDp = finalHeight / view.resources.displayMetrics.density
|
|
125
125
|
HydraEventEmitter.sendEvent(
|
|
126
126
|
HydraEventType.ON_GAMIFICATION_VIEW_HEIGHT_CHANGED,
|
|
@@ -42,7 +42,7 @@ class GamificationEmbedViewManager : SimpleViewManager<EmbedWebView>() {
|
|
|
42
42
|
val data = findEntryPointByEmbedId(embedId) ?: return
|
|
43
43
|
|
|
44
44
|
// Defer bind until Yoga has measured and laid out the view
|
|
45
|
-
if (view.width > 0 && view.height
|
|
45
|
+
if (view.width > 0 && view.height >= 0) {
|
|
46
46
|
view.tag = embedId
|
|
47
47
|
bindWithLayout(view, data, embedId)
|
|
48
48
|
} else {
|
|
@@ -51,7 +51,7 @@ class GamificationEmbedViewManager : SimpleViewManager<EmbedWebView>() {
|
|
|
51
51
|
v: View, left: Int, top: Int, right: Int, bottom: Int,
|
|
52
52
|
oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int
|
|
53
53
|
) {
|
|
54
|
-
if (right - left > 0 && bottom - top
|
|
54
|
+
if (right - left > 0 && bottom - top >= 0) {
|
|
55
55
|
view.removeOnLayoutChangeListener(this)
|
|
56
56
|
view.tag = embedId
|
|
57
57
|
bindWithLayout(view, data, embedId)
|
|
@@ -121,7 +121,7 @@ class GamificationEmbedViewManager : SimpleViewManager<EmbedWebView>() {
|
|
|
121
121
|
val preDrawListener = object : ViewTreeObserver.OnPreDrawListener {
|
|
122
122
|
override fun onPreDraw(): Boolean {
|
|
123
123
|
val newHeight = view.layoutParams?.height ?: return true
|
|
124
|
-
if (newHeight
|
|
124
|
+
if (newHeight != lastEmittedHeight) {
|
|
125
125
|
lastEmittedHeight = newHeight
|
|
126
126
|
val heightDp = newHeight / view.resources.displayMetrics.density
|
|
127
127
|
HydraEventEmitter.sendEvent(
|
|
@@ -34,7 +34,7 @@ class GamificationLoyaltyViewManager : SimpleViewManager<LoyaltyEmbedView>() {
|
|
|
34
34
|
val loyaltyUrl = findLoyaltyUrlById(loyaltyId) ?: return
|
|
35
35
|
|
|
36
36
|
// Defer bind until Yoga has measured and laid out the view
|
|
37
|
-
if (view.width > 0 && view.height
|
|
37
|
+
if (view.width > 0 && view.height >= 0) {
|
|
38
38
|
view.tag = loyaltyId
|
|
39
39
|
bindWithLayout(view, loyaltyUrl)
|
|
40
40
|
} else {
|
|
@@ -43,7 +43,7 @@ class GamificationLoyaltyViewManager : SimpleViewManager<LoyaltyEmbedView>() {
|
|
|
43
43
|
v: View, left: Int, top: Int, right: Int, bottom: Int,
|
|
44
44
|
oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int
|
|
45
45
|
) {
|
|
46
|
-
if (right - left > 0 && bottom - top
|
|
46
|
+
if (right - left > 0 && bottom - top >= 0) {
|
|
47
47
|
view.removeOnLayoutChangeListener(this)
|
|
48
48
|
view.tag = loyaltyId
|
|
49
49
|
bindWithLayout(view, loyaltyUrl)
|
|
@@ -279,6 +279,12 @@ object HydraCore {
|
|
|
279
279
|
deepLink
|
|
280
280
|
)
|
|
281
281
|
}
|
|
282
|
+
override fun onGameEventTrigger(eventName: String, data: Map<String, Any?>) {
|
|
283
|
+
HydraEventEmitter.sendEvent(
|
|
284
|
+
HydraEventType.ON_GAMIFICATION_EVENT_TRIGGER,
|
|
285
|
+
mapOf("name" to eventName, "payload" to data)
|
|
286
|
+
)
|
|
287
|
+
}
|
|
282
288
|
}
|
|
283
289
|
// Synchronized against gamificationScreenAppeared's check-then-set so a screen name
|
|
284
290
|
// set concurrently with init can't be missed by this read-and-clear.
|
|
@@ -921,6 +927,16 @@ object HydraCore {
|
|
|
921
927
|
promise?.resolve(hydraAPI!!.isGamificationSuppressed())
|
|
922
928
|
}
|
|
923
929
|
|
|
930
|
+
/** Case/whitespace-tolerant lookup, avoids relying on ThemeMode.valueOf()'s exact-match reflection. */
|
|
931
|
+
private fun parseThemeMode(mode: String): ThemeMode? =
|
|
932
|
+
when (mode.trim().uppercase()) {
|
|
933
|
+
"NONE" -> ThemeMode.NONE
|
|
934
|
+
"AUTO" -> ThemeMode.AUTO
|
|
935
|
+
"LIGHT" -> ThemeMode.LIGHT
|
|
936
|
+
"DARK" -> ThemeMode.DARK
|
|
937
|
+
else -> null
|
|
938
|
+
}
|
|
939
|
+
|
|
924
940
|
fun setThemeMode(mode: String?, promise: Promise?) {
|
|
925
941
|
if (mode == null) {
|
|
926
942
|
Logger.e("HydraCore.setThemeMode", "Theme mode is null")
|
|
@@ -928,17 +944,25 @@ object HydraCore {
|
|
|
928
944
|
return
|
|
929
945
|
}
|
|
930
946
|
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
promise?.
|
|
934
|
-
|
|
947
|
+
if (hydraAPI == null) {
|
|
948
|
+
Logger.e("HydraCore.setThemeMode", "HydraAPI is null")
|
|
949
|
+
promise?.reject("Error setting theme mode", "HydraAPI is null", Throwable())
|
|
950
|
+
return
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
val themeMode = parseThemeMode(mode)
|
|
954
|
+
if (themeMode == null) {
|
|
935
955
|
Logger.e("HydraCore.setThemeMode", "Invalid theme mode: $mode")
|
|
936
|
-
promise?.reject("Error setting theme mode", "Invalid theme mode: $mode",
|
|
956
|
+
promise?.reject("Error setting theme mode", "Invalid theme mode: $mode", Throwable())
|
|
957
|
+
return
|
|
937
958
|
}
|
|
959
|
+
|
|
960
|
+
hydraAPI!!.setThemeMode(themeMode)
|
|
961
|
+
promise?.resolve(null)
|
|
938
962
|
}
|
|
939
963
|
|
|
940
964
|
fun getThemeMode(promise: Promise?) {
|
|
941
|
-
val mode =
|
|
965
|
+
val mode = hydraAPI?.getThemeMode() ?: ThemeMode.NONE
|
|
942
966
|
promise?.resolve(mode.name)
|
|
943
967
|
}
|
|
944
968
|
|
|
@@ -27,4 +27,5 @@ enum HydraEventType : String, CaseIterable{
|
|
|
27
27
|
case ON_GAMIFICATION_VIEW_HEIGHT_CHANGED = "onGamificationViewHeightChanged"
|
|
28
28
|
case ON_GAMIFICATION_ANALYTICS_EVENT = "gamificationAnalyticsEvent"
|
|
29
29
|
case ON_GAMIFICATION_DEEPLINK = "gamificationDeeplink"
|
|
30
|
+
case ON_GAMIFICATION_EVENT_TRIGGER = "gamificationEventTrigger"
|
|
30
31
|
}
|