@usercentrics/react-native-sdk 2.9.0 → 2.10.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/CHANGELOG.md +17 -0
- package/README.md +15 -40
- package/android/build.gradle +1 -1
- package/android/src/androidTest/java/com/usercentrics/reactnativemodule/RNUsercentricsModuleTest.kt +92 -32
- package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/BannerSettingsExtensions.kt +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
[Release Notes](https://docs.usercentrics.com/cmp_in_app_sdk/latest/about/history/)
|
|
2
2
|
|
|
3
|
+
### 2.10.0 - November 16, 2023
|
|
4
|
+
|
|
5
|
+
## Improvements
|
|
6
|
+
|
|
7
|
+
* Accessibility: Various issues have been addressed to enhance accessibility.
|
|
8
|
+
* Resolved banner compatibility issues with iOS VoiceOver.
|
|
9
|
+
* Resolved banner compatibility issues with Android TalkBack.
|
|
10
|
+
* Adjusted font sizes to comply with Accessibility requirements on both iOS and Android.
|
|
11
|
+
|
|
12
|
+
* Added Ukrainian support language for TCF.
|
|
13
|
+
|
|
14
|
+
## Resolved Issues
|
|
15
|
+
|
|
16
|
+
* Fixed the issue of not disclosing the setting "showCloseButton" has been addressed, preventing errors on Android.
|
|
17
|
+
* Fixed the crash on Android when passing an invalid controller id to restore the user session.
|
|
18
|
+
* Fixed The issue of the remote variant configuration not being used in first layer on Unity.
|
|
19
|
+
|
|
3
20
|
### 2.9.0 - October 6, 2023
|
|
4
21
|
|
|
5
22
|
## Features
|
package/README.md
CHANGED
|
@@ -6,50 +6,36 @@
|
|
|
6
6
|
alt="follow on Twitter">
|
|
7
7
|
</a>
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
# Welcome!
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
You are now one step closer from making **privacy** a core feature in your application. We are very happy that you decided to make this a priority. We are here to help you **build trust** with your users.
|
|
12
|
+
|
|
13
|
+
## The Usercentrics Apps SDK
|
|
14
|
+
|
|
15
|
+
The Usercentrics Apps SDK is a native Consent Management Platform solution for mobile apps, mobile games & TV applications, that enables the collection, documentation, and management of your user's privacy choices, in order to ensure legal compliance for legal regulations around the world.
|
|
12
16
|
|
|
13
17
|
<p align="center">
|
|
14
18
|
<img src="https://docs.usercentrics.com/cmp_in_app_sdk/latest/assets/media/predefinedUI.png" alt="Usercentrics UI" />
|
|
15
19
|
</p>
|
|
16
20
|
|
|
17
|
-
### Supported Legal Frameworks
|
|
18
|
-
|
|
19
|
-
* 🇪🇺 GDPR - European Union's General Data Protection Regulation
|
|
20
|
-
* 🇺🇸 CCPA - California's Consumer Privacy Act
|
|
21
|
-
* 🇧🇷 LGPD - Brazil’s Lei Geral de Proteção de Dados
|
|
22
|
-
* 🌎 TCF 2.0 - Transparency & Consent Framework 2.0
|
|
23
|
-
|
|
24
|
-
### Supported Platforms
|
|
25
|
-
|
|
26
|
-
| Android | iOS | Web | tvOS | MacOS |
|
|
27
|
-
|:-------:|:---:|:-----:|:----:|:-----:|
|
|
28
|
-
| ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
29
|
-
|
|
30
21
|
### Requirements
|
|
31
22
|
* Android 5.0 (API 21) or higher with Kotlin 1.5 or higher
|
|
32
23
|
* iOS 11 or higher
|
|
33
24
|
* React 17.0 or higher
|
|
34
25
|
* React Native 0.65 or higher
|
|
35
|
-
* Node 14
|
|
26
|
+
* Node 14
|
|
36
27
|
|
|
37
|
-
##
|
|
28
|
+
## Get started!
|
|
38
29
|
|
|
39
|
-
|
|
30
|
+
In order to use and test the SDK, you will need a Usercentrics Account. Get [started with a free trial](https://usercentrics.com/in-app-sdk/).
|
|
40
31
|
|
|
41
|
-
|
|
42
|
-
npm install @usercentrics/react-native-sdk
|
|
43
|
-
```
|
|
32
|
+
## Integration
|
|
44
33
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
```sh
|
|
51
|
-
pod install
|
|
52
|
-
```
|
|
34
|
+
Continue to our [documentation](https://usercentrics.com/docs/apps/intro/) for a step by step integration guide.
|
|
35
|
+
|
|
36
|
+
## Example
|
|
37
|
+
|
|
38
|
+
See the [example](https://github.com/Usercentrics/react-native/tree/master/example) directory for a complete sample app using Usercentrics.
|
|
53
39
|
|
|
54
40
|
## Sample Project
|
|
55
41
|
|
|
@@ -79,16 +65,5 @@ To run the sample project, you will need to run npm install from both root and e
|
|
|
79
65
|
npx react-native run-android
|
|
80
66
|
```
|
|
81
67
|
|
|
82
|
-
## Integration
|
|
83
|
-
|
|
84
|
-
Continue to our [documentation](https://docs.usercentrics.com/cmp_in_app_sdk/) for a step by step integration guide.
|
|
85
|
-
|
|
86
|
-
## Example
|
|
87
|
-
|
|
88
|
-
See the [example](https://github.com/Usercentrics/react-native/tree/master/example) directory for a complete sample app using Usercentrics.
|
|
89
|
-
|
|
90
|
-
## Get an Account
|
|
91
|
-
First step to get started with our SDK, is to create a Usercentrics Account, [get started with a free account](https://usercentrics.com/pricing/#mobile) or [request a quote](https://usercentrics.com/in-app-sdk/#in-app-demo) for your organization.
|
|
92
|
-
|
|
93
68
|
## Maintainers
|
|
94
69
|
- [Usercentrics](https://github.com/Usercentrics)
|
package/android/build.gradle
CHANGED
package/android/src/androidTest/java/com/usercentrics/reactnativemodule/RNUsercentricsModuleTest.kt
CHANGED
|
@@ -105,14 +105,18 @@ class RNUsercentricsModuleTest {
|
|
|
105
105
|
fun testConfigure() {
|
|
106
106
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
107
107
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
108
|
-
val module =
|
|
108
|
+
val module =
|
|
109
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
109
110
|
|
|
110
111
|
module.configure(usercentricsOptions)
|
|
111
112
|
|
|
112
113
|
assertEquals(1, usercentricsProxy.initializeCount)
|
|
113
114
|
assertEquals("AAAAA", usercentricsProxy.initializeOptionsArgument?.settingsId)
|
|
114
115
|
assertEquals("BBBBB", usercentricsProxy.initializeOptionsArgument?.ruleSetId)
|
|
115
|
-
assertEquals(
|
|
116
|
+
assertEquals(
|
|
117
|
+
UsercentricsLoggerLevel.NONE,
|
|
118
|
+
usercentricsProxy.initializeOptionsArgument?.loggerLevel
|
|
119
|
+
)
|
|
116
120
|
assertEquals(1000L, usercentricsProxy.initializeOptionsArgument?.timeoutMillis)
|
|
117
121
|
assertEquals("1.2.3", usercentricsProxy.initializeOptionsArgument?.version)
|
|
118
122
|
assertEquals(NetworkMode.EU, usercentricsProxy.initializeOptionsArgument?.networkMode)
|
|
@@ -122,7 +126,8 @@ class RNUsercentricsModuleTest {
|
|
|
122
126
|
fun testConfigureWithWrongValues() {
|
|
123
127
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
124
128
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
125
|
-
val module =
|
|
129
|
+
val module =
|
|
130
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
126
131
|
|
|
127
132
|
module.configure(JavaOnlyMap())
|
|
128
133
|
assertEquals(UsercentricsOptions(), usercentricsProxy.initializeOptionsArgument)
|
|
@@ -132,7 +137,8 @@ class RNUsercentricsModuleTest {
|
|
|
132
137
|
fun testIsReady() {
|
|
133
138
|
val usercentricsProxy = FakeUsercentricsProxy(isReadyAnswer = usercentricsReadyStatus)
|
|
134
139
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
135
|
-
val module =
|
|
140
|
+
val module =
|
|
141
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
136
142
|
|
|
137
143
|
val promise = FakePromise()
|
|
138
144
|
module.isReady(promise)
|
|
@@ -155,7 +161,8 @@ class RNUsercentricsModuleTest {
|
|
|
155
161
|
|
|
156
162
|
val usercentricsProxy = FakeUsercentricsProxy(isReadyAnswer = error)
|
|
157
163
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
158
|
-
val module =
|
|
164
|
+
val module =
|
|
165
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
159
166
|
|
|
160
167
|
val promise = FakePromise()
|
|
161
168
|
module.isReady(promise)
|
|
@@ -174,7 +181,8 @@ class RNUsercentricsModuleTest {
|
|
|
174
181
|
|
|
175
182
|
val usercentricsProxy = FakeUsercentricsProxy(instanceAnswer = usercentricsSDK)
|
|
176
183
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
177
|
-
val module =
|
|
184
|
+
val module =
|
|
185
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
178
186
|
|
|
179
187
|
val promise = FakePromise()
|
|
180
188
|
module.restoreUserSession("abc", promise)
|
|
@@ -202,7 +210,8 @@ class RNUsercentricsModuleTest {
|
|
|
202
210
|
}
|
|
203
211
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
204
212
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
205
|
-
val module =
|
|
213
|
+
val module =
|
|
214
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
206
215
|
|
|
207
216
|
val promise = FakePromise()
|
|
208
217
|
module.restoreUserSession("abc", promise)
|
|
@@ -217,7 +226,8 @@ class RNUsercentricsModuleTest {
|
|
|
217
226
|
every { usercentricsSDK.getControllerId() }.returns("abc")
|
|
218
227
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
219
228
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
220
|
-
val module =
|
|
229
|
+
val module =
|
|
230
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
221
231
|
val promise = FakePromise()
|
|
222
232
|
|
|
223
233
|
module.getControllerId(promise)
|
|
@@ -232,7 +242,8 @@ class RNUsercentricsModuleTest {
|
|
|
232
242
|
every { usercentricsSDK.getABTestingVariant() }.returns("variantA")
|
|
233
243
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
234
244
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
235
|
-
val module =
|
|
245
|
+
val module =
|
|
246
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
236
247
|
val promise = FakePromise()
|
|
237
248
|
|
|
238
249
|
module.getABTestingVariant(promise)
|
|
@@ -248,7 +259,8 @@ class RNUsercentricsModuleTest {
|
|
|
248
259
|
|
|
249
260
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
250
261
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
251
|
-
val module =
|
|
262
|
+
val module =
|
|
263
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
252
264
|
|
|
253
265
|
val promise = FakePromise()
|
|
254
266
|
|
|
@@ -280,7 +292,8 @@ class RNUsercentricsModuleTest {
|
|
|
280
292
|
|
|
281
293
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
282
294
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
283
|
-
val module =
|
|
295
|
+
val module =
|
|
296
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
284
297
|
|
|
285
298
|
val promise = FakePromise()
|
|
286
299
|
|
|
@@ -318,7 +331,8 @@ class RNUsercentricsModuleTest {
|
|
|
318
331
|
|
|
319
332
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
320
333
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
321
|
-
val module =
|
|
334
|
+
val module =
|
|
335
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
322
336
|
|
|
323
337
|
module.setCMPId(123)
|
|
324
338
|
|
|
@@ -332,7 +346,8 @@ class RNUsercentricsModuleTest {
|
|
|
332
346
|
|
|
333
347
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
334
348
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
335
|
-
val module =
|
|
349
|
+
val module =
|
|
350
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
336
351
|
|
|
337
352
|
module.setABTestingVariant("variantA")
|
|
338
353
|
|
|
@@ -348,7 +363,8 @@ class RNUsercentricsModuleTest {
|
|
|
348
363
|
|
|
349
364
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
350
365
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
351
|
-
val module =
|
|
366
|
+
val module =
|
|
367
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
352
368
|
val promise = FakePromise()
|
|
353
369
|
|
|
354
370
|
module.getTCFData(promise)
|
|
@@ -365,7 +381,8 @@ class RNUsercentricsModuleTest {
|
|
|
365
381
|
every { usercentricsSDK.getUserSessionData() }.returns(GetUserSessionDataMock.fake)
|
|
366
382
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
367
383
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
368
|
-
val module =
|
|
384
|
+
val module =
|
|
385
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
369
386
|
val promise = FakePromise()
|
|
370
387
|
|
|
371
388
|
module.getUserSessionData(promise)
|
|
@@ -380,7 +397,8 @@ class RNUsercentricsModuleTest {
|
|
|
380
397
|
|
|
381
398
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
382
399
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
383
|
-
val module =
|
|
400
|
+
val module =
|
|
401
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
384
402
|
val promise = FakePromise()
|
|
385
403
|
|
|
386
404
|
module.getUSPData(promise)
|
|
@@ -399,7 +417,8 @@ class RNUsercentricsModuleTest {
|
|
|
399
417
|
}
|
|
400
418
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
401
419
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
402
|
-
val module =
|
|
420
|
+
val module =
|
|
421
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
403
422
|
val promise = FakePromise()
|
|
404
423
|
|
|
405
424
|
module.changeLanguage("abc", promise)
|
|
@@ -426,7 +445,8 @@ class RNUsercentricsModuleTest {
|
|
|
426
445
|
|
|
427
446
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
428
447
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
429
|
-
val module =
|
|
448
|
+
val module =
|
|
449
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
430
450
|
val promise = FakePromise()
|
|
431
451
|
|
|
432
452
|
module.changeLanguage("abc", promise)
|
|
@@ -454,7 +474,8 @@ class RNUsercentricsModuleTest {
|
|
|
454
474
|
|
|
455
475
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
456
476
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
457
|
-
val module =
|
|
477
|
+
val module =
|
|
478
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
458
479
|
|
|
459
480
|
val promise = FakePromise()
|
|
460
481
|
module.acceptAllForTCF(0, 0, promise)
|
|
@@ -482,7 +503,8 @@ class RNUsercentricsModuleTest {
|
|
|
482
503
|
|
|
483
504
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
484
505
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
485
|
-
val module =
|
|
506
|
+
val module =
|
|
507
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
486
508
|
|
|
487
509
|
val promise = FakePromise()
|
|
488
510
|
module.denyAllForTCF(0, 0, promise)
|
|
@@ -509,7 +531,8 @@ class RNUsercentricsModuleTest {
|
|
|
509
531
|
|
|
510
532
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
511
533
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
512
|
-
val module =
|
|
534
|
+
val module =
|
|
535
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
513
536
|
|
|
514
537
|
val promise = FakePromise()
|
|
515
538
|
module.acceptAll(0, promise)
|
|
@@ -530,7 +553,8 @@ class RNUsercentricsModuleTest {
|
|
|
530
553
|
|
|
531
554
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
532
555
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
533
|
-
val module =
|
|
556
|
+
val module =
|
|
557
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
534
558
|
|
|
535
559
|
val promise = FakePromise()
|
|
536
560
|
module.denyAll(0, promise)
|
|
@@ -552,7 +576,8 @@ class RNUsercentricsModuleTest {
|
|
|
552
576
|
|
|
553
577
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
554
578
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
555
|
-
val module =
|
|
579
|
+
val module =
|
|
580
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
556
581
|
|
|
557
582
|
val promise = FakePromise()
|
|
558
583
|
module.saveDecisions(SaveDecisionsMock.callDecisions.serialize(), 0, promise)
|
|
@@ -576,7 +601,8 @@ class RNUsercentricsModuleTest {
|
|
|
576
601
|
|
|
577
602
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
578
603
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
579
|
-
val module =
|
|
604
|
+
val module =
|
|
605
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
580
606
|
|
|
581
607
|
val promise = FakePromise()
|
|
582
608
|
module.saveDecisionsForTCF(
|
|
@@ -603,7 +629,8 @@ class RNUsercentricsModuleTest {
|
|
|
603
629
|
|
|
604
630
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSDK)
|
|
605
631
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
606
|
-
val module =
|
|
632
|
+
val module =
|
|
633
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
607
634
|
|
|
608
635
|
val promise = FakePromise()
|
|
609
636
|
module.saveOptOutForCCPA(
|
|
@@ -628,7 +655,8 @@ class RNUsercentricsModuleTest {
|
|
|
628
655
|
|
|
629
656
|
val usercentricsProxy = FakeUsercentricsProxy(usercentricsSdk)
|
|
630
657
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
631
|
-
val module =
|
|
658
|
+
val module =
|
|
659
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
632
660
|
|
|
633
661
|
module.track(UsercentricsAnalyticsEventType.ACCEPT_ALL_FIRST_LAYER.ordinal)
|
|
634
662
|
|
|
@@ -640,7 +668,8 @@ class RNUsercentricsModuleTest {
|
|
|
640
668
|
fun testResetMethod() {
|
|
641
669
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
642
670
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
643
|
-
val module =
|
|
671
|
+
val module =
|
|
672
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
644
673
|
|
|
645
674
|
module.reset()
|
|
646
675
|
|
|
@@ -651,7 +680,8 @@ class RNUsercentricsModuleTest {
|
|
|
651
680
|
fun testShowFirstLayer() {
|
|
652
681
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
653
682
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
654
|
-
val module =
|
|
683
|
+
val module =
|
|
684
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
655
685
|
val promise = FakePromise()
|
|
656
686
|
module.showFirstLayer(bannerSettingsMap.toWritableMap(), promise)
|
|
657
687
|
promise.await()
|
|
@@ -662,7 +692,8 @@ class RNUsercentricsModuleTest {
|
|
|
662
692
|
fun testShowSecondLayer() {
|
|
663
693
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
664
694
|
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
665
|
-
val module =
|
|
695
|
+
val module =
|
|
696
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
666
697
|
val promise = FakePromise()
|
|
667
698
|
module.showSecondLayer(bannerSettingsMap.toWritableMap(), promise)
|
|
668
699
|
promise.await()
|
|
@@ -672,7 +703,7 @@ class RNUsercentricsModuleTest {
|
|
|
672
703
|
@Test
|
|
673
704
|
fun testShowFirstLayerWithCustomLocalLogo() {
|
|
674
705
|
val context = InstrumentationRegistry.getInstrumentation().context
|
|
675
|
-
val reactContextProviderMock = object: ReactContextProviderMock() {
|
|
706
|
+
val reactContextProviderMock = object : ReactContextProviderMock() {
|
|
676
707
|
|
|
677
708
|
override fun context(): Context {
|
|
678
709
|
return context
|
|
@@ -681,7 +712,11 @@ class RNUsercentricsModuleTest {
|
|
|
681
712
|
|
|
682
713
|
val usercentricsProxy = FakeUsercentricsProxy()
|
|
683
714
|
val reactApplicationContext = mockk<ReactApplicationContext>(relaxed = true)
|
|
684
|
-
val module = RNUsercentricsModule(
|
|
715
|
+
val module = RNUsercentricsModule(
|
|
716
|
+
reactApplicationContext,
|
|
717
|
+
usercentricsProxy,
|
|
718
|
+
reactContextProviderMock
|
|
719
|
+
)
|
|
685
720
|
|
|
686
721
|
val bannerSettingsMap = mapOf(
|
|
687
722
|
"variant" to null,
|
|
@@ -702,7 +737,8 @@ class RNUsercentricsModuleTest {
|
|
|
702
737
|
module.showFirstLayer(bannerSettingsMap.toWritableMap(), promise)
|
|
703
738
|
promise.await()
|
|
704
739
|
|
|
705
|
-
val someLocalImageDrawableId =
|
|
740
|
+
val someLocalImageDrawableId =
|
|
741
|
+
context.resources.getIdentifier("some_local_image", "drawable", context.packageName)
|
|
706
742
|
val expectedBannerSettings = BannerSettings(
|
|
707
743
|
firstLayerStyleSettings = FirstLayerStyleSettings(
|
|
708
744
|
layout = UsercentricsLayout.Popup(
|
|
@@ -716,4 +752,28 @@ class RNUsercentricsModuleTest {
|
|
|
716
752
|
)
|
|
717
753
|
assertEquals(expectedBannerSettings, usercentricsProxy.showFirstLayerBannerSettings)
|
|
718
754
|
}
|
|
755
|
+
|
|
756
|
+
@Test
|
|
757
|
+
fun testShowFirstLayerWhenShowCloseButtonIsNull() {
|
|
758
|
+
val usercentricsProxy = FakeUsercentricsProxy()
|
|
759
|
+
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
|
|
760
|
+
val module =
|
|
761
|
+
RNUsercentricsModule(contextMock, usercentricsProxy, ReactContextProviderMock())
|
|
762
|
+
val bannerSettingsMap = mapOf(
|
|
763
|
+
"secondLayerStyleSettings" to mapOf(
|
|
764
|
+
"showCloseButton" to null
|
|
765
|
+
),
|
|
766
|
+
)
|
|
767
|
+
val promise = FakePromise()
|
|
768
|
+
module.showFirstLayer(bannerSettingsMap.toWritableMap(), promise)
|
|
769
|
+
promise.await()
|
|
770
|
+
|
|
771
|
+
val expectedBannerSettings = BannerSettings(
|
|
772
|
+
secondLayerStyleSettings = SecondLayerStyleSettings(
|
|
773
|
+
showCloseButton = null
|
|
774
|
+
)
|
|
775
|
+
)
|
|
776
|
+
|
|
777
|
+
assertEquals(expectedBannerSettings, usercentricsProxy.showFirstLayerBannerSettings)
|
|
778
|
+
}
|
|
719
779
|
}
|
|
@@ -155,7 +155,7 @@ internal fun String.deserializeButtonType(): ButtonType {
|
|
|
155
155
|
internal fun ReadableMap.secondLayerStyleSettingsFromMap(context: Context): SecondLayerStyleSettings {
|
|
156
156
|
return SecondLayerStyleSettings(
|
|
157
157
|
buttonLayout = getMap("buttonLayout")?.buttonLayoutFromMap(context),
|
|
158
|
-
showCloseButton =
|
|
158
|
+
showCloseButton = getBooleanOrNull("showCloseButton"),
|
|
159
159
|
)
|
|
160
160
|
}
|
|
161
161
|
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usercentrics/react-native-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "Usercentrics SDK",
|
|
5
5
|
"homepage": "https://usercentrics.com",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
8
8
|
"author": "Usercentrics <developer@usercentrics.com>",
|
|
9
9
|
"iosPackageName": "react-native-usercentrics",
|
|
10
|
-
"iosPackageVersion": "2.
|
|
10
|
+
"iosPackageVersion": "2.10.0",
|
|
11
11
|
"license": "SEE LICENSE IN LICENSE",
|
|
12
12
|
"files": [
|
|
13
13
|
"android",
|