@usercentrics/react-native-sdk 2.25.1 → 2.26.2
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 +7 -7
- package/android/build-legacy.gradle +1 -1
- package/android/build.gradle.kts +1 -1
- package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt +102 -2
- package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt +19 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/BannerSettingsExtensions.kt +2 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/GppDataExtensions.kt +83 -0
- package/android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt +2 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt +46 -2
- package/android/src/test/java/com/usercentrics/reactnative/extensions/NullabilityTest.kt +189 -0
- package/ios/Extensions/GppData+Dict.swift +45 -0
- package/ios/Extensions/GppSectionChangePayload+Dict.swift +10 -0
- package/ios/Extensions/UIImage+UsercentricsLogoDict.swift +31 -6
- package/ios/Extensions/UsercentricsCMPData+Dict.swift +8 -2
- package/ios/Manager/UsercentricsManager.swift +28 -3
- package/ios/RNUsercentricsModule.mm +11 -7
- package/ios/RNUsercentricsModule.swift +56 -15
- package/ios/RNUsercentricsModule.xcodeproj/project.pbxproj +2 -2
- package/ios/RNUsercentricsModuleSpec.h +13 -0
- package/lib/NativeUsercentrics.d.ts +8 -2
- package/lib/NativeUsercentrics.js.map +1 -1
- package/lib/Usercentrics.d.ts +8 -2
- package/lib/Usercentrics.js +23 -3
- package/lib/Usercentrics.js.map +1 -1
- package/lib/fabric/NativeUsercentricsModule.d.ts +7 -1
- package/lib/fabric/NativeUsercentricsModule.js.map +1 -1
- package/lib/models/CCPASettings.d.ts +3 -1
- package/lib/models/CCPASettings.js +3 -1
- package/lib/models/CCPASettings.js.map +1 -1
- package/lib/models/GppData.d.ts +6 -0
- package/lib/models/GppData.js +8 -0
- package/lib/models/GppData.js.map +1 -0
- package/lib/models/GppSectionChangePayload.d.ts +4 -0
- package/lib/models/GppSectionChangePayload.js +6 -0
- package/lib/models/GppSectionChangePayload.js.map +1 -0
- package/lib/models/TCF2Settings.d.ts +2 -2
- package/lib/models/TCF2Settings.js +2 -2
- package/lib/models/TCF2Settings.js.map +1 -1
- package/lib/models/UsercentricsSettings.d.ts +3 -1
- package/lib/models/UsercentricsSettings.js +3 -1
- package/lib/models/UsercentricsSettings.js.map +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.js +2 -0
- package/lib/models/index.js.map +1 -1
- package/package.json +14 -8
- package/src/NativeUsercentrics.ts +10 -1
- package/src/Usercentrics.tsx +31 -3
- package/src/__tests__/index.test.ts +66 -1
- package/src/__tests__/mocks.ts +17 -1
- package/src/fabric/NativeUsercentricsModule.ts +8 -1
- package/src/models/CCPASettings.tsx +7 -1
- package/src/models/GppData.tsx +15 -0
- package/src/models/GppSectionChangePayload.tsx +7 -0
- package/src/models/TCF2Settings.tsx +3 -3
- package/src/models/UsercentricsSettings.tsx +6 -0
- package/src/models/index.tsx +2 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export class CCPASettings {
|
|
2
|
-
constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo) {
|
|
2
|
+
constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo, mspaCoveredTransaction, mspaMode) {
|
|
3
3
|
this.optOutNoticeLabel = optOutNoticeLabel;
|
|
4
4
|
this.btnSave = btnSave;
|
|
5
5
|
this.firstLayerTitle = firstLayerTitle;
|
|
@@ -14,6 +14,8 @@ export class CCPASettings {
|
|
|
14
14
|
this.secondLayerDescription = secondLayerDescription;
|
|
15
15
|
this.secondLayerHideLanguageSwitch = secondLayerHideLanguageSwitch;
|
|
16
16
|
this.btnMoreInfo = btnMoreInfo;
|
|
17
|
+
this.mspaCoveredTransaction = mspaCoveredTransaction;
|
|
18
|
+
this.mspaMode = mspaMode;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=CCPASettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAmBrB,YACI,iBAAyB,EACzB,OAAe,EACf,eAAuB,EACvB,QAAiB,EACjB,cAAuB,EACvB,eAAuB,EACvB,kBAA2B,EAC3B,wBAAgC,EAChC,mCAA4C,EAC5C,2BAAmC,EACnC,gBAAwB,EACxB,sBAA8B,EAC9B,6BAAsC,EACtC,WAAmB,EACnB,sBAAgC,EAChC,QAAiB;QAEjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,IAAI,CAAC,mCAAmC,GAAG,mCAAmC,CAAA;QAC9E,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAA;QAC9D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAA;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GppData.js","sourceRoot":"","sources":["../../src/models/GppData.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAKhB,YACI,SAAiB,EACjB,kBAA4B,EAC5B,QAAiD;QAEjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GppSectionChangePayload.js","sourceRoot":"","sources":["../../src/models/GppSectionChangePayload.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAGhC,YAAY,IAAY;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ"}
|
|
@@ -35,7 +35,7 @@ export declare class TCF2Settings {
|
|
|
35
35
|
disabledSpecialFeatures: [number];
|
|
36
36
|
firstLayerShowDescriptions: boolean;
|
|
37
37
|
hideNonIabOnFirstLayer: boolean;
|
|
38
|
-
|
|
38
|
+
resurfacePeriod: number;
|
|
39
39
|
resurfacePurposeChanged: boolean;
|
|
40
40
|
resurfaceVendorAdded: boolean;
|
|
41
41
|
firstLayerDescription: string;
|
|
@@ -58,7 +58,7 @@ export declare class TCF2Settings {
|
|
|
58
58
|
changedPurposes: TCF2ChangedPurposes;
|
|
59
59
|
acmV2Enabled: boolean;
|
|
60
60
|
selectedATPIds: number[];
|
|
61
|
-
constructor(firstLayerTitle: string, secondLayerTitle: string, tabsPurposeLabel: string, tabsVendorsLabel: string, labelsFeatures: string, labelsIabVendors: string, labelsNonIabPurposes: string, labelsNonIabVendors: string, labelsPurposes: string, vendorFeatures: string, vendorLegitimateInterestPurposes: string, vendorPurpose: string, vendorSpecialFeatures: string, vendorSpecialPurposes: string, togglesConsentToggleLabel: string, togglesLegIntToggleLabel: string, buttonsAcceptAllLabel: string, buttonsDenyAllLabel: string, buttonsSaveLabel: string, linksManageSettingsLabel: string, linksVendorListLinkLabel: string, cmpId: number, cmpVersion: number, firstLayerHideToggles: boolean, secondLayerHideToggles: boolean, hideLegitimateInterestToggles: boolean, secondLayerHideButtonDeny: boolean, publisherCountryCode: string, purposeOneTreatment: boolean, selectedVendorIds: [number], gdprApplies: boolean, selectedStacks: [number], disabledSpecialFeatures: [number], firstLayerShowDescriptions: boolean, hideNonIabOnFirstLayer: boolean,
|
|
61
|
+
constructor(firstLayerTitle: string, secondLayerTitle: string, tabsPurposeLabel: string, tabsVendorsLabel: string, labelsFeatures: string, labelsIabVendors: string, labelsNonIabPurposes: string, labelsNonIabVendors: string, labelsPurposes: string, vendorFeatures: string, vendorLegitimateInterestPurposes: string, vendorPurpose: string, vendorSpecialFeatures: string, vendorSpecialPurposes: string, togglesConsentToggleLabel: string, togglesLegIntToggleLabel: string, buttonsAcceptAllLabel: string, buttonsDenyAllLabel: string, buttonsSaveLabel: string, linksManageSettingsLabel: string, linksVendorListLinkLabel: string, cmpId: number, cmpVersion: number, firstLayerHideToggles: boolean, secondLayerHideToggles: boolean, hideLegitimateInterestToggles: boolean, secondLayerHideButtonDeny: boolean, publisherCountryCode: string, purposeOneTreatment: boolean, selectedVendorIds: [number], gdprApplies: boolean, selectedStacks: [number], disabledSpecialFeatures: [number], firstLayerShowDescriptions: boolean, hideNonIabOnFirstLayer: boolean, resurfacePeriod: number, resurfacePurposeChanged: boolean, resurfaceVendorAdded: boolean, firstLayerDescription: string, firstLayerAdditionalInfo: string, secondLayerDescription: string, togglesSpecialFeaturesToggleOn: string, togglesSpecialFeaturesToggleOff: string, appLayerNoteResurface: string, firstLayerNoteResurface: string, categoriesOfDataLabel: string, dataRetentionPeriodLabel: string, legitimateInterestLabel: string, version: string, examplesLabel: string, showDataSharedOutsideEUText: boolean, vendorIdsOutsideEUList: [number], scope: TCF2Scope, changedPurposes: TCF2ChangedPurposes, acmV2Enabled: boolean, selectedATPIds: number[], firstLayerHideButtonDeny?: boolean, firstLayerMobileVariant?: FirstLayerMobileVariant, dataSharedOutsideEUText?: string);
|
|
62
62
|
}
|
|
63
63
|
export declare enum FirstLayerMobileVariant {
|
|
64
64
|
sheet = 0,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export class TCF2Settings {
|
|
2
|
-
constructor(firstLayerTitle, secondLayerTitle, tabsPurposeLabel, tabsVendorsLabel, labelsFeatures, labelsIabVendors, labelsNonIabPurposes, labelsNonIabVendors, labelsPurposes, vendorFeatures, vendorLegitimateInterestPurposes, vendorPurpose, vendorSpecialFeatures, vendorSpecialPurposes, togglesConsentToggleLabel, togglesLegIntToggleLabel, buttonsAcceptAllLabel, buttonsDenyAllLabel, buttonsSaveLabel, linksManageSettingsLabel, linksVendorListLinkLabel, cmpId, cmpVersion, firstLayerHideToggles, secondLayerHideToggles, hideLegitimateInterestToggles, secondLayerHideButtonDeny, publisherCountryCode, purposeOneTreatment, selectedVendorIds, gdprApplies, selectedStacks, disabledSpecialFeatures, firstLayerShowDescriptions, hideNonIabOnFirstLayer,
|
|
2
|
+
constructor(firstLayerTitle, secondLayerTitle, tabsPurposeLabel, tabsVendorsLabel, labelsFeatures, labelsIabVendors, labelsNonIabPurposes, labelsNonIabVendors, labelsPurposes, vendorFeatures, vendorLegitimateInterestPurposes, vendorPurpose, vendorSpecialFeatures, vendorSpecialPurposes, togglesConsentToggleLabel, togglesLegIntToggleLabel, buttonsAcceptAllLabel, buttonsDenyAllLabel, buttonsSaveLabel, linksManageSettingsLabel, linksVendorListLinkLabel, cmpId, cmpVersion, firstLayerHideToggles, secondLayerHideToggles, hideLegitimateInterestToggles, secondLayerHideButtonDeny, publisherCountryCode, purposeOneTreatment, selectedVendorIds, gdprApplies, selectedStacks, disabledSpecialFeatures, firstLayerShowDescriptions, hideNonIabOnFirstLayer, resurfacePeriod, resurfacePurposeChanged, resurfaceVendorAdded, firstLayerDescription, firstLayerAdditionalInfo, secondLayerDescription, togglesSpecialFeaturesToggleOn, togglesSpecialFeaturesToggleOff, appLayerNoteResurface, firstLayerNoteResurface, categoriesOfDataLabel, dataRetentionPeriodLabel, legitimateInterestLabel, version, examplesLabel, showDataSharedOutsideEUText, vendorIdsOutsideEUList, scope, changedPurposes, acmV2Enabled, selectedATPIds, firstLayerHideButtonDeny, firstLayerMobileVariant, dataSharedOutsideEUText) {
|
|
3
3
|
this.firstLayerTitle = firstLayerTitle;
|
|
4
4
|
this.secondLayerTitle = secondLayerTitle;
|
|
5
5
|
this.tabsPurposeLabel = tabsPurposeLabel;
|
|
@@ -36,7 +36,7 @@ export class TCF2Settings {
|
|
|
36
36
|
this.disabledSpecialFeatures = disabledSpecialFeatures;
|
|
37
37
|
this.firstLayerShowDescriptions = firstLayerShowDescriptions;
|
|
38
38
|
this.hideNonIabOnFirstLayer = hideNonIabOnFirstLayer;
|
|
39
|
-
this.
|
|
39
|
+
this.resurfacePeriod = resurfacePeriod;
|
|
40
40
|
this.resurfacePurposeChanged = resurfacePurposeChanged;
|
|
41
41
|
this.resurfaceVendorAdded = resurfaceVendorAdded;
|
|
42
42
|
this.firstLayerDescription = firstLayerDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TCF2Settings.js","sourceRoot":"","sources":["../../src/models/TCF2Settings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IA6DrB,YACI,eAAuB,EACvB,gBAAwB,EACxB,gBAAwB,EACxB,gBAAwB,EACxB,cAAsB,EACtB,gBAAwB,EACxB,oBAA4B,EAC5B,mBAA2B,EAC3B,cAAsB,EACtB,cAAsB,EACtB,gCAAwC,EACxC,aAAqB,EACrB,qBAA6B,EAC7B,qBAA6B,EAC7B,yBAAiC,EACjC,wBAAgC,EAChC,qBAA6B,EAC7B,mBAA2B,EAC3B,gBAAwB,EACxB,wBAAgC,EAChC,wBAAgC,EAChC,KAAa,EACb,UAAkB,EAClB,qBAA8B,EAC9B,sBAA+B,EAC/B,6BAAsC,EACtC,yBAAkC,EAClC,oBAA4B,EAC5B,mBAA4B,EAC5B,iBAA2B,EAC3B,WAAoB,EACpB,cAAwB,EACxB,uBAAiC,EACjC,0BAAmC,EACnC,sBAA+B,EAC/B,
|
|
1
|
+
{"version":3,"file":"TCF2Settings.js","sourceRoot":"","sources":["../../src/models/TCF2Settings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,9 @@ export declare class UsercentricsSettings {
|
|
|
30
30
|
publishedApps?: [PublishedApp];
|
|
31
31
|
renewConsentsTimestamp?: number;
|
|
32
32
|
consentWebhook?: boolean;
|
|
33
|
-
|
|
33
|
+
gppSignalingEnabled?: boolean;
|
|
34
|
+
gpcSignalHonoured?: boolean;
|
|
35
|
+
constructor(labels: UsercentricsLabels, version: string, language: string, imprintUrl: string, privacyPolicyUrl: string, cookiePolicyUrl: string, firstLayerDescriptionHtml: string, firstLayerMobileDescriptionHtml: string, settingsId: string, bannerMobileDescriptionIsActive: boolean, enablePoweredBy: boolean, displayOnlyForEU: boolean, tcf2Enabled: boolean, reshowBanner: number, editableLanguages: [string], languagesAvailable: [string], showInitialViewForVersionChange: [string], ccpa?: CCPASettings, tcf2?: TCF2Settings, customization?: string, firstLayer?: FirstLayer, secondLayer?: SecondLayer, variants?: VariantsSettings, dpsDisplayFormat?: DpsDisplayFormat, framework?: USAFrameworks, publishedApps?: [PublishedApp], renewConsentsTimestamp?: number, consentWebhook?: boolean, gppSignalingEnabled?: boolean, gpcSignalHonoured?: boolean);
|
|
34
36
|
}
|
|
35
37
|
export declare class FirstLayer {
|
|
36
38
|
hideButtonDeny?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export class UsercentricsSettings {
|
|
2
|
-
constructor(labels, version, language, imprintUrl, privacyPolicyUrl, cookiePolicyUrl, firstLayerDescriptionHtml, firstLayerMobileDescriptionHtml, settingsId, bannerMobileDescriptionIsActive, enablePoweredBy, displayOnlyForEU, tcf2Enabled, reshowBanner, editableLanguages, languagesAvailable, showInitialViewForVersionChange, ccpa, tcf2, customization, firstLayer, secondLayer, variants, dpsDisplayFormat, framework, publishedApps, renewConsentsTimestamp, consentWebhook) {
|
|
2
|
+
constructor(labels, version, language, imprintUrl, privacyPolicyUrl, cookiePolicyUrl, firstLayerDescriptionHtml, firstLayerMobileDescriptionHtml, settingsId, bannerMobileDescriptionIsActive, enablePoweredBy, displayOnlyForEU, tcf2Enabled, reshowBanner, editableLanguages, languagesAvailable, showInitialViewForVersionChange, ccpa, tcf2, customization, firstLayer, secondLayer, variants, dpsDisplayFormat, framework, publishedApps, renewConsentsTimestamp, consentWebhook, gppSignalingEnabled, gpcSignalHonoured) {
|
|
3
3
|
this.labels = labels;
|
|
4
4
|
this.version = version;
|
|
5
5
|
this.language = language;
|
|
@@ -28,6 +28,8 @@ export class UsercentricsSettings {
|
|
|
28
28
|
this.publishedApps = publishedApps;
|
|
29
29
|
this.renewConsentsTimestamp = renewConsentsTimestamp;
|
|
30
30
|
this.consentWebhook = consentWebhook;
|
|
31
|
+
this.gppSignalingEnabled = gppSignalingEnabled;
|
|
32
|
+
this.gpcSignalHonoured = gpcSignalHonoured;
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
export class FirstLayer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsercentricsSettings.js","sourceRoot":"","sources":["../../src/models/UsercentricsSettings.tsx"],"names":[],"mappings":"AAIA,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"UsercentricsSettings.js","sourceRoot":"","sources":["../../src/models/UsercentricsSettings.tsx"],"names":[],"mappings":"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"}
|
package/lib/models/index.d.ts
CHANGED
package/lib/models/index.js
CHANGED
|
@@ -27,4 +27,6 @@ export * from './UsercentricsLocation';
|
|
|
27
27
|
export * from './UsercentricsSettings';
|
|
28
28
|
export * from './GeolocationRuleset';
|
|
29
29
|
export * from './LegalBasisLocalization';
|
|
30
|
+
export * from './GppData';
|
|
31
|
+
export * from './GppSectionChangePayload';
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
package/lib/models/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.tsx"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.tsx"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,2BAA2B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usercentrics/react-native-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.26.2",
|
|
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.26.2",
|
|
11
11
|
"license": "SEE LICENSE IN LICENSE",
|
|
12
12
|
"files": [
|
|
13
13
|
"android",
|
|
@@ -46,25 +46,32 @@
|
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@babel/core": "^7.25.10",
|
|
49
|
-
"@react-native-community/cli": "^
|
|
50
|
-
"@react-native-community/cli-platform-android": "
|
|
51
|
-
"@react-native-community/cli-platform-ios": "
|
|
49
|
+
"@react-native-community/cli": "^20.1.3",
|
|
50
|
+
"@react-native-community/cli-platform-android": "^20.1.3",
|
|
51
|
+
"@react-native-community/cli-platform-ios": "^20.1.3",
|
|
52
52
|
"@react-native-community/eslint-config": "^3.0.1",
|
|
53
53
|
"@react-native/babel-preset": "^0.81.1",
|
|
54
54
|
"@types/jest": "^29.5.2",
|
|
55
|
-
"@types/react-native": "^0.73.0",
|
|
56
55
|
"@types/react-test-renderer": "^19.0.0",
|
|
57
56
|
"babel-jest": "^29.5.0",
|
|
58
57
|
"eslint": "^8.44.0",
|
|
59
58
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
60
59
|
"jest": "^29.5.0",
|
|
61
|
-
"metro-react-native-babel-preset": "^0.77.0",
|
|
62
60
|
"react": "^19.1.0",
|
|
63
61
|
"react-native": "^0.79.6",
|
|
64
62
|
"react-native-codegen": "^0.0.7",
|
|
65
63
|
"react-test-renderer": "^19.1.0",
|
|
66
64
|
"typescript": "^5.8.3"
|
|
67
65
|
},
|
|
66
|
+
"overrides": {
|
|
67
|
+
"fast-xml-parser": ">=4.5.4",
|
|
68
|
+
"braces": ">=3.0.3",
|
|
69
|
+
"micromatch": ">=4.0.8",
|
|
70
|
+
"flatted": ">=3.4.2",
|
|
71
|
+
"lodash": ">=4.18.1",
|
|
72
|
+
"picomatch": ">=4.0.4",
|
|
73
|
+
"yaml": ">=2.8.3"
|
|
74
|
+
},
|
|
68
75
|
"peerDependencies": {
|
|
69
76
|
"react": "*",
|
|
70
77
|
"react-native": "*"
|
|
@@ -91,7 +98,6 @@
|
|
|
91
98
|
]
|
|
92
99
|
},
|
|
93
100
|
"directories": {
|
|
94
|
-
"example": "example",
|
|
95
101
|
"lib": "lib"
|
|
96
102
|
},
|
|
97
103
|
"repository": {
|
|
@@ -9,9 +9,11 @@ import type {
|
|
|
9
9
|
AdditionalConsentModeData,
|
|
10
10
|
TCFData,
|
|
11
11
|
CCPAData,
|
|
12
|
+
GppData,
|
|
12
13
|
UserDecision,
|
|
13
14
|
TCFUserDecisions,
|
|
14
15
|
TCFUserDecisionOnPurpose,
|
|
16
|
+
TCFUserDecisionOnVendor,
|
|
15
17
|
} from './models';
|
|
16
18
|
|
|
17
19
|
export interface Spec extends TurboModule {
|
|
@@ -35,18 +37,22 @@ export interface Spec extends TurboModule {
|
|
|
35
37
|
getTCFData(): Promise<TCFData>;
|
|
36
38
|
getUserSessionData(): Promise<string>;
|
|
37
39
|
getUSPData(): Promise<CCPAData>;
|
|
40
|
+
getGPPData(): Promise<GppData>;
|
|
41
|
+
getGPPString(): Promise<string | null>;
|
|
38
42
|
getABTestingVariant(): Promise<string>;
|
|
43
|
+
getDpsMetadata(templateId: string): Promise<Record<string, unknown> | null>;
|
|
39
44
|
|
|
40
45
|
// Configuration Setters
|
|
41
46
|
setCMPId(id: number): void;
|
|
42
47
|
setABTestingVariant(variant: string): void;
|
|
48
|
+
setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
|
|
43
49
|
changeLanguage(language: string): Promise<void>;
|
|
44
50
|
|
|
45
51
|
// Consent Actions
|
|
46
52
|
acceptAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
47
53
|
acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
48
54
|
denyAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
49
|
-
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>): Promise<Array<UsercentricsServiceConsent>>;
|
|
55
|
+
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>, unsavedVendorLIDecisions: Array<TCFUserDecisionOnVendor>): Promise<Array<UsercentricsServiceConsent>>;
|
|
50
56
|
|
|
51
57
|
saveDecisions(decisions: Array<UserDecision>, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
52
58
|
saveDecisionsForTCF(
|
|
@@ -59,6 +65,9 @@ export interface Spec extends TurboModule {
|
|
|
59
65
|
|
|
60
66
|
// Analytics
|
|
61
67
|
track(event: number): void;
|
|
68
|
+
|
|
69
|
+
addListener(eventName: string): void;
|
|
70
|
+
removeListeners(count: number): void;
|
|
62
71
|
}
|
|
63
72
|
|
|
64
73
|
// Try to get TurboModule first, fallback to NativeModule
|
package/src/Usercentrics.tsx
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import {NativeModules, Platform} from 'react-native';
|
|
1
|
+
import {EmitterSubscription, NativeEventEmitter, NativeModules, Platform} from 'react-native';
|
|
2
2
|
import {
|
|
3
3
|
AdditionalConsentModeData,
|
|
4
4
|
BannerSettings,
|
|
5
5
|
CCPAData,
|
|
6
|
+
GppData,
|
|
7
|
+
GppSectionChangePayload,
|
|
6
8
|
TCFData,
|
|
7
9
|
TCFDecisionUILayer,
|
|
8
10
|
TCFUserDecisionOnPurpose,
|
|
11
|
+
TCFUserDecisionOnVendor,
|
|
9
12
|
TCFUserDecisions,
|
|
10
13
|
UsercentricsAnalyticsEventType,
|
|
11
14
|
UsercentricsCMPData,
|
|
@@ -20,6 +23,7 @@ import NativeUsercentrics from './NativeUsercentrics';
|
|
|
20
23
|
|
|
21
24
|
// Use TurboModule when available, fallback to legacy bridge
|
|
22
25
|
const RNUsercentricsModule = NativeUsercentrics || NativeModules.RNUsercentricsModule;
|
|
26
|
+
const eventEmitter = new NativeEventEmitter(RNUsercentricsModule);
|
|
23
27
|
|
|
24
28
|
export const Usercentrics = {
|
|
25
29
|
|
|
@@ -76,6 +80,16 @@ export const Usercentrics = {
|
|
|
76
80
|
return RNUsercentricsModule.getUSPData();
|
|
77
81
|
},
|
|
78
82
|
|
|
83
|
+
getGPPData: async (): Promise<GppData> => {
|
|
84
|
+
await RNUsercentricsModule.isReady();
|
|
85
|
+
return RNUsercentricsModule.getGPPData();
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
getGPPString: async (): Promise<string | null> => {
|
|
89
|
+
await RNUsercentricsModule.isReady();
|
|
90
|
+
return RNUsercentricsModule.getGPPString();
|
|
91
|
+
},
|
|
92
|
+
|
|
79
93
|
getTCFData: async (): Promise<TCFData> => {
|
|
80
94
|
await RNUsercentricsModule.isReady();
|
|
81
95
|
return RNUsercentricsModule.getTCFData();
|
|
@@ -86,6 +100,11 @@ export const Usercentrics = {
|
|
|
86
100
|
return RNUsercentricsModule.getAdditionalConsentModeData();
|
|
87
101
|
},
|
|
88
102
|
|
|
103
|
+
getDpsMetadata: async (templateId: string): Promise<Record<string, unknown> | null> => {
|
|
104
|
+
await RNUsercentricsModule.isReady();
|
|
105
|
+
return RNUsercentricsModule.getDpsMetadata(templateId);
|
|
106
|
+
},
|
|
107
|
+
|
|
89
108
|
changeLanguage: async (language: string): Promise<void> => {
|
|
90
109
|
await RNUsercentricsModule.isReady();
|
|
91
110
|
return RNUsercentricsModule.changeLanguage(language);
|
|
@@ -106,9 +125,9 @@ export const Usercentrics = {
|
|
|
106
125
|
return RNUsercentricsModule.denyAll(consentType);
|
|
107
126
|
},
|
|
108
127
|
|
|
109
|
-
denyAllForTCF: async (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: TCFUserDecisionOnPurpose[] = []): Promise<Array<UsercentricsServiceConsent>> => {
|
|
128
|
+
denyAllForTCF: async (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: TCFUserDecisionOnPurpose[] = [], unsavedVendorLIDecisions: TCFUserDecisionOnVendor[] = []): Promise<Array<UsercentricsServiceConsent>> => {
|
|
110
129
|
await RNUsercentricsModule.isReady();
|
|
111
|
-
return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions);
|
|
130
|
+
return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions, unsavedVendorLIDecisions);
|
|
112
131
|
},
|
|
113
132
|
|
|
114
133
|
saveDecisions: async (decisions: UserDecision[], consentType: UsercentricsConsentType): Promise<Array<UsercentricsServiceConsent>> => {
|
|
@@ -134,6 +153,11 @@ export const Usercentrics = {
|
|
|
134
153
|
RNUsercentricsModule.setABTestingVariant(variant);
|
|
135
154
|
},
|
|
136
155
|
|
|
156
|
+
setGPPConsent: async (sectionName: string, fieldName: string, value: unknown) => {
|
|
157
|
+
await RNUsercentricsModule.isReady();
|
|
158
|
+
RNUsercentricsModule.setGPPConsent(sectionName, fieldName, { value } as Object);
|
|
159
|
+
},
|
|
160
|
+
|
|
137
161
|
track: async (event: UsercentricsAnalyticsEventType) => {
|
|
138
162
|
await RNUsercentricsModule.isReady();
|
|
139
163
|
RNUsercentricsModule.track(event);
|
|
@@ -143,4 +167,8 @@ export const Usercentrics = {
|
|
|
143
167
|
await RNUsercentricsModule.isReady();
|
|
144
168
|
return RNUsercentricsModule.clearUserSession();
|
|
145
169
|
},
|
|
170
|
+
|
|
171
|
+
onGppSectionChange: (callback: (payload: GppSectionChangePayload) => void): EmitterSubscription => {
|
|
172
|
+
return eventEmitter.addListener("onGppSectionChange", callback);
|
|
173
|
+
},
|
|
146
174
|
}
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
ccpaDataExample,
|
|
19
19
|
cmpDataExample,
|
|
20
20
|
featuresExample,
|
|
21
|
+
gppDataExample,
|
|
21
22
|
purposesExample,
|
|
22
23
|
tcfUserDecisionOnPurposeExample,
|
|
23
24
|
tcfUserDecisionOnSpecialFeatureExample,
|
|
@@ -45,6 +46,8 @@ jest.mock("react-native", () => {
|
|
|
45
46
|
getCMPData: jest.fn(),
|
|
46
47
|
getUserSessionData: jest.fn(),
|
|
47
48
|
getUSPData: jest.fn(),
|
|
49
|
+
getGPPData: jest.fn(),
|
|
50
|
+
getGPPString: jest.fn(),
|
|
48
51
|
getTCFData: jest.fn(),
|
|
49
52
|
getAdditionalConsentModeData: jest.fn(),
|
|
50
53
|
changeLanguage: jest.fn(),
|
|
@@ -55,9 +58,13 @@ jest.mock("react-native", () => {
|
|
|
55
58
|
saveOptOutForCCPA: jest.fn(),
|
|
56
59
|
saveDecisionsForTCF: jest.fn(),
|
|
57
60
|
saveDecisions: jest.fn(),
|
|
61
|
+
setGPPConsent: jest.fn(),
|
|
58
62
|
track: jest.fn(),
|
|
59
63
|
reset: jest.fn(),
|
|
60
|
-
|
|
64
|
+
getDpsMetadata: jest.fn(),
|
|
65
|
+
clearUserSession: jest.fn(),
|
|
66
|
+
addListener: jest.fn(),
|
|
67
|
+
removeListeners: jest.fn()
|
|
61
68
|
};
|
|
62
69
|
|
|
63
70
|
return RN
|
|
@@ -395,6 +402,33 @@ describe('Test Usercentrics Module', () => {
|
|
|
395
402
|
expect(data).toStrictEqual([usercentricsServiceConsent]);
|
|
396
403
|
})
|
|
397
404
|
|
|
405
|
+
test('testGetGPPData', async () => {
|
|
406
|
+
RNUsercentricsModule.getGPPData.mockImplementationOnce(
|
|
407
|
+
(): Promise<any> => Promise.resolve(gppDataExample)
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
const data = await Usercentrics.getGPPData();
|
|
411
|
+
expect(data).toBe(gppDataExample);
|
|
412
|
+
})
|
|
413
|
+
|
|
414
|
+
test('testGetGPPString', async () => {
|
|
415
|
+
RNUsercentricsModule.getGPPString.mockImplementationOnce(
|
|
416
|
+
(): Promise<any> => Promise.resolve("DBABMA~CPXxRfA")
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
const data = await Usercentrics.getGPPString();
|
|
420
|
+
expect(data).toBe("DBABMA~CPXxRfA");
|
|
421
|
+
})
|
|
422
|
+
|
|
423
|
+
test('testSetGPPConsent', async () => {
|
|
424
|
+
await Usercentrics.setGPPConsent("usnat", "SaleOptOut", 2);
|
|
425
|
+
|
|
426
|
+
const call = RNUsercentricsModule.setGPPConsent.mock.calls[0];
|
|
427
|
+
expect(call[0]).toBe("usnat");
|
|
428
|
+
expect(call[1]).toBe("SaleOptOut");
|
|
429
|
+
expect(call[2]).toEqual({ value: 2 });
|
|
430
|
+
})
|
|
431
|
+
|
|
398
432
|
test('testTrack', async () => {
|
|
399
433
|
await Usercentrics.track(UsercentricsAnalyticsEventType.acceptAllFirstLayer);
|
|
400
434
|
let spy = jest.spyOn(RNUsercentricsModule, "track")
|
|
@@ -422,6 +456,37 @@ describe('Test Usercentrics Module', () => {
|
|
|
422
456
|
expect(data).toStrictEqual(response)
|
|
423
457
|
})
|
|
424
458
|
|
|
459
|
+
test('testGetDpsMetadataWithValidData', async () => {
|
|
460
|
+
const metadata = { partner: "appsflyer", source: "campaign_1" };
|
|
461
|
+
RNUsercentricsModule.getDpsMetadata.mockImplementationOnce(
|
|
462
|
+
(): Promise<any> => Promise.resolve(metadata)
|
|
463
|
+
)
|
|
464
|
+
|
|
465
|
+
const data = await Usercentrics.getDpsMetadata("templateId123");
|
|
466
|
+
expect(data).toStrictEqual(metadata);
|
|
467
|
+
|
|
468
|
+
const call = RNUsercentricsModule.getDpsMetadata.mock.calls[0][0];
|
|
469
|
+
expect(call).toBe("templateId123");
|
|
470
|
+
})
|
|
471
|
+
|
|
472
|
+
test('testGetDpsMetadataWhenNull', async () => {
|
|
473
|
+
RNUsercentricsModule.getDpsMetadata.mockImplementationOnce(
|
|
474
|
+
(): Promise<any> => Promise.resolve(null)
|
|
475
|
+
)
|
|
476
|
+
|
|
477
|
+
const data = await Usercentrics.getDpsMetadata("nonExistentId");
|
|
478
|
+
expect(data).toBe(null);
|
|
479
|
+
})
|
|
480
|
+
|
|
481
|
+
test('testGetDpsMetadataWithEmptyObject', async () => {
|
|
482
|
+
RNUsercentricsModule.getDpsMetadata.mockImplementationOnce(
|
|
483
|
+
(): Promise<any> => Promise.resolve({})
|
|
484
|
+
)
|
|
485
|
+
|
|
486
|
+
const data = await Usercentrics.getDpsMetadata("templateId123");
|
|
487
|
+
expect(data).toStrictEqual({});
|
|
488
|
+
})
|
|
489
|
+
|
|
425
490
|
test('testClearUserSession', async () => {
|
|
426
491
|
const readyStatus = new UsercentricsReadyStatus(
|
|
427
492
|
true,
|
package/src/__tests__/mocks.ts
CHANGED
|
@@ -45,6 +45,22 @@ export const ccpaDataExample = {
|
|
|
45
45
|
noticeGiven: false
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
export const gppDataExample = {
|
|
49
|
+
gppString: "DBABMA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA",
|
|
50
|
+
applicableSections: [7],
|
|
51
|
+
sections: {
|
|
52
|
+
usnat: {
|
|
53
|
+
Version: 1,
|
|
54
|
+
SharingNotice: 2,
|
|
55
|
+
SaleOptOut: 2
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const gppSectionChangePayloadExample = {
|
|
61
|
+
data: "usnat"
|
|
62
|
+
}
|
|
63
|
+
|
|
48
64
|
const ucLabels: UsercentricsLabels = {
|
|
49
65
|
btnAcceptAll: "btnAcceptAll",
|
|
50
66
|
btnDeny: "btnDeny",
|
|
@@ -196,7 +212,7 @@ const tcf2Settings: TCF2Settings = {
|
|
|
196
212
|
disabledSpecialFeatures: [1],
|
|
197
213
|
firstLayerShowDescriptions: true,
|
|
198
214
|
hideNonIabOnFirstLayer: true,
|
|
199
|
-
|
|
215
|
+
resurfacePeriod: 1,
|
|
200
216
|
resurfacePurposeChanged: true,
|
|
201
217
|
resurfaceVendorAdded: true,
|
|
202
218
|
firstLayerDescription: "firstLayerDescription",
|
|
@@ -22,18 +22,22 @@ export interface Spec extends TurboModule {
|
|
|
22
22
|
getTCFData(): Promise<Object>;
|
|
23
23
|
getUserSessionData(): Promise<string>;
|
|
24
24
|
getUSPData(): Promise<Object>;
|
|
25
|
+
getGPPData(): Promise<Object>;
|
|
26
|
+
getGPPString(): Promise<string | null>;
|
|
25
27
|
getABTestingVariant(): Promise<string>;
|
|
28
|
+
getDpsMetadata(templateId: string): Promise<Object | null>;
|
|
26
29
|
|
|
27
30
|
// Configuration Setters
|
|
28
31
|
setCMPId(id: number): void;
|
|
29
32
|
setABTestingVariant(variant: string): void;
|
|
33
|
+
setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
|
|
30
34
|
changeLanguage(language: string): Promise<void>;
|
|
31
35
|
|
|
32
36
|
// Consent Actions
|
|
33
37
|
acceptAll(consentType: number): Promise<Array<Object>>;
|
|
34
38
|
acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<Object>>;
|
|
35
39
|
denyAll(consentType: number): Promise<Array<Object>>;
|
|
36
|
-
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>): Promise<Array<Object>>;
|
|
40
|
+
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>, unsavedVendorLIDecisions: Array<Object>): Promise<Array<Object>>;
|
|
37
41
|
|
|
38
42
|
saveDecisions(decisions: Array<Object>, consentType: number): Promise<Array<Object>>;
|
|
39
43
|
saveDecisionsForTCF(
|
|
@@ -46,6 +50,9 @@ export interface Spec extends TurboModule {
|
|
|
46
50
|
|
|
47
51
|
// Analytics
|
|
48
52
|
track(event: number): void;
|
|
53
|
+
|
|
54
|
+
addListener(eventName: string): void;
|
|
55
|
+
removeListeners(count: number): void;
|
|
49
56
|
}
|
|
50
57
|
|
|
51
58
|
export default TurboModuleRegistry.get<Spec>('RNUsercentricsModule');
|
|
@@ -14,6 +14,8 @@ export class CCPASettings {
|
|
|
14
14
|
secondLayerDescription: string
|
|
15
15
|
secondLayerHideLanguageSwitch: boolean
|
|
16
16
|
btnMoreInfo: string
|
|
17
|
+
mspaCoveredTransaction?: boolean
|
|
18
|
+
mspaMode?: number
|
|
17
19
|
|
|
18
20
|
constructor(
|
|
19
21
|
optOutNoticeLabel: string,
|
|
@@ -29,7 +31,9 @@ export class CCPASettings {
|
|
|
29
31
|
secondLayerTitle: string,
|
|
30
32
|
secondLayerDescription: string,
|
|
31
33
|
secondLayerHideLanguageSwitch: boolean,
|
|
32
|
-
btnMoreInfo: string
|
|
34
|
+
btnMoreInfo: string,
|
|
35
|
+
mspaCoveredTransaction?: boolean,
|
|
36
|
+
mspaMode?: number
|
|
33
37
|
) {
|
|
34
38
|
this.optOutNoticeLabel = optOutNoticeLabel
|
|
35
39
|
this.btnSave = btnSave
|
|
@@ -45,5 +49,7 @@ export class CCPASettings {
|
|
|
45
49
|
this.secondLayerDescription = secondLayerDescription
|
|
46
50
|
this.secondLayerHideLanguageSwitch = secondLayerHideLanguageSwitch
|
|
47
51
|
this.btnMoreInfo = btnMoreInfo
|
|
52
|
+
this.mspaCoveredTransaction = mspaCoveredTransaction
|
|
53
|
+
this.mspaMode = mspaMode
|
|
48
54
|
}
|
|
49
55
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class GppData {
|
|
2
|
+
gppString: string
|
|
3
|
+
applicableSections: number[]
|
|
4
|
+
sections: Record<string, Record<string, unknown>>
|
|
5
|
+
|
|
6
|
+
constructor(
|
|
7
|
+
gppString: string,
|
|
8
|
+
applicableSections: number[],
|
|
9
|
+
sections: Record<string, Record<string, unknown>>
|
|
10
|
+
) {
|
|
11
|
+
this.gppString = gppString
|
|
12
|
+
this.applicableSections = applicableSections
|
|
13
|
+
this.sections = sections
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -35,7 +35,7 @@ export class TCF2Settings {
|
|
|
35
35
|
disabledSpecialFeatures: [number]
|
|
36
36
|
firstLayerShowDescriptions: boolean
|
|
37
37
|
hideNonIabOnFirstLayer: boolean
|
|
38
|
-
|
|
38
|
+
resurfacePeriod: number
|
|
39
39
|
resurfacePurposeChanged: boolean
|
|
40
40
|
resurfaceVendorAdded: boolean
|
|
41
41
|
firstLayerDescription: string
|
|
@@ -95,7 +95,7 @@ export class TCF2Settings {
|
|
|
95
95
|
disabledSpecialFeatures: [number],
|
|
96
96
|
firstLayerShowDescriptions: boolean,
|
|
97
97
|
hideNonIabOnFirstLayer: boolean,
|
|
98
|
-
|
|
98
|
+
resurfacePeriod: number,
|
|
99
99
|
resurfacePurposeChanged: boolean,
|
|
100
100
|
resurfaceVendorAdded: boolean,
|
|
101
101
|
firstLayerDescription: string,
|
|
@@ -156,7 +156,7 @@ export class TCF2Settings {
|
|
|
156
156
|
this.disabledSpecialFeatures = disabledSpecialFeatures
|
|
157
157
|
this.firstLayerShowDescriptions = firstLayerShowDescriptions
|
|
158
158
|
this.hideNonIabOnFirstLayer = hideNonIabOnFirstLayer
|
|
159
|
-
this.
|
|
159
|
+
this.resurfacePeriod = resurfacePeriod
|
|
160
160
|
this.resurfacePurposeChanged = resurfacePurposeChanged
|
|
161
161
|
this.resurfaceVendorAdded = resurfaceVendorAdded
|
|
162
162
|
this.firstLayerDescription = firstLayerDescription
|