@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.mjs
CHANGED
|
@@ -3,6 +3,21 @@ import { useCallback, useEffect as useEffect2, useMemo, useRef, useState as useS
|
|
|
3
3
|
|
|
4
4
|
// src/RedactoNoticeConsent/api/index.ts
|
|
5
5
|
import { jwtDecode } from "jwt-decode";
|
|
6
|
+
|
|
7
|
+
// src/utils/isLegacyApi.ts
|
|
8
|
+
function isLegacyApi(baseUrl) {
|
|
9
|
+
try {
|
|
10
|
+
return new URL(baseUrl).hostname.endsWith(".redacto.io");
|
|
11
|
+
} catch {
|
|
12
|
+
try {
|
|
13
|
+
return new URL(`https://${baseUrl}`).hostname.endsWith(".redacto.io");
|
|
14
|
+
} catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/RedactoNoticeConsent/api/index.ts
|
|
6
21
|
var BASE_URL = "https://api.redacto.io/consent";
|
|
7
22
|
var apiCache = /* @__PURE__ */ new Map();
|
|
8
23
|
var CACHE_TTL = 5 * 60 * 1e3;
|
|
@@ -27,14 +42,6 @@ function decodeTokenSafely(token) {
|
|
|
27
42
|
return null;
|
|
28
43
|
}
|
|
29
44
|
}
|
|
30
|
-
var storage = {
|
|
31
|
-
getItem: (key) => {
|
|
32
|
-
if (typeof window !== "undefined") {
|
|
33
|
-
return localStorage.getItem(key);
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
45
|
var clearApiCache = () => {
|
|
39
46
|
apiCache.clear();
|
|
40
47
|
};
|
|
@@ -45,6 +52,7 @@ var fetchConsentContent = async ({
|
|
|
45
52
|
language = "en",
|
|
46
53
|
specific_uuid,
|
|
47
54
|
validate_against = "all",
|
|
55
|
+
include_fully_consented_data = false,
|
|
48
56
|
signal
|
|
49
57
|
// AbortSignal for request cancellation
|
|
50
58
|
}) => {
|
|
@@ -61,7 +69,7 @@ var fetchConsentContent = async ({
|
|
|
61
69
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
62
70
|
}
|
|
63
71
|
const apiBaseUrl = baseUrl || BASE_URL;
|
|
64
|
-
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}`;
|
|
72
|
+
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}-${include_fully_consented_data}`;
|
|
65
73
|
if (validate_against === "all" && !specific_uuid) {
|
|
66
74
|
const cachedData = getCachedData(cacheKey);
|
|
67
75
|
if (cachedData) {
|
|
@@ -75,6 +83,9 @@ var fetchConsentContent = async ({
|
|
|
75
83
|
url.searchParams.append("specific_uuid", specific_uuid);
|
|
76
84
|
}
|
|
77
85
|
url.searchParams.append("validate_against", validate_against);
|
|
86
|
+
if (include_fully_consented_data) {
|
|
87
|
+
url.searchParams.append("include_fully_consented_data", "true");
|
|
88
|
+
}
|
|
78
89
|
const response = await fetch(url.toString(), {
|
|
79
90
|
method: "GET",
|
|
80
91
|
headers: {
|
|
@@ -108,7 +119,6 @@ var fetchConsentContent = async ({
|
|
|
108
119
|
}
|
|
109
120
|
return data;
|
|
110
121
|
} catch (error) {
|
|
111
|
-
console.error("Error fetching consent content:", error instanceof Error ? error.message : error);
|
|
112
122
|
throw error;
|
|
113
123
|
}
|
|
114
124
|
};
|
|
@@ -134,42 +144,62 @@ var submitConsentEvent = async ({
|
|
|
134
144
|
if (!ORGANISATION_UUID || !WORKSPACE_UUID) {
|
|
135
145
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
136
146
|
}
|
|
137
|
-
const primaryEmail = storage.getItem("userEmail");
|
|
138
|
-
const validatedPurposes = purposes.map((purpose) => {
|
|
139
|
-
if (!purpose.uuid || !purpose.name) {
|
|
140
|
-
throw new Error(`Invalid purpose data: missing uuid or name`);
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
uuid: purpose.uuid,
|
|
144
|
-
name: purpose.name,
|
|
145
|
-
description: purpose.description || "",
|
|
146
|
-
industries: purpose.industries || "",
|
|
147
|
-
selected: Boolean(purpose.selected),
|
|
148
|
-
data_elements: (purpose.data_elements || []).map((element) => {
|
|
149
|
-
if (!element.uuid || !element.name) {
|
|
150
|
-
throw new Error(`Invalid data element: missing uuid or name`);
|
|
151
|
-
}
|
|
152
|
-
return {
|
|
153
|
-
uuid: element.uuid,
|
|
154
|
-
name: element.name,
|
|
155
|
-
enabled: Boolean(element.enabled),
|
|
156
|
-
required: Boolean(element.required),
|
|
157
|
-
selected: element.required ? true : Boolean(element.selected)
|
|
158
|
-
};
|
|
159
|
-
})
|
|
160
|
-
};
|
|
161
|
-
});
|
|
162
|
-
const payload = {
|
|
163
|
-
primary_email: primaryEmail || void 0,
|
|
164
|
-
notice_uuid: noticeUuid,
|
|
165
|
-
source: "WEB",
|
|
166
|
-
declined: Boolean(declined),
|
|
167
|
-
consents: {
|
|
168
|
-
purposes: validatedPurposes
|
|
169
|
-
},
|
|
170
|
-
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
171
|
-
};
|
|
172
147
|
const apiBaseUrl = baseUrl || BASE_URL;
|
|
148
|
+
let payload;
|
|
149
|
+
if (isLegacyApi(apiBaseUrl)) {
|
|
150
|
+
const primaryEmail = typeof window !== "undefined" ? localStorage.getItem("userEmail") : null;
|
|
151
|
+
payload = {
|
|
152
|
+
primary_email: primaryEmail || void 0,
|
|
153
|
+
notice_uuid: noticeUuid,
|
|
154
|
+
source: "WEB",
|
|
155
|
+
declined: Boolean(declined),
|
|
156
|
+
consents: {
|
|
157
|
+
purposes: purposes.map((purpose) => {
|
|
158
|
+
if (!purpose.uuid) {
|
|
159
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
uuid: purpose.uuid,
|
|
163
|
+
name: purpose.name,
|
|
164
|
+
description: purpose.description || "",
|
|
165
|
+
industries: purpose.industries || "",
|
|
166
|
+
selected: Boolean(purpose.selected),
|
|
167
|
+
data_elements: (purpose.data_elements || []).map((element) => ({
|
|
168
|
+
uuid: element.uuid,
|
|
169
|
+
name: element.name,
|
|
170
|
+
enabled: Boolean(element.enabled),
|
|
171
|
+
required: Boolean(element.required),
|
|
172
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
173
|
+
}))
|
|
174
|
+
};
|
|
175
|
+
})
|
|
176
|
+
},
|
|
177
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
178
|
+
};
|
|
179
|
+
} else {
|
|
180
|
+
const validatedPurposes = purposes.map((purpose) => {
|
|
181
|
+
if (!purpose.uuid) {
|
|
182
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
183
|
+
}
|
|
184
|
+
const dataElements = (purpose.data_elements || []).filter((element) => element.enabled).map((element) => ({
|
|
185
|
+
uuid: element.uuid,
|
|
186
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
187
|
+
}));
|
|
188
|
+
return {
|
|
189
|
+
purpose_uuid: purpose.uuid,
|
|
190
|
+
selected: Boolean(purpose.selected),
|
|
191
|
+
data_elements: dataElements.length > 0 ? dataElements : void 0
|
|
192
|
+
};
|
|
193
|
+
});
|
|
194
|
+
payload = {
|
|
195
|
+
notice_uuid: noticeUuid,
|
|
196
|
+
purposes: validatedPurposes,
|
|
197
|
+
select_all_mandatory: false,
|
|
198
|
+
source: "WEB",
|
|
199
|
+
declined: Boolean(declined),
|
|
200
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
201
|
+
};
|
|
202
|
+
}
|
|
173
203
|
const response = await fetch(
|
|
174
204
|
`${apiBaseUrl}/public/organisations/${ORGANISATION_UUID}/workspaces/${WORKSPACE_UUID}/submit-consent`,
|
|
175
205
|
{
|
|
@@ -202,7 +232,6 @@ var submitConsentEvent = async ({
|
|
|
202
232
|
}
|
|
203
233
|
apiCache.clear();
|
|
204
234
|
} catch (error) {
|
|
205
|
-
console.error("Error submitting consent event:", error instanceof Error ? error.message : error);
|
|
206
235
|
throw error;
|
|
207
236
|
}
|
|
208
237
|
};
|
|
@@ -334,7 +363,6 @@ var fetchTTSAudioUrls = async ({
|
|
|
334
363
|
const data = await response.json();
|
|
335
364
|
return data;
|
|
336
365
|
} catch (error) {
|
|
337
|
-
console.error("Error fetching TTS audio URLs:", error instanceof Error ? error.message : error);
|
|
338
366
|
throw error;
|
|
339
367
|
}
|
|
340
368
|
};
|
|
@@ -342,6 +370,18 @@ var fetchTTSAudioUrls = async ({
|
|
|
342
370
|
// src/RedactoNoticeConsent/assets/redacto-logo.png
|
|
343
371
|
var redacto_logo_default = "data:image/png;base64,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";
|
|
344
372
|
|
|
373
|
+
// src/RedactoNoticeConsent/constants.ts
|
|
374
|
+
var DPO_AUDIO_ELEMENT_MAP = [
|
|
375
|
+
{ audioKey: "grievance_text_audio_url", elementId: "dpo-grievance-text" },
|
|
376
|
+
{ audioKey: "grievance_anchor_text_audio_url", elementId: "dpo-grievance-link" },
|
|
377
|
+
{ audioKey: "grievance_email_connector_text_audio_url", elementId: "dpo-grievance-email-connector" },
|
|
378
|
+
{ audioKey: "grievance_email_audio_url", elementId: "dpo-grievance-email" },
|
|
379
|
+
{ audioKey: "dp_board_text_audio_url", elementId: "dpo-dp-board-text" },
|
|
380
|
+
{ audioKey: "dp_board_anchor_text_audio_url", elementId: "dpo-dp-board-link" },
|
|
381
|
+
{ audioKey: "dpo_text_audio_url", elementId: "dpo-dpo-text" },
|
|
382
|
+
{ audioKey: "dpo_anchor_text_audio_url", elementId: "dpo-dpo-link" }
|
|
383
|
+
];
|
|
384
|
+
|
|
345
385
|
// src/RedactoNoticeConsent/injectStyles.ts
|
|
346
386
|
var stylesInjected = false;
|
|
347
387
|
var injectCheckboxStyles = () => {
|
|
@@ -531,8 +571,7 @@ var styles = {
|
|
|
531
571
|
justifyContent: "space-between",
|
|
532
572
|
alignItems: "center",
|
|
533
573
|
paddingBottom: "15px",
|
|
534
|
-
borderBottom: "
|
|
535
|
-
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.03)",
|
|
574
|
+
borderBottom: "none",
|
|
536
575
|
backgroundColor: "#ffffff",
|
|
537
576
|
margin: 0,
|
|
538
577
|
boxSizing: "border-box",
|
|
@@ -586,7 +625,7 @@ var styles = {
|
|
|
586
625
|
backgroundColor: "#ffffff"
|
|
587
626
|
},
|
|
588
627
|
middleSection: {
|
|
589
|
-
margin: "
|
|
628
|
+
margin: "0px",
|
|
590
629
|
display: "flex",
|
|
591
630
|
flexDirection: "column",
|
|
592
631
|
gap: "12px",
|
|
@@ -601,7 +640,6 @@ var styles = {
|
|
|
601
640
|
fontSize: "16px",
|
|
602
641
|
fontWeight: 400,
|
|
603
642
|
lineHeight: "150%",
|
|
604
|
-
letterSpacing: "0.2px",
|
|
605
643
|
color: "#344054",
|
|
606
644
|
margin: 0,
|
|
607
645
|
padding: 0,
|
|
@@ -741,8 +779,7 @@ var styles = {
|
|
|
741
779
|
justifyContent: "space-between",
|
|
742
780
|
gap: "29px",
|
|
743
781
|
paddingTop: "15px",
|
|
744
|
-
borderTop: "
|
|
745
|
-
boxShadow: "0 -1px 2px rgba(0, 0, 0, 0.03)",
|
|
782
|
+
borderTop: "none",
|
|
746
783
|
backgroundColor: "#ffffff",
|
|
747
784
|
margin: 0,
|
|
748
785
|
boxSizing: "border-box"
|
|
@@ -1090,9 +1127,8 @@ var PurposeItem = ({
|
|
|
1090
1127
|
),
|
|
1091
1128
|
isAlreadyConsented && /* @__PURE__ */ jsx(Fragment, { children: (() => {
|
|
1092
1129
|
const combinedId = `${purpose.uuid}-${dataElement.uuid}`;
|
|
1093
|
-
const isCurrentlySelected = selectedDataElements[combinedId] || false;
|
|
1094
1130
|
const wasOriginallySelected = initialDataElementSelections[combinedId] || false;
|
|
1095
|
-
if (
|
|
1131
|
+
if (wasOriginallySelected) {
|
|
1096
1132
|
return /* @__PURE__ */ jsx(
|
|
1097
1133
|
"div",
|
|
1098
1134
|
{
|
|
@@ -1105,7 +1141,7 @@ var PurposeItem = ({
|
|
|
1105
1141
|
borderRadius: "50%",
|
|
1106
1142
|
backgroundColor: "#10B981"
|
|
1107
1143
|
},
|
|
1108
|
-
"aria-label": `
|
|
1144
|
+
"aria-label": `Consented to ${getTranslatedText(
|
|
1109
1145
|
`data_elements.name`,
|
|
1110
1146
|
dataElement.name,
|
|
1111
1147
|
dataElement.uuid
|
|
@@ -1135,17 +1171,23 @@ var PurposeItem = ({
|
|
|
1135
1171
|
);
|
|
1136
1172
|
} else {
|
|
1137
1173
|
return /* @__PURE__ */ jsx(
|
|
1138
|
-
"
|
|
1174
|
+
"div",
|
|
1139
1175
|
{
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1176
|
+
style: {
|
|
1177
|
+
display: "flex",
|
|
1178
|
+
alignItems: "center",
|
|
1179
|
+
justifyContent: "center",
|
|
1180
|
+
width: "16px",
|
|
1181
|
+
height: "16px",
|
|
1182
|
+
borderRadius: "50%",
|
|
1183
|
+
border: "2px solid #d0d5dd",
|
|
1184
|
+
backgroundColor: "transparent"
|
|
1185
|
+
},
|
|
1186
|
+
"aria-label": `Not consented to ${getTranslatedText(
|
|
1145
1187
|
`data_elements.name`,
|
|
1146
1188
|
dataElement.name,
|
|
1147
1189
|
dataElement.uuid
|
|
1148
|
-
)}
|
|
1190
|
+
)}`
|
|
1149
1191
|
}
|
|
1150
1192
|
);
|
|
1151
1193
|
}
|
|
@@ -1555,7 +1597,9 @@ var RedactoNoticeConsent = ({
|
|
|
1555
1597
|
onError,
|
|
1556
1598
|
settings,
|
|
1557
1599
|
applicationId,
|
|
1558
|
-
validateAgainst = "all"
|
|
1600
|
+
validateAgainst = "all",
|
|
1601
|
+
includeFullyConsentedData = false,
|
|
1602
|
+
reviewModeButtonText = "Continue"
|
|
1559
1603
|
}) => {
|
|
1560
1604
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
1561
1605
|
const propValidationError = useMemo(() => {
|
|
@@ -1597,6 +1641,7 @@ var RedactoNoticeConsent = ({
|
|
|
1597
1641
|
const [initialDataElementSelections, setInitialDataElementSelections] = useState2({});
|
|
1598
1642
|
const [collapsedPurposes, setCollapsedPurposes] = useState2({});
|
|
1599
1643
|
const [hasAlreadyConsented, setHasAlreadyConsented] = useState2(false);
|
|
1644
|
+
const [isFullyConsentedReviewMode, setIsFullyConsentedReviewMode] = useState2(false);
|
|
1600
1645
|
const [isLanguageDropdownOpen, setIsLanguageDropdownOpen] = useState2(false);
|
|
1601
1646
|
const [selectedLanguage, setSelectedLanguage] = useState2(language);
|
|
1602
1647
|
const [errorMessage, setErrorMessage] = useState2(null);
|
|
@@ -1758,10 +1803,15 @@ var RedactoNoticeConsent = ({
|
|
|
1758
1803
|
onAccept == null ? void 0 : onAccept();
|
|
1759
1804
|
}
|
|
1760
1805
|
}, [hasAlreadyConsented, onAccept]);
|
|
1806
|
+
const isDefaultLanguage = (lang) => {
|
|
1807
|
+
if (!content) return true;
|
|
1808
|
+
if (lang === "English" || lang === "en" || lang === "EN") return true;
|
|
1809
|
+
return false;
|
|
1810
|
+
};
|
|
1761
1811
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
1762
1812
|
var _a2, _b2;
|
|
1763
1813
|
if (!content) return defaultText;
|
|
1764
|
-
if (selectedLanguage
|
|
1814
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1765
1815
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
1766
1816
|
return content.privacy_policy_anchor_text;
|
|
1767
1817
|
}
|
|
@@ -1788,18 +1838,38 @@ var RedactoNoticeConsent = ({
|
|
|
1788
1838
|
}
|
|
1789
1839
|
if (itemId) {
|
|
1790
1840
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
1791
|
-
|
|
1841
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
1842
|
+
if (purposeData) {
|
|
1843
|
+
if (typeof purposeData === "string") {
|
|
1844
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
1845
|
+
}
|
|
1846
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
1847
|
+
}
|
|
1848
|
+
return defaultText;
|
|
1792
1849
|
}
|
|
1793
1850
|
if (key.startsWith("data_elements.")) {
|
|
1794
1851
|
return ((_b2 = translationMap.data_elements) == null ? void 0 : _b2[itemId]) || defaultText;
|
|
1795
1852
|
}
|
|
1796
1853
|
}
|
|
1797
1854
|
const value = translationMap[key];
|
|
1798
|
-
if (typeof value === "string") {
|
|
1855
|
+
if (typeof value === "string" && value) {
|
|
1799
1856
|
return value;
|
|
1800
1857
|
}
|
|
1801
1858
|
return defaultText;
|
|
1802
1859
|
};
|
|
1860
|
+
const getTranslatedDpoText = (key, defaultText) => {
|
|
1861
|
+
if (!(content == null ? void 0 : content.dpo_info)) return defaultText;
|
|
1862
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1863
|
+
return content.dpo_info[key] || defaultText;
|
|
1864
|
+
}
|
|
1865
|
+
if (!content.supported_languages_and_translations) return defaultText;
|
|
1866
|
+
const translationMap = content.supported_languages_and_translations[selectedLanguage];
|
|
1867
|
+
if (translationMap == null ? void 0 : translationMap.dpo_info) {
|
|
1868
|
+
const translated = translationMap.dpo_info[key];
|
|
1869
|
+
if (translated) return translated;
|
|
1870
|
+
}
|
|
1871
|
+
return content.dpo_info[key] || defaultText;
|
|
1872
|
+
};
|
|
1803
1873
|
const fetchNotice = async () => {
|
|
1804
1874
|
var _a2;
|
|
1805
1875
|
if (isRequestInProgressRef.current) {
|
|
@@ -1823,16 +1893,18 @@ var RedactoNoticeConsent = ({
|
|
|
1823
1893
|
language,
|
|
1824
1894
|
specific_uuid: applicationId,
|
|
1825
1895
|
validate_against: validateAgainst,
|
|
1896
|
+
include_fully_consented_data: includeFullyConsentedData,
|
|
1826
1897
|
signal: (_a2 = abortControllerRef.current) == null ? void 0 : _a2.signal
|
|
1827
1898
|
});
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1899
|
+
const activeConfig = consentContentData.detail.active_config;
|
|
1900
|
+
setContent(activeConfig);
|
|
1901
|
+
if (activeConfig.default_language) {
|
|
1902
|
+
const defaultLang = activeConfig.default_language;
|
|
1831
1903
|
setSelectedLanguage(
|
|
1832
1904
|
defaultLang === "en" || defaultLang === "EN" ? "English" : defaultLang
|
|
1833
1905
|
);
|
|
1834
1906
|
}
|
|
1835
|
-
const initialCollapsedState =
|
|
1907
|
+
const initialCollapsedState = activeConfig.purposes.reduce(
|
|
1836
1908
|
(acc, purpose) => ({
|
|
1837
1909
|
...acc,
|
|
1838
1910
|
[purpose.uuid]: true
|
|
@@ -1843,13 +1915,13 @@ var RedactoNoticeConsent = ({
|
|
|
1843
1915
|
const isReconsentRequired = consentContentData.detail.reconsent_required;
|
|
1844
1916
|
const purposeSelections = consentContentData.detail.purpose_selections;
|
|
1845
1917
|
const newCategorizedPurposes = isReconsentRequired ? {
|
|
1846
|
-
alreadyConsented:
|
|
1918
|
+
alreadyConsented: activeConfig.purposes.filter(
|
|
1847
1919
|
(purpose) => {
|
|
1848
1920
|
const selection = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid];
|
|
1849
1921
|
return selection && (selection.status === "ACTIVE" || selection.status === "EXPIRED") && !selection.needs_reconsent;
|
|
1850
1922
|
}
|
|
1851
1923
|
),
|
|
1852
|
-
needsConsent:
|
|
1924
|
+
needsConsent: activeConfig.purposes.filter(
|
|
1853
1925
|
(purpose) => {
|
|
1854
1926
|
const selection = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid];
|
|
1855
1927
|
return !selection || selection.status !== "ACTIVE" || selection.needs_reconsent;
|
|
@@ -1857,9 +1929,9 @@ var RedactoNoticeConsent = ({
|
|
|
1857
1929
|
)
|
|
1858
1930
|
} : null;
|
|
1859
1931
|
setCategorizedPurposes(newCategorizedPurposes);
|
|
1860
|
-
const initialPurposeState =
|
|
1932
|
+
const initialPurposeState = activeConfig.purposes.reduce(
|
|
1861
1933
|
(acc, purpose) => {
|
|
1862
|
-
if (
|
|
1934
|
+
if (purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) {
|
|
1863
1935
|
acc[purpose.uuid] = purposeSelections[purpose.uuid].selected;
|
|
1864
1936
|
} else {
|
|
1865
1937
|
acc[purpose.uuid] = false;
|
|
@@ -1869,12 +1941,12 @@ var RedactoNoticeConsent = ({
|
|
|
1869
1941
|
{}
|
|
1870
1942
|
);
|
|
1871
1943
|
setSelectedPurposes(initialPurposeState);
|
|
1872
|
-
const initialDataElementState =
|
|
1944
|
+
const initialDataElementState = activeConfig.purposes.reduce(
|
|
1873
1945
|
(acc, purpose) => {
|
|
1874
1946
|
purpose.data_elements.forEach((element) => {
|
|
1875
1947
|
var _a3, _b2;
|
|
1876
1948
|
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
1877
|
-
if (
|
|
1949
|
+
if ((_b2 = (_a3 = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
1878
1950
|
acc[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
1879
1951
|
} else {
|
|
1880
1952
|
acc[combinedId] = false;
|
|
@@ -1886,6 +1958,7 @@ var RedactoNoticeConsent = ({
|
|
|
1886
1958
|
);
|
|
1887
1959
|
setSelectedDataElements(initialDataElementState);
|
|
1888
1960
|
if (isReconsentRequired && newCategorizedPurposes) {
|
|
1961
|
+
setIsFullyConsentedReviewMode(false);
|
|
1889
1962
|
const initialSelections = {};
|
|
1890
1963
|
newCategorizedPurposes.alreadyConsented.forEach((purpose) => {
|
|
1891
1964
|
purpose.data_elements.forEach((element) => {
|
|
@@ -1899,7 +1972,36 @@ var RedactoNoticeConsent = ({
|
|
|
1899
1972
|
});
|
|
1900
1973
|
});
|
|
1901
1974
|
setInitialDataElementSelections(initialSelections);
|
|
1975
|
+
} else if (includeFullyConsentedData && purposeSelections) {
|
|
1976
|
+
const allPurposesSelected = activeConfig.purposes.length > 0 && activeConfig.purposes.every(
|
|
1977
|
+
(p) => {
|
|
1978
|
+
var _a3;
|
|
1979
|
+
return ((_a3 = purposeSelections[p.uuid]) == null ? void 0 : _a3.selected) === true;
|
|
1980
|
+
}
|
|
1981
|
+
);
|
|
1982
|
+
setIsFullyConsentedReviewMode(allPurposesSelected);
|
|
1983
|
+
if (allPurposesSelected) {
|
|
1984
|
+
const initialSelections = {};
|
|
1985
|
+
activeConfig.purposes.forEach(
|
|
1986
|
+
(purpose) => {
|
|
1987
|
+
purpose.data_elements.forEach((element) => {
|
|
1988
|
+
var _a3, _b2;
|
|
1989
|
+
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
1990
|
+
if ((_b2 = (_a3 = purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
1991
|
+
initialSelections[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
1992
|
+
} else {
|
|
1993
|
+
initialSelections[combinedId] = false;
|
|
1994
|
+
}
|
|
1995
|
+
});
|
|
1996
|
+
}
|
|
1997
|
+
);
|
|
1998
|
+
setInitialDataElementSelections(initialSelections);
|
|
1999
|
+
} else {
|
|
2000
|
+
setIsFullyConsentedReviewMode(false);
|
|
2001
|
+
setInitialDataElementSelections({});
|
|
2002
|
+
}
|
|
1902
2003
|
} else {
|
|
2004
|
+
setIsFullyConsentedReviewMode(false);
|
|
1903
2005
|
setInitialDataElementSelections({});
|
|
1904
2006
|
}
|
|
1905
2007
|
if (consentContentData.detail.is_minor) {
|
|
@@ -1910,7 +2012,6 @@ var RedactoNoticeConsent = ({
|
|
|
1910
2012
|
if (err instanceof Error && err.name === "AbortError") {
|
|
1911
2013
|
return;
|
|
1912
2014
|
}
|
|
1913
|
-
console.error(err);
|
|
1914
2015
|
const error = err;
|
|
1915
2016
|
setFetchError(error);
|
|
1916
2017
|
if (error.status === 409) {
|
|
@@ -1932,7 +2033,8 @@ var RedactoNoticeConsent = ({
|
|
|
1932
2033
|
refreshToken,
|
|
1933
2034
|
language,
|
|
1934
2035
|
applicationId,
|
|
1935
|
-
validateAgainst
|
|
2036
|
+
validateAgainst,
|
|
2037
|
+
includeFullyConsentedData
|
|
1936
2038
|
// Removed onError and isRefreshingToken from dependencies to prevent duplicate API calls
|
|
1937
2039
|
// onError is only called on errors, not needed for initial data fetching
|
|
1938
2040
|
]);
|
|
@@ -2045,13 +2147,9 @@ var RedactoNoticeConsent = ({
|
|
|
2045
2147
|
if (error instanceof Error && error.name === "AbortError") {
|
|
2046
2148
|
return;
|
|
2047
2149
|
}
|
|
2048
|
-
console.error("Error submitting consent:", error);
|
|
2049
2150
|
const err = error;
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
"An error occurred while submitting your consent. Please try again later."
|
|
2053
|
-
);
|
|
2054
|
-
}
|
|
2151
|
+
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.";
|
|
2152
|
+
setErrorMessage(message);
|
|
2055
2153
|
onError == null ? void 0 : onError(error);
|
|
2056
2154
|
} finally {
|
|
2057
2155
|
setIsSubmittingAccept(false);
|
|
@@ -2216,6 +2314,20 @@ var RedactoNoticeConsent = ({
|
|
|
2216
2314
|
});
|
|
2217
2315
|
}
|
|
2218
2316
|
});
|
|
2317
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2318
|
+
sequence.push(ttsAudioUrls.additional_text_audio_url);
|
|
2319
|
+
}
|
|
2320
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2321
|
+
sequence.push(ttsAudioUrls.privacy_center_anchor_text_audio_url);
|
|
2322
|
+
}
|
|
2323
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2324
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2325
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey }) => {
|
|
2326
|
+
if (dpoAudio[audioKey]) {
|
|
2327
|
+
sequence.push(dpoAudio[audioKey]);
|
|
2328
|
+
}
|
|
2329
|
+
});
|
|
2330
|
+
}
|
|
2219
2331
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2220
2332
|
sequence.push(ttsAudioUrls.confirm_button_text_audio_url);
|
|
2221
2333
|
}
|
|
@@ -2263,6 +2375,20 @@ var RedactoNoticeConsent = ({
|
|
|
2263
2375
|
});
|
|
2264
2376
|
}
|
|
2265
2377
|
});
|
|
2378
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2379
|
+
elementIds.push("additional-text");
|
|
2380
|
+
}
|
|
2381
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2382
|
+
elementIds.push("privacy-center-link");
|
|
2383
|
+
}
|
|
2384
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2385
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2386
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey, elementId }) => {
|
|
2387
|
+
if (dpoAudio[audioKey]) {
|
|
2388
|
+
elementIds.push(elementId);
|
|
2389
|
+
}
|
|
2390
|
+
});
|
|
2391
|
+
}
|
|
2266
2392
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2267
2393
|
elementIds.push("confirm-button-text");
|
|
2268
2394
|
}
|
|
@@ -2433,7 +2559,6 @@ var RedactoNoticeConsent = ({
|
|
|
2433
2559
|
setIsTTSAvailable(true);
|
|
2434
2560
|
}).catch((error) => {
|
|
2435
2561
|
if (error instanceof Error && error.name !== "AbortError") {
|
|
2436
|
-
console.warn("Failed to fetch TTS audio URLs:", error.message);
|
|
2437
2562
|
setIsTTSAvailable(false);
|
|
2438
2563
|
setTtsAudioUrls(null);
|
|
2439
2564
|
}
|
|
@@ -3080,16 +3205,135 @@ var RedactoNoticeConsent = ({
|
|
|
3080
3205
|
onPurposeCollapse: togglePurposeCollapse,
|
|
3081
3206
|
onDataElementToggle: handleDataElementCheckboxChange,
|
|
3082
3207
|
getTranslatedText,
|
|
3083
|
-
isAlreadyConsented:
|
|
3084
|
-
selectedLanguage
|
|
3208
|
+
isAlreadyConsented: isFullyConsentedReviewMode,
|
|
3209
|
+
selectedLanguage,
|
|
3210
|
+
initialDataElementSelections
|
|
3085
3211
|
},
|
|
3086
3212
|
`${purpose.uuid}-${selectedLanguage}`
|
|
3087
3213
|
)) })
|
|
3214
|
+
),
|
|
3215
|
+
((content == null ? void 0 : content.privacy_center_url) || (content == null ? void 0 : content.dpo_info)) && /* @__PURE__ */ jsx(
|
|
3216
|
+
"div",
|
|
3217
|
+
{
|
|
3218
|
+
style: {
|
|
3219
|
+
...styles.privacyText,
|
|
3220
|
+
...responsiveStyles.privacyText,
|
|
3221
|
+
...componentTextStyle,
|
|
3222
|
+
fontSize: isMobile ? "13px" : "14px",
|
|
3223
|
+
lineHeight: "1.4",
|
|
3224
|
+
borderTop: "1px solid rgba(152, 162, 179, 0.3)",
|
|
3225
|
+
paddingTop: "12px",
|
|
3226
|
+
marginTop: "12px"
|
|
3227
|
+
},
|
|
3228
|
+
children: /* @__PURE__ */ jsxs("p", { style: { margin: 0, opacity: 0.6 }, children: [
|
|
3229
|
+
content.privacy_center_url && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3230
|
+
content.additional_text && /* @__PURE__ */ jsx("span", { id: "additional-text", children: getTranslatedText(
|
|
3231
|
+
"additional_text",
|
|
3232
|
+
content.additional_text
|
|
3233
|
+
) }),
|
|
3234
|
+
" ",
|
|
3235
|
+
/* @__PURE__ */ jsx(
|
|
3236
|
+
"a",
|
|
3237
|
+
{
|
|
3238
|
+
id: "privacy-center-link",
|
|
3239
|
+
style: { ...styles.link, ...linkStyle },
|
|
3240
|
+
href: content.privacy_center_url,
|
|
3241
|
+
target: "_blank",
|
|
3242
|
+
rel: "noopener noreferrer",
|
|
3243
|
+
children: getTranslatedText(
|
|
3244
|
+
"privacy_center_anchor_text",
|
|
3245
|
+
content.privacy_center_anchor_text || "Privacy Center"
|
|
3246
|
+
)
|
|
3247
|
+
}
|
|
3248
|
+
),
|
|
3249
|
+
"."
|
|
3250
|
+
] }),
|
|
3251
|
+
content.dpo_info && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3252
|
+
content.privacy_center_url && /* @__PURE__ */ jsx("br", {}),
|
|
3253
|
+
/* @__PURE__ */ jsx("span", { id: "dpo-grievance-text", children: getTranslatedDpoText(
|
|
3254
|
+
"grievance_text",
|
|
3255
|
+
content.dpo_info.grievance_text || ""
|
|
3256
|
+
) }),
|
|
3257
|
+
" ",
|
|
3258
|
+
content.dpo_info.grievance_url && /* @__PURE__ */ jsx(
|
|
3259
|
+
"a",
|
|
3260
|
+
{
|
|
3261
|
+
id: "dpo-grievance-link",
|
|
3262
|
+
style: { ...styles.link, ...linkStyle },
|
|
3263
|
+
href: content.dpo_info.grievance_url,
|
|
3264
|
+
target: "_blank",
|
|
3265
|
+
rel: "noopener noreferrer",
|
|
3266
|
+
children: getTranslatedDpoText(
|
|
3267
|
+
"grievance_anchor_text",
|
|
3268
|
+
content.dpo_info.grievance_anchor_text || "click here"
|
|
3269
|
+
)
|
|
3270
|
+
}
|
|
3271
|
+
),
|
|
3272
|
+
content.dpo_info.grievance_email && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3273
|
+
" ",
|
|
3274
|
+
/* @__PURE__ */ jsx("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
|
|
3275
|
+
"grievance_email_connector_text",
|
|
3276
|
+
content.dpo_info.grievance_email_connector_text || "or email to"
|
|
3277
|
+
) }),
|
|
3278
|
+
" ",
|
|
3279
|
+
/* @__PURE__ */ jsx(
|
|
3280
|
+
"a",
|
|
3281
|
+
{
|
|
3282
|
+
id: "dpo-grievance-email",
|
|
3283
|
+
style: { ...styles.link, ...linkStyle },
|
|
3284
|
+
href: `mailto:${content.dpo_info.grievance_email}`,
|
|
3285
|
+
children: content.dpo_info.grievance_email
|
|
3286
|
+
}
|
|
3287
|
+
)
|
|
3288
|
+
] }),
|
|
3289
|
+
/* @__PURE__ */ jsx("br", {}),
|
|
3290
|
+
/* @__PURE__ */ jsx("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText(
|
|
3291
|
+
"dp_board_text",
|
|
3292
|
+
content.dpo_info.dp_board_text || ""
|
|
3293
|
+
) }),
|
|
3294
|
+
" ",
|
|
3295
|
+
content.dpo_info.dp_board_url && /* @__PURE__ */ jsx(
|
|
3296
|
+
"a",
|
|
3297
|
+
{
|
|
3298
|
+
id: "dpo-dp-board-link",
|
|
3299
|
+
style: { ...styles.link, ...linkStyle },
|
|
3300
|
+
href: content.dpo_info.dp_board_url,
|
|
3301
|
+
target: "_blank",
|
|
3302
|
+
rel: "noopener noreferrer",
|
|
3303
|
+
children: getTranslatedDpoText(
|
|
3304
|
+
"dp_board_anchor_text",
|
|
3305
|
+
content.dpo_info.dp_board_anchor_text || "here"
|
|
3306
|
+
)
|
|
3307
|
+
}
|
|
3308
|
+
),
|
|
3309
|
+
/* @__PURE__ */ jsx("br", {}),
|
|
3310
|
+
/* @__PURE__ */ jsx("span", { id: "dpo-dpo-text", children: getTranslatedDpoText(
|
|
3311
|
+
"dpo_text",
|
|
3312
|
+
content.dpo_info.dpo_text || ""
|
|
3313
|
+
) }),
|
|
3314
|
+
" ",
|
|
3315
|
+
content.dpo_info.dpo_url && /* @__PURE__ */ jsx(
|
|
3316
|
+
"a",
|
|
3317
|
+
{
|
|
3318
|
+
id: "dpo-dpo-link",
|
|
3319
|
+
style: { ...styles.link, ...linkStyle },
|
|
3320
|
+
href: content.dpo_info.dpo_url,
|
|
3321
|
+
target: "_blank",
|
|
3322
|
+
rel: "noopener noreferrer",
|
|
3323
|
+
children: getTranslatedDpoText(
|
|
3324
|
+
"dpo_anchor_text",
|
|
3325
|
+
content.dpo_info.dpo_anchor_text || "Click here"
|
|
3326
|
+
)
|
|
3327
|
+
}
|
|
3328
|
+
)
|
|
3329
|
+
] })
|
|
3330
|
+
] })
|
|
3331
|
+
}
|
|
3088
3332
|
)
|
|
3089
3333
|
]
|
|
3090
3334
|
}
|
|
3091
3335
|
),
|
|
3092
|
-
/* @__PURE__ */
|
|
3336
|
+
/* @__PURE__ */ jsx(
|
|
3093
3337
|
"div",
|
|
3094
3338
|
{
|
|
3095
3339
|
style: {
|
|
@@ -3097,7 +3341,22 @@ var RedactoNoticeConsent = ({
|
|
|
3097
3341
|
...responsiveStyles.bottomSection,
|
|
3098
3342
|
...sectionStyle
|
|
3099
3343
|
},
|
|
3100
|
-
children:
|
|
3344
|
+
children: isFullyConsentedReviewMode ? /* @__PURE__ */ jsx(
|
|
3345
|
+
"button",
|
|
3346
|
+
{
|
|
3347
|
+
ref: lastFocusableRef,
|
|
3348
|
+
id: "review-mode-continue-button",
|
|
3349
|
+
style: {
|
|
3350
|
+
...styles.button,
|
|
3351
|
+
...responsiveStyles.button,
|
|
3352
|
+
...styles.acceptButton,
|
|
3353
|
+
...acceptButtonStyle
|
|
3354
|
+
},
|
|
3355
|
+
onClick: () => onAccept == null ? void 0 : onAccept(),
|
|
3356
|
+
"aria-label": reviewModeButtonText,
|
|
3357
|
+
children: reviewModeButtonText
|
|
3358
|
+
}
|
|
3359
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3101
3360
|
/* @__PURE__ */ jsx(
|
|
3102
3361
|
"button",
|
|
3103
3362
|
{
|
|
@@ -3145,7 +3404,7 @@ var RedactoNoticeConsent = ({
|
|
|
3145
3404
|
)
|
|
3146
3405
|
}
|
|
3147
3406
|
)
|
|
3148
|
-
]
|
|
3407
|
+
] })
|
|
3149
3408
|
}
|
|
3150
3409
|
)
|
|
3151
3410
|
] })
|
|
@@ -3199,7 +3458,6 @@ var fetchConsentContent2 = async ({
|
|
|
3199
3458
|
const data = await response.json();
|
|
3200
3459
|
return data;
|
|
3201
3460
|
} catch (error) {
|
|
3202
|
-
console.error("Error fetching consent content:", error);
|
|
3203
3461
|
throw error;
|
|
3204
3462
|
}
|
|
3205
3463
|
};
|
|
@@ -3215,31 +3473,61 @@ var submitConsentEvent2 = async ({
|
|
|
3215
3473
|
}) => {
|
|
3216
3474
|
var _a, _b;
|
|
3217
3475
|
try {
|
|
3218
|
-
const primaryEmail = localStorage.getItem("userEmail");
|
|
3219
|
-
const payload = {
|
|
3220
|
-
primary_email: primaryEmail || void 0,
|
|
3221
|
-
notice_uuid: noticeUuid,
|
|
3222
|
-
source: "WEB",
|
|
3223
|
-
declined,
|
|
3224
|
-
consents: {
|
|
3225
|
-
purposes: purposes.map((purpose) => ({
|
|
3226
|
-
uuid: purpose.uuid,
|
|
3227
|
-
name: purpose.name,
|
|
3228
|
-
description: purpose.description,
|
|
3229
|
-
industries: purpose.industries || "",
|
|
3230
|
-
selected: purpose.selected,
|
|
3231
|
-
data_elements: purpose.data_elements.map((element) => ({
|
|
3232
|
-
uuid: element.uuid,
|
|
3233
|
-
name: element.name,
|
|
3234
|
-
enabled: element.enabled,
|
|
3235
|
-
required: element.required,
|
|
3236
|
-
selected: element.required ? true : element.selected
|
|
3237
|
-
}))
|
|
3238
|
-
}))
|
|
3239
|
-
},
|
|
3240
|
-
meta_data
|
|
3241
|
-
};
|
|
3242
3476
|
const apiBaseUrl = baseUrl || BASE_URL2;
|
|
3477
|
+
let payload;
|
|
3478
|
+
if (isLegacyApi(apiBaseUrl)) {
|
|
3479
|
+
const primaryEmail = typeof window !== "undefined" ? localStorage.getItem("userEmail") : null;
|
|
3480
|
+
payload = {
|
|
3481
|
+
primary_email: primaryEmail || void 0,
|
|
3482
|
+
notice_uuid: noticeUuid,
|
|
3483
|
+
source: "WEB",
|
|
3484
|
+
declined: Boolean(declined),
|
|
3485
|
+
consents: {
|
|
3486
|
+
purposes: purposes.map((purpose) => {
|
|
3487
|
+
if (!purpose.uuid) {
|
|
3488
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
3489
|
+
}
|
|
3490
|
+
return {
|
|
3491
|
+
uuid: purpose.uuid,
|
|
3492
|
+
name: purpose.name,
|
|
3493
|
+
description: purpose.description || "",
|
|
3494
|
+
industries: purpose.industries || "",
|
|
3495
|
+
selected: Boolean(purpose.selected),
|
|
3496
|
+
data_elements: (purpose.data_elements || []).map((element) => ({
|
|
3497
|
+
uuid: element.uuid,
|
|
3498
|
+
name: element.name,
|
|
3499
|
+
enabled: Boolean(element.enabled),
|
|
3500
|
+
required: Boolean(element.required),
|
|
3501
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
3502
|
+
}))
|
|
3503
|
+
};
|
|
3504
|
+
})
|
|
3505
|
+
},
|
|
3506
|
+
meta_data: meta_data ? { specific_uuid: meta_data.specific_uuid } : void 0
|
|
3507
|
+
};
|
|
3508
|
+
} else {
|
|
3509
|
+
payload = {
|
|
3510
|
+
notice_uuid: noticeUuid,
|
|
3511
|
+
purposes: purposes.map((purpose) => {
|
|
3512
|
+
if (!purpose.uuid) {
|
|
3513
|
+
throw new Error(`Invalid purpose data: missing uuid`);
|
|
3514
|
+
}
|
|
3515
|
+
const dataElements = purpose.data_elements.filter((element) => element.enabled).map((element) => ({
|
|
3516
|
+
uuid: element.uuid,
|
|
3517
|
+
selected: element.required ? true : Boolean(element.selected)
|
|
3518
|
+
}));
|
|
3519
|
+
return {
|
|
3520
|
+
purpose_uuid: purpose.uuid,
|
|
3521
|
+
selected: Boolean(purpose.selected),
|
|
3522
|
+
data_elements: dataElements.length > 0 ? dataElements : void 0
|
|
3523
|
+
};
|
|
3524
|
+
}),
|
|
3525
|
+
select_all_mandatory: false,
|
|
3526
|
+
source: "WEB",
|
|
3527
|
+
declined,
|
|
3528
|
+
meta_data
|
|
3529
|
+
};
|
|
3530
|
+
}
|
|
3243
3531
|
const response = await fetch(
|
|
3244
3532
|
`${apiBaseUrl}/public/organisations/${org_uuid}/workspaces/${workspace_uuid}/submit-consent`,
|
|
3245
3533
|
{
|
|
@@ -3276,7 +3564,6 @@ var submitConsentEvent2 = async ({
|
|
|
3276
3564
|
throw error;
|
|
3277
3565
|
}
|
|
3278
3566
|
} catch (error) {
|
|
3279
|
-
console.error("Error submitting consent event:", error);
|
|
3280
3567
|
throw error;
|
|
3281
3568
|
}
|
|
3282
3569
|
};
|
|
@@ -3755,7 +4042,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3755
4042
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
3756
4043
|
var _a2, _b;
|
|
3757
4044
|
if (!content) return defaultText;
|
|
3758
|
-
if (selectedLanguage ===
|
|
4045
|
+
if (selectedLanguage === "English" || selectedLanguage === "en" || selectedLanguage === "EN") {
|
|
3759
4046
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
3760
4047
|
return content.privacy_policy_anchor_text;
|
|
3761
4048
|
}
|
|
@@ -3770,14 +4057,21 @@ var RedactoConsentInlineComponent = ({
|
|
|
3770
4057
|
}
|
|
3771
4058
|
if (itemId) {
|
|
3772
4059
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
3773
|
-
|
|
4060
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
4061
|
+
if (purposeData) {
|
|
4062
|
+
if (typeof purposeData === "string") {
|
|
4063
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
4064
|
+
}
|
|
4065
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
4066
|
+
}
|
|
4067
|
+
return defaultText;
|
|
3774
4068
|
}
|
|
3775
4069
|
if (key.startsWith("data_elements.")) {
|
|
3776
4070
|
return ((_b = translationMap.data_elements) == null ? void 0 : _b[itemId]) || defaultText;
|
|
3777
4071
|
}
|
|
3778
4072
|
}
|
|
3779
4073
|
const value = translationMap[key];
|
|
3780
|
-
if (typeof value === "string") {
|
|
4074
|
+
if (typeof value === "string" && value) {
|
|
3781
4075
|
return value;
|
|
3782
4076
|
}
|
|
3783
4077
|
return defaultText;
|
|
@@ -3794,13 +4088,12 @@ var RedactoConsentInlineComponent = ({
|
|
|
3794
4088
|
language,
|
|
3795
4089
|
specific_uuid: applicationId
|
|
3796
4090
|
});
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
);
|
|
4091
|
+
const activeConfig = consentContentData.detail.active_config;
|
|
4092
|
+
setContent(activeConfig);
|
|
4093
|
+
if (activeConfig.default_language) {
|
|
4094
|
+
setSelectedLanguage(activeConfig.default_language);
|
|
3802
4095
|
}
|
|
3803
|
-
const initialCollapsedState =
|
|
4096
|
+
const initialCollapsedState = activeConfig.purposes.reduce(
|
|
3804
4097
|
(acc, purpose) => ({
|
|
3805
4098
|
...acc,
|
|
3806
4099
|
[purpose.uuid]: true
|
|
@@ -3808,7 +4101,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3808
4101
|
{}
|
|
3809
4102
|
);
|
|
3810
4103
|
setCollapsedPurposes(initialCollapsedState);
|
|
3811
|
-
const initialDataElementState =
|
|
4104
|
+
const initialDataElementState = activeConfig.purposes.reduce(
|
|
3812
4105
|
(acc, purpose) => {
|
|
3813
4106
|
purpose.data_elements.forEach((element) => {
|
|
3814
4107
|
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
@@ -3819,7 +4112,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3819
4112
|
{}
|
|
3820
4113
|
);
|
|
3821
4114
|
setSelectedDataElements(initialDataElementState);
|
|
3822
|
-
const initialPurposeState =
|
|
4115
|
+
const initialPurposeState = activeConfig.purposes.reduce(
|
|
3823
4116
|
(acc, purpose) => {
|
|
3824
4117
|
return {
|
|
3825
4118
|
...acc,
|
|
@@ -3830,7 +4123,6 @@ var RedactoConsentInlineComponent = ({
|
|
|
3830
4123
|
);
|
|
3831
4124
|
setSelectedPurposes(initialPurposeState);
|
|
3832
4125
|
} catch (err) {
|
|
3833
|
-
console.error(err);
|
|
3834
4126
|
const error = err;
|
|
3835
4127
|
setFetchError(error);
|
|
3836
4128
|
if (error.status === 409) {
|
|
@@ -3945,13 +4237,9 @@ var RedactoConsentInlineComponent = ({
|
|
|
3945
4237
|
onAccept == null ? void 0 : onAccept();
|
|
3946
4238
|
hasSubmittedRef.current = false;
|
|
3947
4239
|
} catch (error) {
|
|
3948
|
-
console.error("Error submitting consent:", error);
|
|
3949
4240
|
const err = error;
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
"An error occurred while submitting your consent. Please try again later."
|
|
3953
|
-
);
|
|
3954
|
-
}
|
|
4241
|
+
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.";
|
|
4242
|
+
setErrorMessage(message);
|
|
3955
4243
|
hasSubmittedRef.current = false;
|
|
3956
4244
|
throw error;
|
|
3957
4245
|
} finally {
|
|
@@ -3976,7 +4264,6 @@ var RedactoConsentInlineComponent = ({
|
|
|
3976
4264
|
try {
|
|
3977
4265
|
await handleAcceptWithToken(accessToken);
|
|
3978
4266
|
} catch (err) {
|
|
3979
|
-
console.error("Failed to auto-submit consent:", err);
|
|
3980
4267
|
hasSubmittedRef.current = false;
|
|
3981
4268
|
onError == null ? void 0 : onError(err);
|
|
3982
4269
|
}
|