Skip to content

Commit 0e5eeeb

Browse files
authored
2.2.1 (#27)
* First Layer * Second Layer * Hex color * Unit tests iOS * Customization * Android * Unit test * Update tests * Android * JS
1 parent 39ed22e commit 0e5eeeb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1580
-91
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def usercentrics_version = "2.0.3"
1+
def usercentrics_version = "2.2.1"
22
version usercentrics_version
33

44
buildscript {

android/src/androidTest/java/com/usercentrics/reactnativemodule/RNUsercentricsModuleTest.kt

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ class RNUsercentricsModuleTest {
3939
putString("version", "1.2.3")
4040
}
4141

42+
private val usercentricsConsentHistoryEntries = listOf(
43+
UsercentricsConsentHistoryEntry(
44+
status = false,
45+
UsercentricsConsentType.EXPLICIT,
46+
123
47+
)
48+
)
49+
4250
private val usercentricsReadyStatus = UsercentricsReadyStatus(
4351
shouldShowCMP = false,
4452
consents = listOf(
@@ -47,7 +55,9 @@ class RNUsercentricsModuleTest {
4755
status = false,
4856
dataProcessor = "Facebook SDK",
4957
type = UsercentricsConsentType.EXPLICIT,
50-
version = "1.0.1"
58+
version = "1.0.1",
59+
isEssential = false,
60+
history = usercentricsConsentHistoryEntries
5161
)
5262
)
5363
)
@@ -74,7 +84,9 @@ class RNUsercentricsModuleTest {
7484
status = false,
7585
dataProcessor = "Facebook SDK",
7686
type = UsercentricsConsentType.EXPLICIT,
77-
version = "1.0.1"
87+
version = "1.0.1",
88+
isEssential = false,
89+
history = usercentricsConsentHistoryEntries
7890
)
7991
),
8092
controllerId = "8620135313b043696b806868b20da905886a3a2598ddddc2b52973f9807d6b45",
@@ -687,4 +699,31 @@ class RNUsercentricsModuleTest {
687699

688700
assertEquals(1, usercentricsProxy.resetCount)
689701
}
702+
703+
@Test
704+
fun testShowFirstLayer() {
705+
val usercentricsProxy = FakeUsercentricsProxy()
706+
val contextMock = mockk<ReactApplicationContext>(relaxed = true)
707+
val module = RNUsercentricsModule(contextMock, usercentricsProxy)
708+
709+
val promise = FakePromise()
710+
module.showFirstLayer(ShowFirstLayerMock.arguments, promise)
711+
712+
assertEquals(
713+
FirstLayerStyleSettings(
714+
title = TitleSettings(alignment = SectionAlignment.END),
715+
message = MessageSettings(alignment = SectionAlignment.CENTER),
716+
cornerRadius = 50
717+
),
718+
usercentricsProxy.showFirstLayerStyle
719+
)
720+
assertEquals(
721+
BannerSettings(font = null, logo = null),
722+
usercentricsProxy.showFirstLayerBannerSettings
723+
)
724+
assertEquals(
725+
UsercentricsLayout.Popup(PopupPosition.CENTER),
726+
usercentricsProxy.showFirstLayerLayout
727+
)
728+
}
690729
}

android/src/androidTest/java/com/usercentrics/reactnativemodule/api/FakeUsercentricsProxy.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.usercentrics.reactnativemodule.api
22

3+
import android.app.Activity
34
import android.content.Context
45
import android.content.Intent
6+
import com.facebook.react.bridge.Promise
7+
import com.facebook.react.bridge.ReadableMap
58
import com.usercentrics.reactnativeusercentrics.api.UsercentricsProxy
69
import com.usercentrics.sdk.*
710
import com.usercentrics.sdk.errors.UsercentricsError
8-
import com.usercentrics.sdk.models.settings.UsercentricsConsent
911

1012
internal class FakeUsercentricsProxy(
1113
private val instanceAnswer: UsercentricsSDK? = null,
@@ -66,4 +68,24 @@ internal class FakeUsercentricsProxy(
6668
override fun reset() {
6769
resetCount++
6870
}
71+
72+
var showFirstLayerLayout: UsercentricsLayout? = null
73+
var showFirstLayerBannerSettings: BannerSettings? = null
74+
var showFirstLayerStyle: FirstLayerStyleSettings? = null
75+
76+
override fun showFirstLayer(
77+
activity: Activity,
78+
layout: UsercentricsLayout,
79+
bannerSettings: BannerSettings?,
80+
firstLayerStyleSettings: FirstLayerStyleSettings?,
81+
promise: Promise
82+
) {
83+
this.showFirstLayerLayout = layout
84+
this.showFirstLayerBannerSettings = bannerSettings
85+
this.showFirstLayerStyle = firstLayerStyleSettings
86+
}
87+
88+
override fun showSecondLayer() {
89+
90+
}
6991
}

android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/GetCMPDataMock.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ internal class GetCMPDataMock {
228228
hideButtonDeny = false,
229229
tabsServicesIsEnabled = true,
230230
isOverlayEnabled = true,
231-
title = ""
231+
title = "",
232+
hideTogglesForServices = false
232233
)
233234
private val fakeTCF2Settings = TCF2Settings(
234235
togglesSpecialFeaturesToggleOff = "Off",

android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/GetConsentsMock.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
package com.usercentrics.reactnativemodule.mock
22

3+
import com.usercentrics.sdk.UsercentricsConsentHistoryEntry
34
import com.usercentrics.sdk.UsercentricsServiceConsent
45
import com.usercentrics.sdk.models.settings.UsercentricsConsentType
56

67
internal class GetConsentsMock {
78
companion object {
9+
810
val fakeWithData = listOf(
911
UsercentricsServiceConsent(
1012
templateId = "ocv9HNX_g",
1113
status = false,
1214
dataProcessor = "Facebook SDK",
1315
type = UsercentricsConsentType.EXPLICIT,
14-
version = "1.0.1"
16+
version = "1.0.1",
17+
history = listOf(
18+
UsercentricsConsentHistoryEntry(
19+
status = false,
20+
UsercentricsConsentType.EXPLICIT,
21+
123
22+
)
23+
),
24+
isEssential = false
1525
)
1626
)
1727

@@ -22,6 +32,14 @@ internal class GetConsentsMock {
2232
"type" to 0,
2333
"version" to "1.0.1",
2434
"dataProcessor" to "Facebook SDK",
35+
"isEssential" to false,
36+
"history" to listOf(
37+
mapOf(
38+
"timestampInMillis" to 123,
39+
"type" to 0,
40+
"status" to false
41+
)
42+
)
2543
)
2644
)
2745
}

android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/GetTCFDataMock.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ internal class GetTCFDataMock {
9292
deviceStorage = null,
9393
usesCookies = false,
9494
cookieRefresh = null,
95+
dataSharedOutsideEU = false
9596
)
9697
),
9798
)
@@ -182,6 +183,7 @@ internal class GetTCFDataMock {
182183
"deviceStorageDisclosureUrl" to null,
183184
"usesCookies" to false,
184185
"cookieRefresh" to null,
186+
"dataSharedOutsideEU" to false
185187
),
186188
),
187189
)

android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/SaveDecisionsForTCFMock.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.usercentrics.reactnativemodule.mock
22

33
import com.usercentrics.reactnativeusercentrics.extensions.toWritableMap
44
import com.usercentrics.sdk.UserDecision
5+
import com.usercentrics.sdk.UsercentricsConsentHistoryEntry
56
import com.usercentrics.sdk.UsercentricsServiceConsent
67
import com.usercentrics.sdk.models.settings.UsercentricsConsentType
78
import com.usercentrics.sdk.services.tcf.TCFDecisionUILayer
@@ -18,7 +19,15 @@ internal class SaveDecisionsForTCFMock {
1819
status = true,
1920
dataProcessor = "Facebook SDK",
2021
type = UsercentricsConsentType.EXPLICIT,
21-
version = "1.0.1"
22+
version = "1.0.1",
23+
history = listOf(
24+
UsercentricsConsentHistoryEntry(
25+
status = false,
26+
UsercentricsConsentType.EXPLICIT,
27+
123
28+
)
29+
),
30+
isEssential = false
2231
)
2332
)
2433

@@ -62,6 +71,14 @@ internal class SaveDecisionsForTCFMock {
6271
"type" to 0,
6372
"version" to "1.0.1",
6473
"dataProcessor" to "Facebook SDK",
74+
"isEssential" to false,
75+
"history" to listOf(
76+
mapOf(
77+
"timestampInMillis" to 123,
78+
"type" to 0,
79+
"status" to false
80+
)
81+
)
6582
)
6683
)
6784
}

android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/SaveDecisionsMock.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.usercentrics.reactnativemodule.mock
22

33
import com.usercentrics.sdk.UserDecision
44

5-
65
internal class SaveDecisionsMock {
76
companion object {
87
val callDecisions = listOf(
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.usercentrics.reactnativemodule.mock
2+
3+
import com.usercentrics.reactnativeusercentrics.extensions.toWritableMap
4+
5+
internal class ShowFirstLayerMock {
6+
companion object {
7+
val arguments = mapOf(
8+
"layout" to "POPUP_CENTER",
9+
"bannerSettings" to mapOf(
10+
"font" to null,
11+
"logo" to null,
12+
),
13+
"styleSettings" to mapOf(
14+
"headerImage" to null,
15+
"title" to mapOf(
16+
"alignment" to "END",
17+
"textSize" to 20.0,
18+
),
19+
"message" to mapOf(
20+
"alignment" to "CENTER",
21+
"textSize" to 16,
22+
),
23+
"cornerRadius" to 50
24+
),
25+
).toWritableMap()
26+
}
27+
}

android/src/main/java/com/usercentrics/reactnativeusercentrics/RNUsercentricsModule.kt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@ import android.content.Intent
55
import com.facebook.react.bridge.*
66
import com.usercentrics.reactnativeusercentrics.api.UsercentricsProxy
77
import com.usercentrics.reactnativeusercentrics.extensions.*
8+
import com.usercentrics.sdk.UsercentricsBanner
9+
import com.usercentrics.sdk.UsercentricsLayout
810
import com.usercentrics.sdk.models.settings.UsercentricsConsentType
911
import com.usercentrics.sdk.services.tcf.TCFDecisionUILayer
12+
import java.lang.Exception
1013

1114
internal class RNUsercentricsModule(
1215
reactContext: ReactApplicationContext,
@@ -69,6 +72,47 @@ internal class RNUsercentricsModule(
6972
currentActivity?.startActivityForResult(intent, showCMPRequestCode)
7073
}
7174

75+
@ReactMethod
76+
fun showFirstLayer(options: ReadableMap, promise: Promise) {
77+
try {
78+
val assetManager = currentActivity!!.assets
79+
80+
val layout = options.getString("layout")!!.usercentricsLayoutFromEnumString()
81+
val bannerSettings = options.getMap("bannerSettings")?.bannerSettingsFromMap(assetManager)
82+
val styleSettings = options.getMap("styleSettings")?.firstLayerStyleSettingsFromMap(assetManager)
83+
84+
usercentricsProxy.showFirstLayer(
85+
currentActivity!!,
86+
layout,
87+
bannerSettings,
88+
styleSettings,
89+
promise
90+
)
91+
92+
} catch (e: Exception) {
93+
promise.reject(e)
94+
}
95+
}
96+
97+
@ReactMethod
98+
fun showSecondLayer(options: ReadableMap, promise: Promise) {
99+
try {
100+
val assetManager = currentActivity!!.assets
101+
102+
val bannerSettings =
103+
options.getMap("bannerSettings")?.bannerSettingsFromMap(assetManager)
104+
val showCloseButton = options.getBoolean("showCloseButton")
105+
106+
UsercentricsBanner(currentActivity!!, bannerSettings).showSecondLayer(
107+
showCloseButton
108+
) {
109+
promise.resolve(it?.toWritableMap())
110+
}
111+
} catch (e: Exception) {
112+
promise.reject(e)
113+
}
114+
}
115+
72116
internal fun parseActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
73117
if (requestCode != showCMPRequestCode) return false
74118
assert(pendingPromise != null)

0 commit comments

Comments
 (0)