@usercentrics/react-native-sdk 2.2.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/android/build.gradle +1 -1
  3. package/android/src/androidTest/java/com/usercentrics/reactnativemodule/RNUsercentricsModuleTest.kt +13 -144
  4. package/android/src/androidTest/java/com/usercentrics/reactnativemodule/api/FakeUsercentricsProxy.kt +4 -31
  5. package/android/src/androidTest/java/com/usercentrics/reactnativemodule/mock/GetTCFDataMock.kt +3 -1
  6. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/RNUsercentricsModule.kt +25 -76
  7. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/api/UsercentricsProxy.kt +12 -64
  8. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/BannerFontExtensions.kt +26 -0
  9. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/FirstLayerOptionsExtensions.kt +39 -14
  10. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/TCFDataExtensions.kt +2 -1
  11. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/UsercentricsReadyStatusExtensions.kt +1 -1
  12. package/ios/Extensions/BannerSettings+Dict.swift +103 -16
  13. package/ios/Extensions/ReadyStatus+Dict.swift +1 -1
  14. package/ios/Manager/UsercentricsManager.swift +12 -25
  15. package/ios/RNUsercentricsModule.swift +19 -55
  16. package/ios/RNUsercentricsModule.xcodeproj/project.pbxproj +0 -8
  17. package/lib/Usercentrics.d.ts +4 -5
  18. package/lib/Usercentrics.js +3 -7
  19. package/lib/Usercentrics.js.map +1 -1
  20. package/lib/models/BannerSettings.d.ts +26 -4
  21. package/lib/models/BannerSettings.js +25 -1
  22. package/lib/models/BannerSettings.js.map +1 -1
  23. package/lib/models/FirstLayerOptions.d.ts +14 -12
  24. package/lib/models/FirstLayerOptions.js +10 -8
  25. package/lib/models/FirstLayerOptions.js.map +1 -1
  26. package/lib/models/SecondLayerOptions.d.ts +7 -3
  27. package/lib/models/SecondLayerOptions.js +6 -1
  28. package/lib/models/SecondLayerOptions.js.map +1 -1
  29. package/lib/models/TCFData.d.ts +2 -1
  30. package/lib/models/TCFData.js +2 -1
  31. package/lib/models/TCFData.js.map +1 -1
  32. package/lib/models/UsercentricsReadyStatus.d.ts +2 -2
  33. package/lib/models/UsercentricsReadyStatus.js +2 -2
  34. package/lib/models/UsercentricsReadyStatus.js.map +1 -1
  35. package/lib/models/index.d.ts +2 -3
  36. package/lib/models/index.js +2 -3
  37. package/lib/models/index.js.map +1 -1
  38. package/package.json +2 -2
  39. package/android/src/main/java/com/usercentrics/reactnativeusercentrics/extensions/UsercentricsUserInterfaceExtensions.kt +0 -45
  40. package/ios/Extensions/UIFont+UsercentricsFontDict.swift +0 -15
  41. package/ios/Extensions/UsercentricsUISettings+Dict.swift +0 -27
  42. package/lib/models/UsercentricsUIOptions.d.ts +0 -18
  43. package/lib/models/UsercentricsUIOptions.js +0 -21
  44. package/lib/models/UsercentricsUIOptions.js.map +0 -1
@@ -20,12 +20,24 @@ internal fun ReadableMap.bannerSettingsFromMap(assetManager: AssetManager): Bann
20
20
  val customFont = getMap("font")
21
21
  val customLogo = getMap("logo")
22
22
 
23
+ val rawFirstLayerStyleSettings = getMap("firstLayerSettings")
24
+ val rawSecondLayerStyleSettings = getMap("secondLayerSettings")
25
+ val rawLegalLinkSettings = getString("links")
26
+
23
27
  return BannerSettings(
24
- customFont?.usercentricsFontFromMap(assetManager),
25
- customLogo?.usercentricsImageFromMap()
28
+ font = customFont?.bannerFontFromMap(assetManager),
29
+ logo = customLogo?.bannerLogoFromMap(),
30
+ firstLayerSettings = rawFirstLayerStyleSettings?.firstLayerStyleSettingsFromMap(assetManager),
31
+ secondLayerSettings = rawSecondLayerStyleSettings?.secondLayerStyleSettingsFromMap(assetManager),
32
+ links = rawLegalLinkSettings?.legalLinksFromEnumString()
26
33
  )
27
34
  }
28
35
 
36
+ internal fun ReadableMap.bannerLogoFromMap(): UsercentricsImage? {
37
+ val logoPath = getString("logoPath") ?: return null
38
+ return UsercentricsImage.ImageUrl(logoPath)
39
+ }
40
+
29
41
  internal fun ReadableMap.firstLayerStyleSettingsFromMap(assetManager: AssetManager): FirstLayerStyleSettings {
30
42
  return FirstLayerStyleSettings(
31
43
  headerImage = getMap("headerImage")?.headerImageFromMap(),
@@ -44,7 +56,7 @@ internal fun ReadableMap.headerImageFromMap(): HeaderImageSettings? {
44
56
  return HeaderImageSettings.Hidden
45
57
  }
46
58
 
47
- val image = getMap("image")?.usercentricsImageFromMap() ?: return null
59
+ val image = getMap("image")?.bannerLogoFromMap() ?: return null
48
60
 
49
61
  val isExtended = getBooleanOrNull("isExtended") ?: false
50
62
  return if (isExtended) {
@@ -59,21 +71,18 @@ internal fun ReadableMap.headerImageFromMap(): HeaderImageSettings? {
59
71
  }
60
72
 
61
73
  internal fun ReadableMap.titleFromMap(assetManager: AssetManager): TitleSettings {
62
- val font = getMap("font")?.usercentricsFontFromMap(assetManager)
63
74
  return TitleSettings(
64
75
  alignment = getString("alignment")?.sectionAlignmentFromMap(),
65
76
  textColor = getString("textColorHex")?.deserializeColor(),
66
- font = font?.font,
67
- textSizeInSp = font?.sizeInSp
77
+ font = assetManager.createFontFromName(getString("fontName")),
78
+ textSizeInSp = getDoubleOrNull("textSize")?.toFloat()
68
79
  )
69
80
  }
70
81
 
71
82
  internal fun ReadableMap.messageFromMap(assetManager: AssetManager): MessageSettings {
72
- val font = getMap("font")?.usercentricsFontFromMap(assetManager)
73
-
74
83
  return MessageSettings(
75
- font = font?.font,
76
- textSizeInSp = font?.sizeInSp,
84
+ font = assetManager.createFontFromName(getString("fontName")),
85
+ textSizeInSp = getDoubleOrNull("textSize")?.toFloat(),
77
86
  textColor = getString("textColorHex")?.deserializeColor(),
78
87
  alignment = getString("alignment")?.sectionAlignmentFromMap(),
79
88
  linkTextColor = getString("linkTextColorHex")?.deserializeColor(),
@@ -129,15 +138,14 @@ internal fun ReadableMap.buttonLayoutFromMap(
129
138
  internal fun ReadableMap.buttonSettingsFromMap(
130
139
  assetManager: AssetManager
131
140
  ): ButtonSettings {
132
- val font = getMap("font")?.usercentricsFontFromMap(assetManager)
133
- return ButtonSettings(
141
+ return ButtonSettings(
134
142
  type = getString("buttonType")!!.deserializeButtonType(),
135
143
  isAllCaps = getBooleanOrNull("isAllCaps"),
136
- font = font?.font,
144
+ font = assetManager.createFontFromName(getString("fontName")),
137
145
  textColor = getString("textColorHex")?.deserializeColor(),
138
146
  backgroundColor = getString("backgroundColorHex")?.deserializeColor(),
139
147
  cornerRadius = getIntOrNull("cornerRadius"),
140
- textSizeInSp = font?.sizeInSp
148
+ textSizeInSp = getDoubleOrNull("textSize")?.toFloat()
141
149
  )
142
150
  }
143
151
 
@@ -145,6 +153,23 @@ internal fun String.deserializeButtonType(): ButtonType {
145
153
  return ButtonType.valueOf(this)
146
154
  }
147
155
 
156
+ internal fun ReadableMap.secondLayerStyleSettingsFromMap(assetManager: AssetManager): SecondLayerStyleSettings {
157
+ return SecondLayerStyleSettings(
158
+ buttonLayout = getMap("buttonLayout")?.buttonLayoutFromMap(assetManager),
159
+ showCloseButton = getBoolean("showCloseButton"),
160
+ )
161
+ }
162
+
163
+ internal fun String?.legalLinksFromEnumString(): LegalLinksSettings? {
164
+ return when (this) {
165
+ "BOTH" -> LegalLinksSettings.BOTH
166
+ "NONE" -> LegalLinksSettings.NONE
167
+ "FIRST_LAYER_ONLY" -> LegalLinksSettings.FIRST_LAYER_ONLY
168
+ "SECOND_LAYER_ONLY" -> LegalLinksSettings.SECOND_LAYER_ONLY
169
+ else -> null
170
+ }
171
+ }
172
+
148
173
  @ColorInt
149
174
  internal fun String.deserializeColor(): Int? {
150
175
  val colorString: String =
@@ -10,7 +10,8 @@ internal fun TCFData.serialize(): WritableMap {
10
10
  "specialFeatures" to specialFeatures.map { it.serialize() },
11
11
  "specialPurposes" to specialPurposes.map { it.serialize() },
12
12
  "stacks" to stacks.map { it.serialize() },
13
- "vendors" to vendors.map { it.serialize() }
13
+ "vendors" to vendors.map { it.serialize() },
14
+ "tcString" to tcString
14
15
  ).toWritableMap()
15
16
  }
16
17
 
@@ -6,7 +6,7 @@ import com.usercentrics.sdk.UsercentricsReadyStatus
6
6
 
7
7
  internal fun UsercentricsReadyStatus.toWritableMap(): WritableMap {
8
8
  return Arguments.createMap().apply {
9
- putBoolean("shouldShowCMP", shouldShowCMP)
9
+ putBoolean("shouldCollectConsent", shouldCollectConsent)
10
10
  putArray("consents", consents.toWritableArray())
11
11
  }
12
12
  }
@@ -5,25 +5,84 @@ extension BannerSettings {
5
5
  init?(from dictionary: NSDictionary?) {
6
6
  guard let dictionary = dictionary else { return nil }
7
7
 
8
- self.init(font: UIFont(from: dictionary["font"] as? NSDictionary),
9
- logo: UIImage(from: dictionary["logo"] as? NSDictionary))
8
+ let bannerFontHolder = BannerFontHolder(from: dictionary["font"] as? NSDictionary)
9
+
10
+ let firstLayerStyleSettingsDict = dictionary["firstLayerSettings"] as? NSDictionary
11
+ let firstLayerSettings = FirstLayerStyleSettings(from: firstLayerStyleSettingsDict, bannerFontHolder: bannerFontHolder)
12
+
13
+ let secondLayerStyleSettingsDict = dictionary["secondLayerSettings"] as? NSDictionary
14
+ let secondLayerSettings = SecondLayerStyleSettings(from: secondLayerStyleSettingsDict, bannerFontHolder: bannerFontHolder)
15
+
16
+ let links = LegalLinksSettings.from(enumString: dictionary["links"] as? String)
17
+
18
+ self.init(font: bannerFontHolder?.font,
19
+ logo: UIImage(from: dictionary["logo"] as? NSDictionary),
20
+ links: links,
21
+ firstLayerSettings: firstLayerSettings,
22
+ secondLayerSettings: secondLayerSettings)
10
23
  }
11
24
  }
12
25
 
13
- extension FirstLayerStyleSettings {
26
+ struct BannerFontHolder {
27
+ public let font: BannerFont
28
+
29
+ public let regularFont: UIFont
30
+ public let boldFont: UIFont
31
+
14
32
  init?(from dictionary: NSDictionary?) {
33
+ guard let dictionary = dictionary,
34
+ let regularFontName: String = dictionary["regularFont"] as? String,
35
+ let boldFontName: String = dictionary["boldFont"] as? String,
36
+ let fontSize: CGFloat = dictionary["fontSize"] as? CGFloat,
37
+ let regularFont = UIFont(name: regularFontName, size: fontSize),
38
+ let boldFont = UIFont(name: boldFontName, size: fontSize)
39
+ else { return nil }
40
+
41
+ self.regularFont = regularFont
42
+ self.boldFont = boldFont
43
+ self.font = .init(regularFont: regularFont, boldFont: boldFont)
44
+ }
45
+ }
46
+
47
+ extension UIFont {
48
+ static func initialize(from fontName: String?, fontSizeValue: CGFloat?, fallbackFont: UIFont?) -> UIFont? {
49
+ let fontSize = fontSizeValue ?? UIFont.systemFontSize
50
+
51
+ // System font with custom size
52
+ if fontName == nil, fontSizeValue != nil {
53
+ return fallbackFont?.withSize(fontSize) ?? UIFont.systemFont(ofSize: fontSize)
54
+ }
55
+
56
+ if let fontName = fontName {
57
+ return UIFont(name: fontName, size: fontSize)
58
+ }
59
+
60
+ return fallbackFont?.withSize(fontSize)
61
+ }
62
+ }
63
+
64
+ extension FirstLayerStyleSettings {
65
+ init?(from dictionary: NSDictionary?, bannerFontHolder: BannerFontHolder?) {
15
66
  guard let dictionary = dictionary else { return nil }
16
67
 
17
68
  self.init(headerImage: HeaderImageSettings.from(dictionary: dictionary["headerImage"] as? NSDictionary),
18
- title: TitleSettings(from: dictionary["title"] as? NSDictionary),
19
- message: MessageSettings(from: dictionary["message"] as? NSDictionary),
20
- buttonLayout: ButtonLayout.from(dictionary: dictionary["buttonLayout"] as? NSDictionary),
69
+ title: TitleSettings(from: dictionary["title"] as? NSDictionary, fallbackFont: bannerFontHolder?.boldFont),
70
+ message: MessageSettings(from: dictionary["message"] as? NSDictionary, fallbackFont: bannerFontHolder?.regularFont),
71
+ buttonLayout: ButtonLayout.from(dictionary: dictionary["buttonLayout"] as? NSDictionary, fallbackFont: bannerFontHolder?.boldFont),
21
72
  backgroundColor: UIColor(unsafeHex: dictionary["backgroundColorHex"] as? String),
22
73
  cornerRadius: dictionary["cornerRadius"] as? CGFloat,
23
74
  overlayColor: UIColor(unsafeHex: dictionary["overlayColorHex"] as? String))
24
75
  }
25
76
  }
26
77
 
78
+ extension SecondLayerStyleSettings {
79
+ init?(from dictionary: NSDictionary?, bannerFontHolder: BannerFontHolder?) {
80
+ guard let dictionary = dictionary else { return nil }
81
+
82
+ self.init(buttonLayout: ButtonLayout.from(dictionary: dictionary["buttonLayout"] as? NSDictionary, fallbackFont: bannerFontHolder?.boldFont),
83
+ showCloseButton: dictionary["showCloseButton"] as? Bool)
84
+ }
85
+ }
27
86
 
28
87
  extension HeaderImageSettings {
29
88
  static func from(dictionary: NSDictionary?) -> HeaderImageSettings? {
@@ -50,10 +109,13 @@ extension HeaderImageSettings {
50
109
  }
51
110
 
52
111
  extension TitleSettings {
53
- init?(from dictionary: NSDictionary?) {
112
+ init?(from dictionary: NSDictionary?, fallbackFont: UIFont? = nil) {
54
113
  guard let dictionary = dictionary else { return nil }
55
114
 
56
- self.init(font: UIFont(from: dictionary["font"] as? NSDictionary),
115
+ let fontName: String? = dictionary["fontName"] as? String
116
+ let fontSize: CGFloat? = dictionary["textSize"] as? CGFloat
117
+
118
+ self.init(font: UIFont.initialize(from: fontName, fontSizeValue: fontSize, fallbackFont: fallbackFont),
57
119
  textColor: UIColor(unsafeHex: dictionary["textColorHex"] as? String ?? ""),
58
120
  textAlignment: NSTextAlignment.from(enumString: dictionary["textAlignment"] as? String))
59
121
  }
@@ -61,10 +123,13 @@ extension TitleSettings {
61
123
 
62
124
 
63
125
  extension MessageSettings {
64
- init?(from dictionary: NSDictionary?) {
126
+ init?(from dictionary: NSDictionary?, fallbackFont: UIFont? = nil) {
65
127
  guard let dictionary = dictionary else { return nil }
66
128
 
67
- self.init(font: UIFont(from: dictionary["font"] as? NSDictionary),
129
+ let fontName: String? = dictionary["fontName"] as? String
130
+ let textSize: CGFloat? = dictionary["textSize"] as? CGFloat
131
+
132
+ self.init(font: UIFont.initialize(from: fontName, fontSizeValue: textSize, fallbackFont: fallbackFont),
68
133
  textColor: UIColor(unsafeHex: dictionary["textColorHex"] as? String ?? ""),
69
134
  textAlignment: NSTextAlignment.from(enumString: dictionary["textAlignment"] as? String),
70
135
  linkTextColor: UIColor(unsafeHex: dictionary["linkTextColorHex"] as? String ?? ""),
@@ -73,7 +138,7 @@ extension MessageSettings {
73
138
  }
74
139
 
75
140
  extension ButtonLayout {
76
- static func from(dictionary: NSDictionary?) -> ButtonLayout? {
141
+ static func from(dictionary: NSDictionary?, fallbackFont: UIFont? = nil) -> ButtonLayout? {
77
142
  guard let dictionary = dictionary else { return nil }
78
143
 
79
144
  let layoutDict = dictionary["layout"] as? String
@@ -81,11 +146,11 @@ extension ButtonLayout {
81
146
 
82
147
  switch layoutDict {
83
148
  case "ROW":
84
- return .row(buttons: buttons.flatMap { $0 }.compactMap { ButtonSettings(from: $0) })
149
+ return .row(buttons: buttons.flatMap { $0 }.compactMap { ButtonSettings(from: $0, fallbackFont: fallbackFont) })
85
150
  case "COLUMN":
86
- return .column(buttons: buttons.flatMap { $0 }.compactMap { ButtonSettings(from: $0) })
151
+ return .column(buttons: buttons.flatMap { $0 }.compactMap { ButtonSettings(from: $0, fallbackFont: fallbackFont) })
87
152
  case "GRID":
88
- let gridButtons = buttons.map { $0.compactMap { button in ButtonSettings(from: button) }}
153
+ let gridButtons = buttons.map { $0.compactMap { button in ButtonSettings(from: button, fallbackFont: fallbackFont) }}
89
154
  return .grid(buttons: gridButtons)
90
155
  default:
91
156
  break
@@ -96,15 +161,18 @@ extension ButtonLayout {
96
161
  }
97
162
 
98
163
  extension ButtonSettings {
99
- init?(from dictionary: NSDictionary?) {
164
+ init?(from dictionary: NSDictionary?, fallbackFont: UIFont? = nil) {
100
165
  guard
101
166
  let dictionary = dictionary,
102
167
  let buttonTypeDict = dictionary["buttonType"] as? String,
103
168
  let buttonType = ButtonType.from(enumString: buttonTypeDict)
104
169
  else { return nil }
105
170
 
171
+ let fontName: String? = dictionary["fontName"] as? String
172
+ let textSize: CGFloat? = dictionary["textSize"] as? CGFloat
173
+
106
174
  self.init(type: buttonType,
107
- font: UIFont(from: dictionary["font"] as? NSDictionary),
175
+ font: UIFont.initialize(from: fontName, fontSizeValue: textSize, fallbackFont: fallbackFont),
108
176
  textColor: UIColor(unsafeHex: dictionary["textColorHex"] as? String),
109
177
  backgroundColor: UIColor(unsafeHex: dictionary["backgroundColorHex"] as? String),
110
178
  cornerRadius: dictionary["cornerRadius"] as? CGFloat)
@@ -178,3 +246,22 @@ extension NSTextAlignment {
178
246
  }
179
247
  }
180
248
  }
249
+
250
+ extension LegalLinksSettings {
251
+ static func from(enumString: String?) -> LegalLinksSettings? {
252
+ guard let enumString = enumString else { return nil }
253
+
254
+ switch enumString {
255
+ case "BOTH":
256
+ return .both
257
+ case "FIRST_LAYER_ONLY":
258
+ return .firstLayerOnly
259
+ case "NONE":
260
+ return LegalLinksSettings.none
261
+ case "SECOND_LAYER_ONLY":
262
+ return .secondLayerOnly
263
+ default:
264
+ return nil
265
+ }
266
+ }
267
+ }
@@ -4,7 +4,7 @@ import Usercentrics
4
4
  public extension UsercentricsReadyStatus {
5
5
  func toDictionary() -> NSDictionary {
6
6
  return [
7
- "shouldShowCMP": self.shouldShowCMP,
7
+ "shouldCollectConsent": self.shouldCollectConsent,
8
8
  "consents": self.consents.toListOfDictionary()
9
9
  ]
10
10
  }
@@ -8,26 +8,22 @@ public protocol UsercentricsManager {
8
8
  func isReady(onSuccess: @escaping ((UsercentricsReadyStatus) -> Void), onFailure: @escaping ((Error) -> Void))
9
9
  func restoreUserSession(controllerId: String, onSuccess: @escaping ((UsercentricsReadyStatus) -> Void), onFailure: @escaping ((Error) -> Void))
10
10
 
11
- func getPredefinedUI(settings: UsercentricsUISettings?, dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void) -> UIViewController
12
-
13
11
  func showFirstLayer(bannerSettings: BannerSettings?,
14
- hostView: UINavigationController,
12
+ hostView: UIViewController,
15
13
  layout: UsercentricsLayout,
16
- settings: FirstLayerStyleSettings?,
17
14
  dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void)
18
15
 
19
16
  func showSecondLayer(bannerSettings: BannerSettings?,
20
- hostView: UINavigationController,
21
- showCloseButton: Bool,
17
+ hostView: UIViewController,
22
18
  dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void)
23
19
 
24
- func getTCString() -> String
20
+ func getTCString(callback: @escaping (String) -> Void)
25
21
  func getControllerId() -> String
26
22
  func getConsents() -> [UsercentricsServiceConsent]
27
23
  func getCMPData() -> UsercentricsCMPData
28
24
  func getUserSessionData() -> String
29
25
  func getUSPData() -> CCPAData
30
- func getTCFData() -> TCFData
26
+ func getTCFData(callback: @escaping (TCFData) -> Void)
31
27
 
32
28
  func changeLanguage(language: String, onSuccess: @escaping (() -> Void), onFailure: @escaping ((Error) -> Void))
33
29
 
@@ -71,37 +67,28 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
71
67
  UsercentricsCore.reset()
72
68
  }
73
69
 
74
- func getPredefinedUI(settings: UsercentricsUISettings?, dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void) -> UIViewController {
75
- return UsercentricsUserInterface.getPredefinedUI(settings: settings, dismissViewHandler: dismissViewHandler)
76
- }
77
-
78
70
  func showFirstLayer(bannerSettings: BannerSettings?,
79
- hostView: UINavigationController,
71
+ hostView: UIViewController,
80
72
  layout: UsercentricsLayout,
81
- settings: FirstLayerStyleSettings?,
82
73
  dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void) {
83
74
  UsercentricsBanner(bannerSettings: bannerSettings).showFirstLayer(hostView: hostView,
84
75
  layout: layout,
85
- settings: settings,
86
76
  completionHandler: dismissViewHandler)
87
77
  }
88
78
 
89
79
  func showSecondLayer(bannerSettings: BannerSettings?,
90
- hostView: UINavigationController,
91
- showCloseButton: Bool,
80
+ hostView: UIViewController,
92
81
  dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void) {
93
- UsercentricsBanner(bannerSettings: bannerSettings).showSecondLayer(hostView: hostView,
94
- showCloseButton: showCloseButton,
95
- presentationMode: .present,
96
- completionHandler: dismissViewHandler)
82
+ UsercentricsBanner(bannerSettings: bannerSettings).showSecondLayer(hostView: hostView, completionHandler: dismissViewHandler)
97
83
  }
98
84
 
99
85
  func restoreUserSession(controllerId: String, onSuccess: @escaping ((UsercentricsReadyStatus) -> Void), onFailure: @escaping ((Error) -> Void)) {
100
86
  UsercentricsCore.shared.restoreUserSession(controllerId: controllerId, onSuccess: onSuccess, onFailure: onFailure)
101
87
  }
102
88
 
103
- func getTCString() -> String {
104
- return UsercentricsCore.shared.getTCString()
89
+ @available(*, deprecated, message: "Please, call getTCFData() to get the 'tcString' from that model")
90
+ func getTCString(callback: @escaping (String) -> Void) {
91
+ UsercentricsCore.shared.getTCString(callback: callback)
105
92
  }
106
93
 
107
94
  func getControllerId() -> String {
@@ -124,8 +111,8 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
124
111
  return UsercentricsCore.shared.getUSPData()
125
112
  }
126
113
 
127
- func getTCFData() -> TCFData {
128
- return UsercentricsCore.shared.getTCFData()
114
+ func getTCFData(callback: @escaping (TCFData) -> Void) {
115
+ UsercentricsCore.shared.getTCFData(callback: callback)
129
116
  }
130
117
 
131
118
  func changeLanguage(language: String, onSuccess: @escaping (() -> Void), onFailure: @escaping ((Error) -> Void)) {
@@ -24,37 +24,20 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
24
24
  let self = self,
25
25
  let userOptions = UsercentricsOptions(from: dict)
26
26
  else { return }
27
-
27
+
28
28
  self.usercentricsManager.configure(options: userOptions)
29
29
  }
30
30
  }
31
-
31
+
32
32
  @objc func isReady(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
33
- usercentricsManager.isReady { status in
34
- resolve(status.toDictionary())
35
- } onFailure: { error in
36
- reject("usercentrics_reactNative_isReady_error", error.localizedDescription, error)
37
- }
38
- }
39
-
40
- @objc func showCMP(_ dict: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
41
33
  queue.async { [weak self] in
42
- guard
43
- let self = self,
44
- let rootVC = self.rootVC,
45
- let settings = UsercentricsUISettings(from: dict)
46
- else {
47
- reject("usercentrics_reactNative_showCMP_error", RNUsercentricsModuleError.invalidData.localizedDescription, RNUsercentricsModuleError.invalidData)
48
- return
49
- }
50
-
51
- let predefinedUI = self.usercentricsManager.getPredefinedUI(settings: settings) { response in
52
- resolve(response.toDictionary())
53
- rootVC.dismiss(animated: true)
34
+ guard let self = self else { return }
35
+
36
+ self.usercentricsManager.isReady { status in
37
+ resolve(status.toDictionary())
38
+ } onFailure: { error in
39
+ reject("usercentrics_reactNative_isReady_error", error.localizedDescription, error)
54
40
  }
55
-
56
- if #available(iOS 13.0, *) { predefinedUI.isModalInPresentation = true }
57
- rootVC.present(predefinedUI)
58
41
  }
59
42
  }
60
43
 
@@ -69,23 +52,11 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
69
52
  reject("usercentrics_reactNative_showFirstLayer_error", RNUsercentricsModuleError.invalidData.localizedDescription, RNUsercentricsModuleError.invalidData)
70
53
  return
71
54
  }
72
-
73
- let nav = UINavigationController()
74
- nav.setNavigationBarHidden(true, animated: false)
75
- nav.modalPresentationStyle = .overFullScreen
76
- if #available(iOS 13.0, *) {
77
- nav.isModalInPresentation = true
78
- }
79
-
80
- rootVC.present(nav)
55
+
81
56
  let bannerSettingsDict = dict["bannerSettings"] as? NSDictionary
82
- let styleSettingsDict = dict["styleSettings"] as? NSDictionary
83
-
84
57
  self.usercentricsManager.showFirstLayer(bannerSettings: BannerSettings(from: bannerSettingsDict),
85
- hostView: nav,
86
- layout: layout,
87
- settings: FirstLayerStyleSettings(from: styleSettingsDict)) { response in
88
- rootVC.dismiss(animated: true)
58
+ hostView: rootVC as! UIViewController,
59
+ layout: layout) { response in
89
60
  resolve(response.toDictionary())
90
61
  }
91
62
  }
@@ -100,21 +71,10 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
100
71
  reject("usercentrics_reactNative_showFirstLayer_error", RNUsercentricsModuleError.invalidData.localizedDescription, RNUsercentricsModuleError.invalidData)
101
72
  return
102
73
  }
74
+
103
75
  let bannerSettingsDict = dict["bannerSettings"] as? NSDictionary
104
- let showCloseButton = (dict["showCloseButton"] as? Bool) ?? false
105
-
106
- let nav = UINavigationController()
107
- nav.setNavigationBarHidden(true, animated: false)
108
- nav.modalPresentationStyle = .overFullScreen
109
- if #available(iOS 13.0, *) {
110
- nav.isModalInPresentation = true
111
- }
112
-
113
- rootVC.present(nav)
114
-
115
76
  self.usercentricsManager.showSecondLayer(bannerSettings: BannerSettings(from: bannerSettingsDict),
116
- hostView: nav,
117
- showCloseButton: showCloseButton) { response in
77
+ hostView: rootVC as! UIViewController) { response in
118
78
  rootVC.dismiss(animated: true)
119
79
  resolve(response.toDictionary())
120
80
  }
@@ -134,7 +94,9 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
134
94
  }
135
95
 
136
96
  @objc func getTCFString(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
137
- resolve(usercentricsManager.getTCString())
97
+ usercentricsManager.getTCString { tcString in
98
+ resolve(tcString)
99
+ }
138
100
  }
139
101
 
140
102
  @objc func getControllerId(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
@@ -150,7 +112,9 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
150
112
  }
151
113
 
152
114
  @objc func getTCFData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
153
- resolve(usercentricsManager.getTCFData().toDictionary())
115
+ usercentricsManager.getTCFData { tcfData in
116
+ resolve(tcfData.toDictionary())
117
+ }
154
118
  }
155
119
 
156
120
  @objc func getUserSessionData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
@@ -13,9 +13,7 @@
13
13
  A22EDF9F271DA49900F5BB8C /* ReadyStatus+Dict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22EDF9A271DA49900F5BB8C /* ReadyStatus+Dict.swift */; };
14
14
  A22EDFA0271DA49900F5BB8C /* UsercentricsUserInteraction+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22EDF9B271DA49900F5BB8C /* UsercentricsUserInteraction+String.swift */; };
15
15
  A22EDFA1271DA49900F5BB8C /* UserResponse+Dict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22EDF9C271DA49900F5BB8C /* UserResponse+Dict.swift */; };
16
- A22EDFA2271DA49900F5BB8C /* UsercentricsUISettings+Dict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22EDF9D271DA49900F5BB8C /* UsercentricsUISettings+Dict.swift */; };
17
16
  A2390F8227B52ADA00F355C1 /* UIImage+UsercentricsLogoDict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2390F8127B52ADA00F355C1 /* UIImage+UsercentricsLogoDict.swift */; };
18
- A2390F8427B52B0800F355C1 /* UIFont+UsercentricsFontDict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2390F8327B52B0800F355C1 /* UIFont+UsercentricsFontDict.swift */; };
19
17
  A2390F8627B52B2700F355C1 /* UIColor+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2390F8527B52B2700F355C1 /* UIColor+Extensions.swift */; };
20
18
  A24E4EA327313492001093C7 /* UserDecision+Dict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24E4EA227313492001093C7 /* UserDecision+Dict.swift */; };
21
19
  A24E4EAB273186FD001093C7 /* TCFData+Dict.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24E4EAA273186FD001093C7 /* TCFData+Dict.swift */; };
@@ -51,9 +49,7 @@
51
49
  A22EDF9A271DA49900F5BB8C /* ReadyStatus+Dict.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReadyStatus+Dict.swift"; sourceTree = "<group>"; };
52
50
  A22EDF9B271DA49900F5BB8C /* UsercentricsUserInteraction+String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UsercentricsUserInteraction+String.swift"; sourceTree = "<group>"; };
53
51
  A22EDF9C271DA49900F5BB8C /* UserResponse+Dict.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UserResponse+Dict.swift"; sourceTree = "<group>"; };
54
- A22EDF9D271DA49900F5BB8C /* UsercentricsUISettings+Dict.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UsercentricsUISettings+Dict.swift"; sourceTree = "<group>"; };
55
52
  A2390F8127B52ADA00F355C1 /* UIImage+UsercentricsLogoDict.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+UsercentricsLogoDict.swift"; sourceTree = "<group>"; };
56
- A2390F8327B52B0800F355C1 /* UIFont+UsercentricsFontDict.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+UsercentricsFontDict.swift"; sourceTree = "<group>"; };
57
53
  A2390F8527B52B2700F355C1 /* UIColor+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extensions.swift"; sourceTree = "<group>"; };
58
54
  A24E4EA227313492001093C7 /* UserDecision+Dict.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDecision+Dict.swift"; sourceTree = "<group>"; };
59
55
  A24E4EAA273186FD001093C7 /* TCFData+Dict.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TCFData+Dict.swift"; sourceTree = "<group>"; };
@@ -88,7 +84,6 @@
88
84
  children = (
89
85
  A22EDF9A271DA49900F5BB8C /* ReadyStatus+Dict.swift */,
90
86
  A22EDF99271DA49900F5BB8C /* UsercentricsOptions+Dict.swift */,
91
- A22EDF9D271DA49900F5BB8C /* UsercentricsUISettings+Dict.swift */,
92
87
  A22EDF9B271DA49900F5BB8C /* UsercentricsUserInteraction+String.swift */,
93
88
  A22EDF9C271DA49900F5BB8C /* UserResponse+Dict.swift */,
94
89
  A21D32A3272AE191004ED33E /* UsercentricsServiceConsents+Dict.swift */,
@@ -101,7 +96,6 @@
101
96
  A20E7C9327B28D88004DC947 /* BannerSettings+Dict.swift */,
102
97
  A2390F8127B52ADA00F355C1 /* UIImage+UsercentricsLogoDict.swift */,
103
98
  A2390F8527B52B2700F355C1 /* UIColor+Extensions.swift */,
104
- A2390F8327B52B0800F355C1 /* UIFont+UsercentricsFontDict.swift */,
105
99
  );
106
100
  path = Extensions;
107
101
  sourceTree = "<group>";
@@ -215,11 +209,9 @@
215
209
  A2F0B086272C483300A99DD3 /* TCFUserDecisions+Dict.swift in Sources */,
216
210
  A22EDF9F271DA49900F5BB8C /* ReadyStatus+Dict.swift in Sources */,
217
211
  A24E4EAB273186FD001093C7 /* TCFData+Dict.swift in Sources */,
218
- A22EDFA2271DA49900F5BB8C /* UsercentricsUISettings+Dict.swift in Sources */,
219
212
  A2DC25402722A91400AA9DD8 /* UCRNFlag.swift in Sources */,
220
213
  A2DC252727216CFC00AA9DD8 /* DispatchQueueManager.swift in Sources */,
221
214
  A20E7C9427B28D88004DC947 /* BannerSettings+Dict.swift in Sources */,
222
- A2390F8427B52B0800F355C1 /* UIFont+UsercentricsFontDict.swift in Sources */,
223
215
  A22EDF9E271DA49900F5BB8C /* UsercentricsOptions+Dict.swift in Sources */,
224
216
  A2F0B080272C367B00A99DD3 /* UsercentricsConsentType+Int.swift in Sources */,
225
217
  A2DC25362721A05500AA9DD8 /* RNUsercentricsModuleError.swift in Sources */,
@@ -1,15 +1,14 @@
1
- import { UsercentricsOptions, UsercentricsServiceConsent, UsercentricsUIOptions, UsercentricsConsentUserResponse, UsercentricsReadyStatus, UsercentricsCMPData, CCPAData, TCFData, UsercentricsConsentType, TCFDecisionUILayer, UserDecision, TCFUserDecisions, FirstLayerOptions, SecondLayerOptions } from './models';
1
+ import { UsercentricsOptions, UsercentricsServiceConsent, UsercentricsConsentUserResponse, UsercentricsReadyStatus, UsercentricsCMPData, CCPAData, TCFData, UsercentricsConsentType, TCFDecisionUILayer, UserDecision, TCFUserDecisions, FirstLayerOptions, SecondLayerOptions } from './models';
2
2
  export declare const Usercentrics: {
3
3
  configure: (options: UsercentricsOptions) => void;
4
4
  status: () => Promise<UsercentricsReadyStatus>;
5
- /**
6
- * @deprecated showCMP is deprecated: This API will soon be removed in favor of showFirstLayer and showSecondLayer, check our documentation for more details: https://docs.usercentrics.com/cmp_in_app_sdk/latest/collect_consent/present_cmp/
7
- */
8
- showCMP: (options: UsercentricsUIOptions) => Promise<UsercentricsConsentUserResponse>;
9
5
  showFirstLayer: (options: FirstLayerOptions) => Promise<UsercentricsConsentUserResponse>;
10
6
  showSecondLayer: (options: SecondLayerOptions) => Promise<UsercentricsConsentUserResponse>;
11
7
  restoreUserSession: (controllerId: string) => Promise<UsercentricsReadyStatus>;
12
8
  getControllerId: () => Promise<string>;
9
+ /**
10
+ * @deprecated Please, call getTCFData() to get the 'tcString' from that model
11
+ */
13
12
  getTCFString: () => Promise<string>;
14
13
  getConsents: () => Promise<[UsercentricsServiceConsent]>;
15
14
  getCMPData: () => Promise<UsercentricsCMPData>;
@@ -7,13 +7,6 @@ export const Usercentrics = {
7
7
  status: () => {
8
8
  return RNUsercentricsModule.isReady();
9
9
  },
10
- /**
11
- * @deprecated showCMP is deprecated: This API will soon be removed in favor of showFirstLayer and showSecondLayer, check our documentation for more details: https://docs.usercentrics.com/cmp_in_app_sdk/latest/collect_consent/present_cmp/
12
- */
13
- showCMP: async (options) => {
14
- await RNUsercentricsModule.isReady();
15
- return RNUsercentricsModule.showCMP(options);
16
- },
17
10
  showFirstLayer: async (options) => {
18
11
  await RNUsercentricsModule.isReady();
19
12
  return RNUsercentricsModule.showFirstLayer(options);
@@ -30,6 +23,9 @@ export const Usercentrics = {
30
23
  await RNUsercentricsModule.isReady();
31
24
  return RNUsercentricsModule.getControllerId();
32
25
  },
26
+ /**
27
+ * @deprecated Please, call getTCFData() to get the 'tcString' from that model
28
+ */
33
29
  getTCFString: async () => {
34
30
  await RNUsercentricsModule.isReady();
35
31
  return RNUsercentricsModule.getTCFString();
@@ -1 +1 @@
1
- {"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"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"}