@redacto.io/consent-sdk-react 3.2.0 → 3.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.
- package/CHANGELOG.md +12 -0
- package/README.md +11 -0
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +423 -136
- package/dist/index.mjs +423 -136
- package/package.json +1 -1
- package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +123 -1
- package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +936 -671
- package/src/RedactoNoticeConsent/api/index.ts +67 -53
- package/src/RedactoNoticeConsent/api/types.ts +67 -13
- package/src/RedactoNoticeConsent/constants.ts +20 -0
- package/src/RedactoNoticeConsent/styles.ts +3 -6
- package/src/RedactoNoticeConsent/types.ts +11 -5
- package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +30 -26
- package/src/RedactoNoticeConsentInline/api/index.ts +65 -27
- package/src/RedactoNoticeConsentInline/api/types.ts +28 -11
- package/src/RedactoNoticeConsentInline/types.ts +9 -4
- package/src/types/react-jsx.d.ts +26 -0
- package/src/utils/isLegacyApi.ts +12 -0
- package/tests/mocks.ts +53 -7
- package/tsconfig.json +1 -5
package/dist/index.js
CHANGED
|
@@ -30,6 +30,21 @@ var import_react2 = require("react");
|
|
|
30
30
|
|
|
31
31
|
// src/RedactoNoticeConsent/api/index.ts
|
|
32
32
|
var import_jwt_decode = require("jwt-decode");
|
|
33
|
+
|
|
34
|
+
// src/utils/isLegacyApi.ts
|
|
35
|
+
function isLegacyApi(baseUrl) {
|
|
36
|
+
try {
|
|
37
|
+
return new URL(baseUrl).hostname.endsWith(".redacto.io");
|
|
38
|
+
} catch {
|
|
39
|
+
try {
|
|
40
|
+
return new URL(`https://${baseUrl}`).hostname.endsWith(".redacto.io");
|
|
41
|
+
} catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// src/RedactoNoticeConsent/api/index.ts
|
|
33
48
|
var BASE_URL = "https://api.redacto.io/consent";
|
|
34
49
|
var apiCache = /* @__PURE__ */ new Map();
|
|
35
50
|
var CACHE_TTL = 5 * 60 * 1e3;
|
|
@@ -54,14 +69,6 @@ function decodeTokenSafely(token) {
|
|
|
54
69
|
return null;
|
|
55
70
|
}
|
|
56
71
|
}
|
|
57
|
-
var storage = {
|
|
58
|
-
getItem: (key) => {
|
|
59
|
-
if (typeof window !== "undefined") {
|
|
60
|
-
return localStorage.getItem(key);
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
72
|
var clearApiCache = () => {
|
|
66
73
|
apiCache.clear();
|
|
67
74
|
};
|
|
@@ -72,6 +79,7 @@ var fetchConsentContent = async ({
|
|
|
72
79
|
language = "en",
|
|
73
80
|
specific_uuid,
|
|
74
81
|
validate_against = "all",
|
|
82
|
+
include_fully_consented_data = false,
|
|
75
83
|
signal
|
|
76
84
|
// AbortSignal for request cancellation
|
|
77
85
|
}) => {
|
|
@@ -88,7 +96,7 @@ var fetchConsentContent = async ({
|
|
|
88
96
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
89
97
|
}
|
|
90
98
|
const apiBaseUrl = baseUrl || BASE_URL;
|
|
91
|
-
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}`;
|
|
99
|
+
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}-${include_fully_consented_data}`;
|
|
92
100
|
if (validate_against === "all" && !specific_uuid) {
|
|
93
101
|
const cachedData = getCachedData(cacheKey);
|
|
94
102
|
if (cachedData) {
|
|
@@ -102,6 +110,9 @@ var fetchConsentContent = async ({
|
|
|
102
110
|
url.searchParams.append("specific_uuid", specific_uuid);
|
|
103
111
|
}
|
|
104
112
|
url.searchParams.append("validate_against", validate_against);
|
|
113
|
+
if (include_fully_consented_data) {
|
|
114
|
+
url.searchParams.append("include_fully_consented_data", "true");
|
|
115
|
+
}
|
|
105
116
|
const response = await fetch(url.toString(), {
|
|
106
117
|
method: "GET",
|
|
107
118
|
headers: {
|
|
@@ -135,7 +146,6 @@ var fetchConsentContent = async ({
|
|
|
135
146
|
}
|
|
136
147
|
return data;
|
|
137
148
|
} catch (error) {
|
|
138
|
-
console.error("Error fetching consent content:", error instanceof Error ? error.message : error);
|
|
139
149
|
throw error;
|
|
140
150
|
}
|
|
141
151
|
};
|
|
@@ -161,42 +171,62 @@ var submitConsentEvent = async ({
|
|
|
161
171
|
if (!ORGANISATION_UUID || !WORKSPACE_UUID) {
|
|
162
172
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
163
173
|
}
|
|
164
|
-
const primaryEmail = storage.getItem("userEmail");
|
|
165
|
-
const validatedPurposes = purposes.map((purpose) => {
|
|
166
|
-
if (!purpose.uuid || !purpose.name) {
|
|
167
|
-
throw new Error(`Invalid purpose data: missing uuid or name`);
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
uuid: purpose.uuid,
|
|
171
|
-
name: purpose.name,
|
|
172
|
-
description: purpose.description || "",
|
|
173
|
-
industries: purpose.industries || "",
|
|
174
|
-
selected: Boolean(purpose.selected),
|
|
175
|
-
data_elements: (purpose.data_elements || []).map((element) => {
|
|
176
|
-
if (!element.uuid || !element.name) {
|
|
177
|
-
throw new Error(`Invalid data element: missing uuid or name`);
|
|
178
|
-
}
|
|
179
|
-
return {
|
|
180
|
-
uuid: element.uuid,
|
|
181
|
-
name: element.name,
|
|
182
|
-
enabled: Boolean(element.enabled),
|
|
183
|
-
required: Boolean(element.required),
|
|
184
|
-
selected: element.required ? true : Boolean(element.selected)
|
|
185
|
-
};
|
|
186
|
-
})
|
|
187
|
-
};
|
|
188
|
-
});
|
|
189
|
-
const payload = {
|
|
190
|
-
primary_email: primaryEmail || void 0,
|
|
191
|
-
notice_uuid: noticeUuid,
|
|
192
|
-
source: "WEB",
|
|
193
|
-
declined: Boolean(declined),
|
|
194
|
-
consents: {
|
|
195
|
-
purposes: validatedPurposes
|
|
196
|
-
},
|
|
197
|
-
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
198
|
-
};
|
|
199
174
|
const apiBaseUrl = baseUrl || BASE_URL;
|
|
175
|
+
let payload;
|
|
176
|
+
if (isLegacyApi(apiBaseUrl)) {
|
|
177
|
+
const primaryEmail = typeof window !== "undefined" ? localStorage.getItem("userEmail") : null;
|
|
178
|
+
payload = {
|
|
179
|
+
primary_email: primaryEmail || void 0,
|
|
180
|
+
notice_uuid: noticeUuid,
|
|
181
|
+
source: "WEB",
|
|
182
|
+
declined: Boolean(declined),
|
|
183
|
+
consents: {
|
|
184
|
+
purposes: purposes.map((purpose) => {
|
|
185
|
+
if (!purpose.uuid) {
|
|
186
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
uuid: purpose.uuid,
|
|
190
|
+
name: purpose.name,
|
|
191
|
+
description: purpose.description || "",
|
|
192
|
+
industries: purpose.industries || "",
|
|
193
|
+
selected: Boolean(purpose.selected),
|
|
194
|
+
data_elements: (purpose.data_elements || []).map((element) => ({
|
|
195
|
+
uuid: element.uuid,
|
|
196
|
+
name: element.name,
|
|
197
|
+
enabled: Boolean(element.enabled),
|
|
198
|
+
required: Boolean(element.required),
|
|
199
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
200
|
+
}))
|
|
201
|
+
};
|
|
202
|
+
})
|
|
203
|
+
},
|
|
204
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
205
|
+
};
|
|
206
|
+
} else {
|
|
207
|
+
const validatedPurposes = purposes.map((purpose) => {
|
|
208
|
+
if (!purpose.uuid) {
|
|
209
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
210
|
+
}
|
|
211
|
+
const dataElements = (purpose.data_elements || []).filter((element) => element.enabled).map((element) => ({
|
|
212
|
+
uuid: element.uuid,
|
|
213
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
214
|
+
}));
|
|
215
|
+
return {
|
|
216
|
+
purpose_uuid: purpose.uuid,
|
|
217
|
+
selected: Boolean(purpose.selected),
|
|
218
|
+
data_elements: dataElements.length > 0 ? dataElements : void 0
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
payload = {
|
|
222
|
+
notice_uuid: noticeUuid,
|
|
223
|
+
purposes: validatedPurposes,
|
|
224
|
+
select_all_mandatory: false,
|
|
225
|
+
source: "WEB",
|
|
226
|
+
declined: Boolean(declined),
|
|
227
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
228
|
+
};
|
|
229
|
+
}
|
|
200
230
|
const response = await fetch(
|
|
201
231
|
`${apiBaseUrl}/public/organisations/${ORGANISATION_UUID}/workspaces/${WORKSPACE_UUID}/submit-consent`,
|
|
202
232
|
{
|
|
@@ -229,7 +259,6 @@ var submitConsentEvent = async ({
|
|
|
229
259
|
}
|
|
230
260
|
apiCache.clear();
|
|
231
261
|
} catch (error) {
|
|
232
|
-
console.error("Error submitting consent event:", error instanceof Error ? error.message : error);
|
|
233
262
|
throw error;
|
|
234
263
|
}
|
|
235
264
|
};
|
|
@@ -361,7 +390,6 @@ var fetchTTSAudioUrls = async ({
|
|
|
361
390
|
const data = await response.json();
|
|
362
391
|
return data;
|
|
363
392
|
} catch (error) {
|
|
364
|
-
console.error("Error fetching TTS audio URLs:", error instanceof Error ? error.message : error);
|
|
365
393
|
throw error;
|
|
366
394
|
}
|
|
367
395
|
};
|
|
@@ -369,6 +397,18 @@ var fetchTTSAudioUrls = async ({
|
|
|
369
397
|
// src/RedactoNoticeConsent/assets/redacto-logo.png
|
|
370
398
|
var redacto_logo_default = "data:image/png;base64,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";
|
|
371
399
|
|
|
400
|
+
// src/RedactoNoticeConsent/constants.ts
|
|
401
|
+
var DPO_AUDIO_ELEMENT_MAP = [
|
|
402
|
+
{ audioKey: "grievance_text_audio_url", elementId: "dpo-grievance-text" },
|
|
403
|
+
{ audioKey: "grievance_anchor_text_audio_url", elementId: "dpo-grievance-link" },
|
|
404
|
+
{ audioKey: "grievance_email_connector_text_audio_url", elementId: "dpo-grievance-email-connector" },
|
|
405
|
+
{ audioKey: "grievance_email_audio_url", elementId: "dpo-grievance-email" },
|
|
406
|
+
{ audioKey: "dp_board_text_audio_url", elementId: "dpo-dp-board-text" },
|
|
407
|
+
{ audioKey: "dp_board_anchor_text_audio_url", elementId: "dpo-dp-board-link" },
|
|
408
|
+
{ audioKey: "dpo_text_audio_url", elementId: "dpo-dpo-text" },
|
|
409
|
+
{ audioKey: "dpo_anchor_text_audio_url", elementId: "dpo-dpo-link" }
|
|
410
|
+
];
|
|
411
|
+
|
|
372
412
|
// src/RedactoNoticeConsent/injectStyles.ts
|
|
373
413
|
var stylesInjected = false;
|
|
374
414
|
var injectCheckboxStyles = () => {
|
|
@@ -558,8 +598,7 @@ var styles = {
|
|
|
558
598
|
justifyContent: "space-between",
|
|
559
599
|
alignItems: "center",
|
|
560
600
|
paddingBottom: "15px",
|
|
561
|
-
borderBottom: "
|
|
562
|
-
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.03)",
|
|
601
|
+
borderBottom: "none",
|
|
563
602
|
backgroundColor: "#ffffff",
|
|
564
603
|
margin: 0,
|
|
565
604
|
boxSizing: "border-box",
|
|
@@ -613,7 +652,7 @@ var styles = {
|
|
|
613
652
|
backgroundColor: "#ffffff"
|
|
614
653
|
},
|
|
615
654
|
middleSection: {
|
|
616
|
-
margin: "
|
|
655
|
+
margin: "0px",
|
|
617
656
|
display: "flex",
|
|
618
657
|
flexDirection: "column",
|
|
619
658
|
gap: "12px",
|
|
@@ -628,7 +667,6 @@ var styles = {
|
|
|
628
667
|
fontSize: "16px",
|
|
629
668
|
fontWeight: 400,
|
|
630
669
|
lineHeight: "150%",
|
|
631
|
-
letterSpacing: "0.2px",
|
|
632
670
|
color: "#344054",
|
|
633
671
|
margin: 0,
|
|
634
672
|
padding: 0,
|
|
@@ -768,8 +806,7 @@ var styles = {
|
|
|
768
806
|
justifyContent: "space-between",
|
|
769
807
|
gap: "29px",
|
|
770
808
|
paddingTop: "15px",
|
|
771
|
-
borderTop: "
|
|
772
|
-
boxShadow: "0 -1px 2px rgba(0, 0, 0, 0.03)",
|
|
809
|
+
borderTop: "none",
|
|
773
810
|
backgroundColor: "#ffffff",
|
|
774
811
|
margin: 0,
|
|
775
812
|
boxSizing: "border-box"
|
|
@@ -1117,9 +1154,8 @@ var PurposeItem = ({
|
|
|
1117
1154
|
),
|
|
1118
1155
|
isAlreadyConsented && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: (() => {
|
|
1119
1156
|
const combinedId = `${purpose.uuid}-${dataElement.uuid}`;
|
|
1120
|
-
const isCurrentlySelected = selectedDataElements[combinedId] || false;
|
|
1121
1157
|
const wasOriginallySelected = initialDataElementSelections[combinedId] || false;
|
|
1122
|
-
if (
|
|
1158
|
+
if (wasOriginallySelected) {
|
|
1123
1159
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1124
1160
|
"div",
|
|
1125
1161
|
{
|
|
@@ -1132,7 +1168,7 @@ var PurposeItem = ({
|
|
|
1132
1168
|
borderRadius: "50%",
|
|
1133
1169
|
backgroundColor: "#10B981"
|
|
1134
1170
|
},
|
|
1135
|
-
"aria-label": `
|
|
1171
|
+
"aria-label": `Consented to ${getTranslatedText(
|
|
1136
1172
|
`data_elements.name`,
|
|
1137
1173
|
dataElement.name,
|
|
1138
1174
|
dataElement.uuid
|
|
@@ -1162,17 +1198,23 @@ var PurposeItem = ({
|
|
|
1162
1198
|
);
|
|
1163
1199
|
} else {
|
|
1164
1200
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1165
|
-
"
|
|
1201
|
+
"div",
|
|
1166
1202
|
{
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1203
|
+
style: {
|
|
1204
|
+
display: "flex",
|
|
1205
|
+
alignItems: "center",
|
|
1206
|
+
justifyContent: "center",
|
|
1207
|
+
width: "16px",
|
|
1208
|
+
height: "16px",
|
|
1209
|
+
borderRadius: "50%",
|
|
1210
|
+
border: "2px solid #d0d5dd",
|
|
1211
|
+
backgroundColor: "transparent"
|
|
1212
|
+
},
|
|
1213
|
+
"aria-label": `Not consented to ${getTranslatedText(
|
|
1172
1214
|
`data_elements.name`,
|
|
1173
1215
|
dataElement.name,
|
|
1174
1216
|
dataElement.uuid
|
|
1175
|
-
)}
|
|
1217
|
+
)}`
|
|
1176
1218
|
}
|
|
1177
1219
|
);
|
|
1178
1220
|
}
|
|
@@ -1582,7 +1624,9 @@ var RedactoNoticeConsent = ({
|
|
|
1582
1624
|
onError,
|
|
1583
1625
|
settings,
|
|
1584
1626
|
applicationId,
|
|
1585
|
-
validateAgainst = "all"
|
|
1627
|
+
validateAgainst = "all",
|
|
1628
|
+
includeFullyConsentedData = false,
|
|
1629
|
+
reviewModeButtonText = "Continue"
|
|
1586
1630
|
}) => {
|
|
1587
1631
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
1588
1632
|
const propValidationError = (0, import_react2.useMemo)(() => {
|
|
@@ -1624,6 +1668,7 @@ var RedactoNoticeConsent = ({
|
|
|
1624
1668
|
const [initialDataElementSelections, setInitialDataElementSelections] = (0, import_react2.useState)({});
|
|
1625
1669
|
const [collapsedPurposes, setCollapsedPurposes] = (0, import_react2.useState)({});
|
|
1626
1670
|
const [hasAlreadyConsented, setHasAlreadyConsented] = (0, import_react2.useState)(false);
|
|
1671
|
+
const [isFullyConsentedReviewMode, setIsFullyConsentedReviewMode] = (0, import_react2.useState)(false);
|
|
1627
1672
|
const [isLanguageDropdownOpen, setIsLanguageDropdownOpen] = (0, import_react2.useState)(false);
|
|
1628
1673
|
const [selectedLanguage, setSelectedLanguage] = (0, import_react2.useState)(language);
|
|
1629
1674
|
const [errorMessage, setErrorMessage] = (0, import_react2.useState)(null);
|
|
@@ -1785,10 +1830,15 @@ var RedactoNoticeConsent = ({
|
|
|
1785
1830
|
onAccept == null ? void 0 : onAccept();
|
|
1786
1831
|
}
|
|
1787
1832
|
}, [hasAlreadyConsented, onAccept]);
|
|
1833
|
+
const isDefaultLanguage = (lang) => {
|
|
1834
|
+
if (!content) return true;
|
|
1835
|
+
if (lang === "English" || lang === "en" || lang === "EN") return true;
|
|
1836
|
+
return false;
|
|
1837
|
+
};
|
|
1788
1838
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
1789
1839
|
var _a2, _b2;
|
|
1790
1840
|
if (!content) return defaultText;
|
|
1791
|
-
if (selectedLanguage
|
|
1841
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1792
1842
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
1793
1843
|
return content.privacy_policy_anchor_text;
|
|
1794
1844
|
}
|
|
@@ -1815,18 +1865,38 @@ var RedactoNoticeConsent = ({
|
|
|
1815
1865
|
}
|
|
1816
1866
|
if (itemId) {
|
|
1817
1867
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
1818
|
-
|
|
1868
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
1869
|
+
if (purposeData) {
|
|
1870
|
+
if (typeof purposeData === "string") {
|
|
1871
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
1872
|
+
}
|
|
1873
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
1874
|
+
}
|
|
1875
|
+
return defaultText;
|
|
1819
1876
|
}
|
|
1820
1877
|
if (key.startsWith("data_elements.")) {
|
|
1821
1878
|
return ((_b2 = translationMap.data_elements) == null ? void 0 : _b2[itemId]) || defaultText;
|
|
1822
1879
|
}
|
|
1823
1880
|
}
|
|
1824
1881
|
const value = translationMap[key];
|
|
1825
|
-
if (typeof value === "string") {
|
|
1882
|
+
if (typeof value === "string" && value) {
|
|
1826
1883
|
return value;
|
|
1827
1884
|
}
|
|
1828
1885
|
return defaultText;
|
|
1829
1886
|
};
|
|
1887
|
+
const getTranslatedDpoText = (key, defaultText) => {
|
|
1888
|
+
if (!(content == null ? void 0 : content.dpo_info)) return defaultText;
|
|
1889
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1890
|
+
return content.dpo_info[key] || defaultText;
|
|
1891
|
+
}
|
|
1892
|
+
if (!content.supported_languages_and_translations) return defaultText;
|
|
1893
|
+
const translationMap = content.supported_languages_and_translations[selectedLanguage];
|
|
1894
|
+
if (translationMap == null ? void 0 : translationMap.dpo_info) {
|
|
1895
|
+
const translated = translationMap.dpo_info[key];
|
|
1896
|
+
if (translated) return translated;
|
|
1897
|
+
}
|
|
1898
|
+
return content.dpo_info[key] || defaultText;
|
|
1899
|
+
};
|
|
1830
1900
|
const fetchNotice = async () => {
|
|
1831
1901
|
var _a2;
|
|
1832
1902
|
if (isRequestInProgressRef.current) {
|
|
@@ -1850,16 +1920,18 @@ var RedactoNoticeConsent = ({
|
|
|
1850
1920
|
language,
|
|
1851
1921
|
specific_uuid: applicationId,
|
|
1852
1922
|
validate_against: validateAgainst,
|
|
1923
|
+
include_fully_consented_data: includeFullyConsentedData,
|
|
1853
1924
|
signal: (_a2 = abortControllerRef.current) == null ? void 0 : _a2.signal
|
|
1854
1925
|
});
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1926
|
+
const activeConfig = consentContentData.detail.active_config;
|
|
1927
|
+
setContent(activeConfig);
|
|
1928
|
+
if (activeConfig.default_language) {
|
|
1929
|
+
const defaultLang = activeConfig.default_language;
|
|
1858
1930
|
setSelectedLanguage(
|
|
1859
1931
|
defaultLang === "en" || defaultLang === "EN" ? "English" : defaultLang
|
|
1860
1932
|
);
|
|
1861
1933
|
}
|
|
1862
|
-
const initialCollapsedState =
|
|
1934
|
+
const initialCollapsedState = activeConfig.purposes.reduce(
|
|
1863
1935
|
(acc, purpose) => ({
|
|
1864
1936
|
...acc,
|
|
1865
1937
|
[purpose.uuid]: true
|
|
@@ -1870,13 +1942,13 @@ var RedactoNoticeConsent = ({
|
|
|
1870
1942
|
const isReconsentRequired = consentContentData.detail.reconsent_required;
|
|
1871
1943
|
const purposeSelections = consentContentData.detail.purpose_selections;
|
|
1872
1944
|
const newCategorizedPurposes = isReconsentRequired ? {
|
|
1873
|
-
alreadyConsented:
|
|
1945
|
+
alreadyConsented: activeConfig.purposes.filter(
|
|
1874
1946
|
(purpose) => {
|
|
1875
1947
|
const selection = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid];
|
|
1876
1948
|
return selection && (selection.status === "ACTIVE" || selection.status === "EXPIRED") && !selection.needs_reconsent;
|
|
1877
1949
|
}
|
|
1878
1950
|
),
|
|
1879
|
-
needsConsent:
|
|
1951
|
+
needsConsent: activeConfig.purposes.filter(
|
|
1880
1952
|
(purpose) => {
|
|
1881
1953
|
const selection = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid];
|
|
1882
1954
|
return !selection || selection.status !== "ACTIVE" || selection.needs_reconsent;
|
|
@@ -1884,9 +1956,9 @@ var RedactoNoticeConsent = ({
|
|
|
1884
1956
|
)
|
|
1885
1957
|
} : null;
|
|
1886
1958
|
setCategorizedPurposes(newCategorizedPurposes);
|
|
1887
|
-
const initialPurposeState =
|
|
1959
|
+
const initialPurposeState = activeConfig.purposes.reduce(
|
|
1888
1960
|
(acc, purpose) => {
|
|
1889
|
-
if (
|
|
1961
|
+
if (purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) {
|
|
1890
1962
|
acc[purpose.uuid] = purposeSelections[purpose.uuid].selected;
|
|
1891
1963
|
} else {
|
|
1892
1964
|
acc[purpose.uuid] = false;
|
|
@@ -1896,12 +1968,12 @@ var RedactoNoticeConsent = ({
|
|
|
1896
1968
|
{}
|
|
1897
1969
|
);
|
|
1898
1970
|
setSelectedPurposes(initialPurposeState);
|
|
1899
|
-
const initialDataElementState =
|
|
1971
|
+
const initialDataElementState = activeConfig.purposes.reduce(
|
|
1900
1972
|
(acc, purpose) => {
|
|
1901
1973
|
purpose.data_elements.forEach((element) => {
|
|
1902
1974
|
var _a3, _b2;
|
|
1903
1975
|
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
1904
|
-
if (
|
|
1976
|
+
if ((_b2 = (_a3 = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
1905
1977
|
acc[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
1906
1978
|
} else {
|
|
1907
1979
|
acc[combinedId] = false;
|
|
@@ -1913,6 +1985,7 @@ var RedactoNoticeConsent = ({
|
|
|
1913
1985
|
);
|
|
1914
1986
|
setSelectedDataElements(initialDataElementState);
|
|
1915
1987
|
if (isReconsentRequired && newCategorizedPurposes) {
|
|
1988
|
+
setIsFullyConsentedReviewMode(false);
|
|
1916
1989
|
const initialSelections = {};
|
|
1917
1990
|
newCategorizedPurposes.alreadyConsented.forEach((purpose) => {
|
|
1918
1991
|
purpose.data_elements.forEach((element) => {
|
|
@@ -1926,7 +1999,36 @@ var RedactoNoticeConsent = ({
|
|
|
1926
1999
|
});
|
|
1927
2000
|
});
|
|
1928
2001
|
setInitialDataElementSelections(initialSelections);
|
|
2002
|
+
} else if (includeFullyConsentedData && purposeSelections) {
|
|
2003
|
+
const allPurposesSelected = activeConfig.purposes.length > 0 && activeConfig.purposes.every(
|
|
2004
|
+
(p) => {
|
|
2005
|
+
var _a3;
|
|
2006
|
+
return ((_a3 = purposeSelections[p.uuid]) == null ? void 0 : _a3.selected) === true;
|
|
2007
|
+
}
|
|
2008
|
+
);
|
|
2009
|
+
setIsFullyConsentedReviewMode(allPurposesSelected);
|
|
2010
|
+
if (allPurposesSelected) {
|
|
2011
|
+
const initialSelections = {};
|
|
2012
|
+
activeConfig.purposes.forEach(
|
|
2013
|
+
(purpose) => {
|
|
2014
|
+
purpose.data_elements.forEach((element) => {
|
|
2015
|
+
var _a3, _b2;
|
|
2016
|
+
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
2017
|
+
if ((_b2 = (_a3 = purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
2018
|
+
initialSelections[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
2019
|
+
} else {
|
|
2020
|
+
initialSelections[combinedId] = false;
|
|
2021
|
+
}
|
|
2022
|
+
});
|
|
2023
|
+
}
|
|
2024
|
+
);
|
|
2025
|
+
setInitialDataElementSelections(initialSelections);
|
|
2026
|
+
} else {
|
|
2027
|
+
setIsFullyConsentedReviewMode(false);
|
|
2028
|
+
setInitialDataElementSelections({});
|
|
2029
|
+
}
|
|
1929
2030
|
} else {
|
|
2031
|
+
setIsFullyConsentedReviewMode(false);
|
|
1930
2032
|
setInitialDataElementSelections({});
|
|
1931
2033
|
}
|
|
1932
2034
|
if (consentContentData.detail.is_minor) {
|
|
@@ -1937,7 +2039,6 @@ var RedactoNoticeConsent = ({
|
|
|
1937
2039
|
if (err instanceof Error && err.name === "AbortError") {
|
|
1938
2040
|
return;
|
|
1939
2041
|
}
|
|
1940
|
-
console.error(err);
|
|
1941
2042
|
const error = err;
|
|
1942
2043
|
setFetchError(error);
|
|
1943
2044
|
if (error.status === 409) {
|
|
@@ -1959,7 +2060,8 @@ var RedactoNoticeConsent = ({
|
|
|
1959
2060
|
refreshToken,
|
|
1960
2061
|
language,
|
|
1961
2062
|
applicationId,
|
|
1962
|
-
validateAgainst
|
|
2063
|
+
validateAgainst,
|
|
2064
|
+
includeFullyConsentedData
|
|
1963
2065
|
// Removed onError and isRefreshingToken from dependencies to prevent duplicate API calls
|
|
1964
2066
|
// onError is only called on errors, not needed for initial data fetching
|
|
1965
2067
|
]);
|
|
@@ -2072,13 +2174,9 @@ var RedactoNoticeConsent = ({
|
|
|
2072
2174
|
if (error instanceof Error && error.name === "AbortError") {
|
|
2073
2175
|
return;
|
|
2074
2176
|
}
|
|
2075
|
-
console.error("Error submitting consent:", error);
|
|
2076
2177
|
const err = error;
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
"An error occurred while submitting your consent. Please try again later."
|
|
2080
|
-
);
|
|
2081
|
-
}
|
|
2178
|
+
const message = err.status === 500 ? "An error occurred while submitting your consent. Please try again later." : err.message || "Failed to submit consent. Please try again.";
|
|
2179
|
+
setErrorMessage(message);
|
|
2082
2180
|
onError == null ? void 0 : onError(error);
|
|
2083
2181
|
} finally {
|
|
2084
2182
|
setIsSubmittingAccept(false);
|
|
@@ -2243,6 +2341,20 @@ var RedactoNoticeConsent = ({
|
|
|
2243
2341
|
});
|
|
2244
2342
|
}
|
|
2245
2343
|
});
|
|
2344
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2345
|
+
sequence.push(ttsAudioUrls.additional_text_audio_url);
|
|
2346
|
+
}
|
|
2347
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2348
|
+
sequence.push(ttsAudioUrls.privacy_center_anchor_text_audio_url);
|
|
2349
|
+
}
|
|
2350
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2351
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2352
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey }) => {
|
|
2353
|
+
if (dpoAudio[audioKey]) {
|
|
2354
|
+
sequence.push(dpoAudio[audioKey]);
|
|
2355
|
+
}
|
|
2356
|
+
});
|
|
2357
|
+
}
|
|
2246
2358
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2247
2359
|
sequence.push(ttsAudioUrls.confirm_button_text_audio_url);
|
|
2248
2360
|
}
|
|
@@ -2290,6 +2402,20 @@ var RedactoNoticeConsent = ({
|
|
|
2290
2402
|
});
|
|
2291
2403
|
}
|
|
2292
2404
|
});
|
|
2405
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2406
|
+
elementIds.push("additional-text");
|
|
2407
|
+
}
|
|
2408
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2409
|
+
elementIds.push("privacy-center-link");
|
|
2410
|
+
}
|
|
2411
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2412
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2413
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey, elementId }) => {
|
|
2414
|
+
if (dpoAudio[audioKey]) {
|
|
2415
|
+
elementIds.push(elementId);
|
|
2416
|
+
}
|
|
2417
|
+
});
|
|
2418
|
+
}
|
|
2293
2419
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2294
2420
|
elementIds.push("confirm-button-text");
|
|
2295
2421
|
}
|
|
@@ -2460,7 +2586,6 @@ var RedactoNoticeConsent = ({
|
|
|
2460
2586
|
setIsTTSAvailable(true);
|
|
2461
2587
|
}).catch((error) => {
|
|
2462
2588
|
if (error instanceof Error && error.name !== "AbortError") {
|
|
2463
|
-
console.warn("Failed to fetch TTS audio URLs:", error.message);
|
|
2464
2589
|
setIsTTSAvailable(false);
|
|
2465
2590
|
setTtsAudioUrls(null);
|
|
2466
2591
|
}
|
|
@@ -3107,16 +3232,135 @@ var RedactoNoticeConsent = ({
|
|
|
3107
3232
|
onPurposeCollapse: togglePurposeCollapse,
|
|
3108
3233
|
onDataElementToggle: handleDataElementCheckboxChange,
|
|
3109
3234
|
getTranslatedText,
|
|
3110
|
-
isAlreadyConsented:
|
|
3111
|
-
selectedLanguage
|
|
3235
|
+
isAlreadyConsented: isFullyConsentedReviewMode,
|
|
3236
|
+
selectedLanguage,
|
|
3237
|
+
initialDataElementSelections
|
|
3112
3238
|
},
|
|
3113
3239
|
`${purpose.uuid}-${selectedLanguage}`
|
|
3114
3240
|
)) })
|
|
3241
|
+
),
|
|
3242
|
+
((content == null ? void 0 : content.privacy_center_url) || (content == null ? void 0 : content.dpo_info)) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3243
|
+
"div",
|
|
3244
|
+
{
|
|
3245
|
+
style: {
|
|
3246
|
+
...styles.privacyText,
|
|
3247
|
+
...responsiveStyles.privacyText,
|
|
3248
|
+
...componentTextStyle,
|
|
3249
|
+
fontSize: isMobile ? "13px" : "14px",
|
|
3250
|
+
lineHeight: "1.4",
|
|
3251
|
+
borderTop: "1px solid rgba(152, 162, 179, 0.3)",
|
|
3252
|
+
paddingTop: "12px",
|
|
3253
|
+
marginTop: "12px"
|
|
3254
|
+
},
|
|
3255
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { style: { margin: 0, opacity: 0.6 }, children: [
|
|
3256
|
+
content.privacy_center_url && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3257
|
+
content.additional_text && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "additional-text", children: getTranslatedText(
|
|
3258
|
+
"additional_text",
|
|
3259
|
+
content.additional_text
|
|
3260
|
+
) }),
|
|
3261
|
+
" ",
|
|
3262
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3263
|
+
"a",
|
|
3264
|
+
{
|
|
3265
|
+
id: "privacy-center-link",
|
|
3266
|
+
style: { ...styles.link, ...linkStyle },
|
|
3267
|
+
href: content.privacy_center_url,
|
|
3268
|
+
target: "_blank",
|
|
3269
|
+
rel: "noopener noreferrer",
|
|
3270
|
+
children: getTranslatedText(
|
|
3271
|
+
"privacy_center_anchor_text",
|
|
3272
|
+
content.privacy_center_anchor_text || "Privacy Center"
|
|
3273
|
+
)
|
|
3274
|
+
}
|
|
3275
|
+
),
|
|
3276
|
+
"."
|
|
3277
|
+
] }),
|
|
3278
|
+
content.dpo_info && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3279
|
+
content.privacy_center_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3280
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-grievance-text", children: getTranslatedDpoText(
|
|
3281
|
+
"grievance_text",
|
|
3282
|
+
content.dpo_info.grievance_text || ""
|
|
3283
|
+
) }),
|
|
3284
|
+
" ",
|
|
3285
|
+
content.dpo_info.grievance_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3286
|
+
"a",
|
|
3287
|
+
{
|
|
3288
|
+
id: "dpo-grievance-link",
|
|
3289
|
+
style: { ...styles.link, ...linkStyle },
|
|
3290
|
+
href: content.dpo_info.grievance_url,
|
|
3291
|
+
target: "_blank",
|
|
3292
|
+
rel: "noopener noreferrer",
|
|
3293
|
+
children: getTranslatedDpoText(
|
|
3294
|
+
"grievance_anchor_text",
|
|
3295
|
+
content.dpo_info.grievance_anchor_text || "click here"
|
|
3296
|
+
)
|
|
3297
|
+
}
|
|
3298
|
+
),
|
|
3299
|
+
content.dpo_info.grievance_email && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3300
|
+
" ",
|
|
3301
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
|
|
3302
|
+
"grievance_email_connector_text",
|
|
3303
|
+
content.dpo_info.grievance_email_connector_text || "or email to"
|
|
3304
|
+
) }),
|
|
3305
|
+
" ",
|
|
3306
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3307
|
+
"a",
|
|
3308
|
+
{
|
|
3309
|
+
id: "dpo-grievance-email",
|
|
3310
|
+
style: { ...styles.link, ...linkStyle },
|
|
3311
|
+
href: `mailto:${content.dpo_info.grievance_email}`,
|
|
3312
|
+
children: content.dpo_info.grievance_email
|
|
3313
|
+
}
|
|
3314
|
+
)
|
|
3315
|
+
] }),
|
|
3316
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3317
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText(
|
|
3318
|
+
"dp_board_text",
|
|
3319
|
+
content.dpo_info.dp_board_text || ""
|
|
3320
|
+
) }),
|
|
3321
|
+
" ",
|
|
3322
|
+
content.dpo_info.dp_board_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3323
|
+
"a",
|
|
3324
|
+
{
|
|
3325
|
+
id: "dpo-dp-board-link",
|
|
3326
|
+
style: { ...styles.link, ...linkStyle },
|
|
3327
|
+
href: content.dpo_info.dp_board_url,
|
|
3328
|
+
target: "_blank",
|
|
3329
|
+
rel: "noopener noreferrer",
|
|
3330
|
+
children: getTranslatedDpoText(
|
|
3331
|
+
"dp_board_anchor_text",
|
|
3332
|
+
content.dpo_info.dp_board_anchor_text || "here"
|
|
3333
|
+
)
|
|
3334
|
+
}
|
|
3335
|
+
),
|
|
3336
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3337
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-dpo-text", children: getTranslatedDpoText(
|
|
3338
|
+
"dpo_text",
|
|
3339
|
+
content.dpo_info.dpo_text || ""
|
|
3340
|
+
) }),
|
|
3341
|
+
" ",
|
|
3342
|
+
content.dpo_info.dpo_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3343
|
+
"a",
|
|
3344
|
+
{
|
|
3345
|
+
id: "dpo-dpo-link",
|
|
3346
|
+
style: { ...styles.link, ...linkStyle },
|
|
3347
|
+
href: content.dpo_info.dpo_url,
|
|
3348
|
+
target: "_blank",
|
|
3349
|
+
rel: "noopener noreferrer",
|
|
3350
|
+
children: getTranslatedDpoText(
|
|
3351
|
+
"dpo_anchor_text",
|
|
3352
|
+
content.dpo_info.dpo_anchor_text || "Click here"
|
|
3353
|
+
)
|
|
3354
|
+
}
|
|
3355
|
+
)
|
|
3356
|
+
] })
|
|
3357
|
+
] })
|
|
3358
|
+
}
|
|
3115
3359
|
)
|
|
3116
3360
|
]
|
|
3117
3361
|
}
|
|
3118
3362
|
),
|
|
3119
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
3363
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3120
3364
|
"div",
|
|
3121
3365
|
{
|
|
3122
3366
|
style: {
|
|
@@ -3124,7 +3368,22 @@ var RedactoNoticeConsent = ({
|
|
|
3124
3368
|
...responsiveStyles.bottomSection,
|
|
3125
3369
|
...sectionStyle
|
|
3126
3370
|
},
|
|
3127
|
-
children:
|
|
3371
|
+
children: isFullyConsentedReviewMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3372
|
+
"button",
|
|
3373
|
+
{
|
|
3374
|
+
ref: lastFocusableRef,
|
|
3375
|
+
id: "review-mode-continue-button",
|
|
3376
|
+
style: {
|
|
3377
|
+
...styles.button,
|
|
3378
|
+
...responsiveStyles.button,
|
|
3379
|
+
...styles.acceptButton,
|
|
3380
|
+
...acceptButtonStyle
|
|
3381
|
+
},
|
|
3382
|
+
onClick: () => onAccept == null ? void 0 : onAccept(),
|
|
3383
|
+
"aria-label": reviewModeButtonText,
|
|
3384
|
+
children: reviewModeButtonText
|
|
3385
|
+
}
|
|
3386
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3128
3387
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3129
3388
|
"button",
|
|
3130
3389
|
{
|
|
@@ -3172,7 +3431,7 @@ var RedactoNoticeConsent = ({
|
|
|
3172
3431
|
)
|
|
3173
3432
|
}
|
|
3174
3433
|
)
|
|
3175
|
-
]
|
|
3434
|
+
] })
|
|
3176
3435
|
}
|
|
3177
3436
|
)
|
|
3178
3437
|
] })
|
|
@@ -3226,7 +3485,6 @@ var fetchConsentContent2 = async ({
|
|
|
3226
3485
|
const data = await response.json();
|
|
3227
3486
|
return data;
|
|
3228
3487
|
} catch (error) {
|
|
3229
|
-
console.error("Error fetching consent content:", error);
|
|
3230
3488
|
throw error;
|
|
3231
3489
|
}
|
|
3232
3490
|
};
|
|
@@ -3242,31 +3500,61 @@ var submitConsentEvent2 = async ({
|
|
|
3242
3500
|
}) => {
|
|
3243
3501
|
var _a, _b;
|
|
3244
3502
|
try {
|
|
3245
|
-
const primaryEmail = localStorage.getItem("userEmail");
|
|
3246
|
-
const payload = {
|
|
3247
|
-
primary_email: primaryEmail || void 0,
|
|
3248
|
-
notice_uuid: noticeUuid,
|
|
3249
|
-
source: "WEB",
|
|
3250
|
-
declined,
|
|
3251
|
-
consents: {
|
|
3252
|
-
purposes: purposes.map((purpose) => ({
|
|
3253
|
-
uuid: purpose.uuid,
|
|
3254
|
-
name: purpose.name,
|
|
3255
|
-
description: purpose.description,
|
|
3256
|
-
industries: purpose.industries || "",
|
|
3257
|
-
selected: purpose.selected,
|
|
3258
|
-
data_elements: purpose.data_elements.map((element) => ({
|
|
3259
|
-
uuid: element.uuid,
|
|
3260
|
-
name: element.name,
|
|
3261
|
-
enabled: element.enabled,
|
|
3262
|
-
required: element.required,
|
|
3263
|
-
selected: element.required ? true : element.selected
|
|
3264
|
-
}))
|
|
3265
|
-
}))
|
|
3266
|
-
},
|
|
3267
|
-
meta_data
|
|
3268
|
-
};
|
|
3269
3503
|
const apiBaseUrl = baseUrl || BASE_URL2;
|
|
3504
|
+
let payload;
|
|
3505
|
+
if (isLegacyApi(apiBaseUrl)) {
|
|
3506
|
+
const primaryEmail = typeof window !== "undefined" ? localStorage.getItem("userEmail") : null;
|
|
3507
|
+
payload = {
|
|
3508
|
+
primary_email: primaryEmail || void 0,
|
|
3509
|
+
notice_uuid: noticeUuid,
|
|
3510
|
+
source: "WEB",
|
|
3511
|
+
declined: Boolean(declined),
|
|
3512
|
+
consents: {
|
|
3513
|
+
purposes: purposes.map((purpose) => {
|
|
3514
|
+
if (!purpose.uuid) {
|
|
3515
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
3516
|
+
}
|
|
3517
|
+
return {
|
|
3518
|
+
uuid: purpose.uuid,
|
|
3519
|
+
name: purpose.name,
|
|
3520
|
+
description: purpose.description || "",
|
|
3521
|
+
industries: purpose.industries || "",
|
|
3522
|
+
selected: Boolean(purpose.selected),
|
|
3523
|
+
data_elements: (purpose.data_elements || []).map((element) => ({
|
|
3524
|
+
uuid: element.uuid,
|
|
3525
|
+
name: element.name,
|
|
3526
|
+
enabled: Boolean(element.enabled),
|
|
3527
|
+
required: Boolean(element.required),
|
|
3528
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
3529
|
+
}))
|
|
3530
|
+
};
|
|
3531
|
+
})
|
|
3532
|
+
},
|
|
3533
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
3534
|
+
};
|
|
3535
|
+
} else {
|
|
3536
|
+
payload = {
|
|
3537
|
+
notice_uuid: noticeUuid,
|
|
3538
|
+
purposes: purposes.map((purpose) => {
|
|
3539
|
+
if (!purpose.uuid) {
|
|
3540
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
3541
|
+
}
|
|
3542
|
+
const dataElements = purpose.data_elements.filter((element) => element.enabled).map((element) => ({
|
|
3543
|
+
uuid: element.uuid,
|
|
3544
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
3545
|
+
}));
|
|
3546
|
+
return {
|
|
3547
|
+
purpose_uuid: purpose.uuid,
|
|
3548
|
+
selected: Boolean(purpose.selected),
|
|
3549
|
+
data_elements: dataElements.length > 0 ? dataElements : void 0
|
|
3550
|
+
};
|
|
3551
|
+
}),
|
|
3552
|
+
select_all_mandatory: false,
|
|
3553
|
+
source: "WEB",
|
|
3554
|
+
declined,
|
|
3555
|
+
meta_data
|
|
3556
|
+
};
|
|
3557
|
+
}
|
|
3270
3558
|
const response = await fetch(
|
|
3271
3559
|
`${apiBaseUrl}/public/organisations/${org_uuid}/workspaces/${workspace_uuid}/submit-consent`,
|
|
3272
3560
|
{
|
|
@@ -3303,7 +3591,6 @@ var submitConsentEvent2 = async ({
|
|
|
3303
3591
|
throw error;
|
|
3304
3592
|
}
|
|
3305
3593
|
} catch (error) {
|
|
3306
|
-
console.error("Error submitting consent event:", error);
|
|
3307
3594
|
throw error;
|
|
3308
3595
|
}
|
|
3309
3596
|
};
|
|
@@ -3782,7 +4069,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3782
4069
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
3783
4070
|
var _a2, _b;
|
|
3784
4071
|
if (!content) return defaultText;
|
|
3785
|
-
if (selectedLanguage ===
|
|
4072
|
+
if (selectedLanguage === "English" || selectedLanguage === "en" || selectedLanguage === "EN") {
|
|
3786
4073
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
3787
4074
|
return content.privacy_policy_anchor_text;
|
|
3788
4075
|
}
|
|
@@ -3797,14 +4084,21 @@ var RedactoConsentInlineComponent = ({
|
|
|
3797
4084
|
}
|
|
3798
4085
|
if (itemId) {
|
|
3799
4086
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
3800
|
-
|
|
4087
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
4088
|
+
if (purposeData) {
|
|
4089
|
+
if (typeof purposeData === "string") {
|
|
4090
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
4091
|
+
}
|
|
4092
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
4093
|
+
}
|
|
4094
|
+
return defaultText;
|
|
3801
4095
|
}
|
|
3802
4096
|
if (key.startsWith("data_elements.")) {
|
|
3803
4097
|
return ((_b = translationMap.data_elements) == null ? void 0 : _b[itemId]) || defaultText;
|
|
3804
4098
|
}
|
|
3805
4099
|
}
|
|
3806
4100
|
const value = translationMap[key];
|
|
3807
|
-
if (typeof value === "string") {
|
|
4101
|
+
if (typeof value === "string" && value) {
|
|
3808
4102
|
return value;
|
|
3809
4103
|
}
|
|
3810
4104
|
return defaultText;
|
|
@@ -3821,13 +4115,12 @@ var RedactoConsentInlineComponent = ({
|
|
|
3821
4115
|
language,
|
|
3822
4116
|
specific_uuid: applicationId
|
|
3823
4117
|
});
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
);
|
|
4118
|
+
const activeConfig = consentContentData.detail.active_config;
|
|
4119
|
+
setContent(activeConfig);
|
|
4120
|
+
if (activeConfig.default_language) {
|
|
4121
|
+
setSelectedLanguage(activeConfig.default_language);
|
|
3829
4122
|
}
|
|
3830
|
-
const initialCollapsedState =
|
|
4123
|
+
const initialCollapsedState = activeConfig.purposes.reduce(
|
|
3831
4124
|
(acc, purpose) => ({
|
|
3832
4125
|
...acc,
|
|
3833
4126
|
[purpose.uuid]: true
|
|
@@ -3835,7 +4128,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3835
4128
|
{}
|
|
3836
4129
|
);
|
|
3837
4130
|
setCollapsedPurposes(initialCollapsedState);
|
|
3838
|
-
const initialDataElementState =
|
|
4131
|
+
const initialDataElementState = activeConfig.purposes.reduce(
|
|
3839
4132
|
(acc, purpose) => {
|
|
3840
4133
|
purpose.data_elements.forEach((element) => {
|
|
3841
4134
|
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
@@ -3846,7 +4139,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3846
4139
|
{}
|
|
3847
4140
|
);
|
|
3848
4141
|
setSelectedDataElements(initialDataElementState);
|
|
3849
|
-
const initialPurposeState =
|
|
4142
|
+
const initialPurposeState = activeConfig.purposes.reduce(
|
|
3850
4143
|
(acc, purpose) => {
|
|
3851
4144
|
return {
|
|
3852
4145
|
...acc,
|
|
@@ -3857,7 +4150,6 @@ var RedactoConsentInlineComponent = ({
|
|
|
3857
4150
|
);
|
|
3858
4151
|
setSelectedPurposes(initialPurposeState);
|
|
3859
4152
|
} catch (err) {
|
|
3860
|
-
console.error(err);
|
|
3861
4153
|
const error = err;
|
|
3862
4154
|
setFetchError(error);
|
|
3863
4155
|
if (error.status === 409) {
|
|
@@ -3972,13 +4264,9 @@ var RedactoConsentInlineComponent = ({
|
|
|
3972
4264
|
onAccept == null ? void 0 : onAccept();
|
|
3973
4265
|
hasSubmittedRef.current = false;
|
|
3974
4266
|
} catch (error) {
|
|
3975
|
-
console.error("Error submitting consent:", error);
|
|
3976
4267
|
const err = error;
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
"An error occurred while submitting your consent. Please try again later."
|
|
3980
|
-
);
|
|
3981
|
-
}
|
|
4268
|
+
const message = err.status === 500 ? "An error occurred while submitting your consent. Please try again later." : err.message || "Failed to submit consent. Please try again.";
|
|
4269
|
+
setErrorMessage(message);
|
|
3982
4270
|
hasSubmittedRef.current = false;
|
|
3983
4271
|
throw error;
|
|
3984
4272
|
} finally {
|
|
@@ -4003,7 +4291,6 @@ var RedactoConsentInlineComponent = ({
|
|
|
4003
4291
|
try {
|
|
4004
4292
|
await handleAcceptWithToken(accessToken);
|
|
4005
4293
|
} catch (err) {
|
|
4006
|
-
console.error("Failed to auto-submit consent:", err);
|
|
4007
4294
|
hasSubmittedRef.current = false;
|
|
4008
4295
|
onError == null ? void 0 : onError(err);
|
|
4009
4296
|
}
|