@redacto.io/consent-sdk-react-native 5.0.0-beta.1 → 5.0.0-beta.10
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 +75 -0
- package/dist/chunk-B2TXWC2C.mjs +60 -0
- package/dist/index.d.mts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +196 -55
- package/dist/index.mjs +153 -56
- package/dist/privacy-center.d.mts +147 -63
- package/dist/privacy-center.d.ts +147 -63
- package/dist/privacy-center.js +1499 -657
- package/dist/privacy-center.mjs +1459 -654
- package/package.json +1 -1
- package/dist/chunk-Y6FXYEAI.mjs +0 -10
package/dist/privacy-center.js
CHANGED
|
@@ -121,10 +121,10 @@ __export(privacy_center_exports, {
|
|
|
121
121
|
module.exports = __toCommonJS(privacy_center_exports);
|
|
122
122
|
|
|
123
123
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
124
|
-
var
|
|
124
|
+
var import_react45 = require("react");
|
|
125
125
|
var import_react_query2 = require("@tanstack/react-query");
|
|
126
|
-
var
|
|
127
|
-
var
|
|
126
|
+
var import_react_i18next31 = require("react-i18next");
|
|
127
|
+
var import_react_native66 = require("react-native");
|
|
128
128
|
|
|
129
129
|
// src/RedactoPrivacyCenter/lib/i18n.ts
|
|
130
130
|
var import_i18next = __toESM(require("i18next"));
|
|
@@ -541,7 +541,14 @@ var translation_default = {
|
|
|
541
541
|
submittingAs: "Submitting as {{email}}",
|
|
542
542
|
tapToChooseFile: "Tap to choose a file",
|
|
543
543
|
view: "View",
|
|
544
|
-
whatDoYouNeed: "What do you need?"
|
|
544
|
+
whatDoYouNeed: "What do you need?",
|
|
545
|
+
sessionExpiredTitle: "Your session has expired",
|
|
546
|
+
sessionExpiredDescription: "Please sign in again to continue.",
|
|
547
|
+
chooseYourProfile: "Choose your profile",
|
|
548
|
+
loginIdentifierLinkedToMultipleProfiles: "The login identifier is linked to more than one profile. Choose the one you want to view.",
|
|
549
|
+
userIdLabel: "User ID: {{id}}",
|
|
550
|
+
signingInEllipsis: "Signing in\u2026",
|
|
551
|
+
switchProfile: "Switch profile"
|
|
545
552
|
};
|
|
546
553
|
|
|
547
554
|
// src/RedactoPrivacyCenter/locales/as/translation.json
|
|
@@ -955,7 +962,14 @@ var translation_default2 = {
|
|
|
955
962
|
submittingAs: "{{email}} \u09B9\u09BF\u099A\u09BE\u09AA\u09C7 \u09A6\u09BE\u0996\u09BF\u09B2 \u0995\u09F0\u09BF \u0986\u099B\u09C7",
|
|
956
963
|
tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09BF\u09AC\u09B2\u09C8 \u099F\u09BF\u09AA\u0995",
|
|
957
964
|
view: "\u099A\u09BE\u0993\u0995",
|
|
958
|
-
whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?"
|
|
965
|
+
whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?",
|
|
966
|
+
sessionExpiredTitle: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u099B\u09C7\u099A\u09A8 \u09B6\u09C7\u09B7 \u09B9\u09C8\u099B\u09C7",
|
|
967
|
+
sessionExpiredDescription: "\u0985\u09AC\u09CD\u09AF\u09BE\u09B9\u09A4 \u09F0\u09BE\u0996\u09BF\u09AC\u09B2\u09C8 \u0985\u09A8\u09C1\u0997\u09CD\u09F0\u09B9 \u0995\u09F0\u09BF \u09AA\u09C1\u09A8\u09F0 \u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09F0\u0995\u0964",
|
|
968
|
+
chooseYourProfile: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995",
|
|
969
|
+
loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u098F\u0995\u09BE\u09A7\u09BF\u0995 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2\u09F0 \u09B8\u09C8\u09A4\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4\u0964 \u0986\u09AA\u09C1\u09A8\u09BF \u099A\u09BE\u09AC \u09AC\u09BF\u099A\u09F0\u09BE\u099F\u09CB \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995\u0964",
|
|
970
|
+
userIdLabel: "\u09AC\u09CD\u09AF\u09F1\u09B9\u09BE\u09F0\u0995\u09BE\u09F0\u09C0 \u0986\u0987\u09A1\u09BF: {{id}}",
|
|
971
|
+
signingInEllipsis: "\u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u09C8 \u0986\u099B\u09C7\u2026",
|
|
972
|
+
switchProfile: "\u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09B8\u09B2\u09A8\u09BF \u0995\u09F0\u0995"
|
|
959
973
|
};
|
|
960
974
|
|
|
961
975
|
// src/RedactoPrivacyCenter/locales/bn/translation.json
|
|
@@ -1369,7 +1383,14 @@ var translation_default3 = {
|
|
|
1369
1383
|
submittingAs: "{{email}} \u09B9\u09BF\u09B8\u09BE\u09AC\u09C7 \u099C\u09AE\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7",
|
|
1370
1384
|
tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A4\u09C7 \u099F\u09CD\u09AF\u09BE\u09AA \u0995\u09B0\u09C1\u09A8",
|
|
1371
1385
|
view: "\u09A6\u09C7\u0996\u09C1\u09A8",
|
|
1372
|
-
whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?"
|
|
1386
|
+
whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?",
|
|
1387
|
+
sessionExpiredTitle: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09C7\u09B6\u09A8 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7 \u09B9\u09AF\u09BC\u09C7 \u0997\u09C7\u099B\u09C7",
|
|
1388
|
+
sessionExpiredDescription: "\u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09C7\u09A4\u09C7 \u0985\u09A8\u09C1\u0997\u09CD\u09B0\u09B9 \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
|
|
1389
|
+
chooseYourProfile: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8",
|
|
1390
|
+
loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u098F\u0995\u09BE\u09A7\u09BF\u0995 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2\u09C7\u09B0 \u09B8\u09BE\u09A5\u09C7 \u09AF\u09C1\u0995\u09CD\u09A4\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u099F\u09BF \u09A6\u09C7\u0996\u09A4\u09C7 \u099A\u09BE\u09A8 \u09B8\u09C7\u099F\u09BF \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8\u0964",
|
|
1391
|
+
userIdLabel: "\u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0 \u0986\u0987\u09A1\u09BF: {{id}}",
|
|
1392
|
+
signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u099A\u09CD\u099B\u09C7\u2026",
|
|
1393
|
+
switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8"
|
|
1373
1394
|
};
|
|
1374
1395
|
|
|
1375
1396
|
// src/RedactoPrivacyCenter/locales/brx/translation.json
|
|
@@ -1783,7 +1804,14 @@ var translation_default4 = {
|
|
|
1783
1804
|
submittingAs: "{{email}} \u092E\u0939\u0930\u0948 \u0917\u0925\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B",
|
|
1784
1805
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916\u0928\u094B \u091F\u0947\u092C \u0916\u093E\u0932\u093E\u092E",
|
|
1785
1806
|
view: "\u0928\u093E\u092F",
|
|
1786
|
-
whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?"
|
|
1807
|
+
whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?",
|
|
1808
|
+
sessionExpiredTitle: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u0938\u0947\u0938\u0928 \u091C\u094B\u092C\u092C\u093E\u092F",
|
|
1809
|
+
sessionExpiredDescription: "\u0938\u093E\u0932\u093E\u092F\u0928\u094B \u0925\u093E\u0916\u093E\u092F \u0905\u0928\u0928\u093E\u0928\u0948 \u092B\u093F\u0928 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0916\u093E\u0932\u093E\u092E\u0964",
|
|
1810
|
+
chooseYourProfile: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u092A\u094D\u0930\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916",
|
|
1811
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u092E\u094B\u0928\u0938\u0947\u0928\u093F\u0916\u094D\u0930\u0941\u0907 \u092C\u093E\u0902\u0938\u093F\u0928 \u092A\u094D\u0930\u092B\u093E\u0907\u0932\u091C\u094B\u0902 \u0928\u093E\u0902\u091C\u093E\u092C \u0926\u0902\u0964 \u0928\u094B\u0902\u0925\u093E\u0919\u093E \u0928\u093E\u092F\u0928\u094B \u0932\u0941\u092C\u0948\u092F\u094B\u092C\u094D\u0932\u093E \u092C\u0947\u0916\u094C \u0938\u093E\u092F\u0916\u0964",
|
|
1812
|
+
userIdLabel: "\u092F\u0942\u091C\u0930 \u0906\u0908\u0921\u0940: {{id}}",
|
|
1813
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B \u0926\u0902\u2026",
|
|
1814
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0938\u094B\u0932\u093E\u092F"
|
|
1787
1815
|
};
|
|
1788
1816
|
|
|
1789
1817
|
// src/RedactoPrivacyCenter/locales/doi/translation.json
|
|
@@ -2197,7 +2225,14 @@ var translation_default5 = {
|
|
|
2197
2225
|
submittingAs: "{{email}} \u0926\u0947 \u0930\u0942\u092A \u091A \u091C\u092E\u093E\u0902 \u0915\u0930\u0926\u0947",
|
|
2198
2226
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u091F\u0948\u092A \u0915\u0930\u094B",
|
|
2199
2227
|
view: "\u0926\u093F\u0915\u094D\u0916\u094B",
|
|
2200
|
-
whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?"
|
|
2228
|
+
whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?",
|
|
2229
|
+
sessionExpiredTitle: "\u0924\u0941\u0902\u0926\u093E \u0938\u0924\u094D\u0930 \u0916\u0924\u092E \u0939\u094B\u0908 \u0917\u0947\u0906 \u0910",
|
|
2230
|
+
sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u0915\u094D\u0916\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u0915\u0943\u092A\u093E \u0915\u0930\u093F\u092F\u0948 \u092B\u093F\u0930\u0940 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u094B\u0964",
|
|
2231
|
+
chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u094B",
|
|
2232
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u0907\u0915 \u0915\u094B\u0932\u093E \u092E\u0924\u093E \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0947\u0902 \u0915\u0928\u094D\u0928\u0948 \u091C\u0941\u0921\u093C\u094D\u092F\u093E \u0926\u093E \u0910\u0964 \u091C\u0947\u0939\u094D\u0921\u093C\u0940 \u0924\u0941\u0938\u0947\u0902 \u0926\u093F\u0915\u094D\u0916\u0928\u0940 \u0910 \u0913\u0939\u094D \u091A\u0941\u0928\u094B\u0964",
|
|
2233
|
+
userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
2234
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B\u0906 \u0915\u0930\u0926\u093E \u0910\u2026",
|
|
2235
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094B"
|
|
2201
2236
|
};
|
|
2202
2237
|
|
|
2203
2238
|
// src/RedactoPrivacyCenter/locales/gom/translation.json
|
|
@@ -2611,7 +2646,14 @@ var translation_default6 = {
|
|
|
2611
2646
|
submittingAs: "{{email}} \u092E\u094D\u0939\u0942\u0923 \u0938\u093E\u0926\u0930 \u0915\u0930\u0924\u093E",
|
|
2612
2647
|
tapToChooseFile: "\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u092A\u093E\u0915 \u091F\u0945\u092A \u0915\u0930\u093E\u0924",
|
|
2613
2648
|
view: "\u092A\u0933\u092F\u093E\u0924",
|
|
2614
|
-
whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?"
|
|
2649
|
+
whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?",
|
|
2650
|
+
sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947\u0902 \u0938\u0924\u094D\u0930 \u0938\u094B\u0902\u092A\u0932\u093E\u0902",
|
|
2651
|
+
sessionExpiredDescription: "\u092B\u0941\u0921\u0947\u0902 \u0935\u091A\u092A\u093E\u0915 \u0909\u092A\u0915\u093E\u0930 \u0915\u0930\u0942\u0928 \u092A\u0930\u0924\u0942\u0928 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u093E\u0924.",
|
|
2652
|
+
chooseYourProfile: "\u0924\u0941\u092E\u091A\u0947\u0902 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u093E\u0924",
|
|
2653
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u092A\u0930\u0938 \u091A\u0921 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932\u093E\u0902\u0915 \u091C\u094B\u0921\u0932\u093E. \u0924\u0941\u092E\u0915\u093E\u0902 \u091C\u0947\u0902 \u092A\u0933\u094B\u0935\u092A\u093E\u0915 \u091C\u093E\u092F \u0924\u0947\u0902 \u0928\u093F\u0935\u0921\u093E\u0924.",
|
|
2654
|
+
userIdLabel: "\u0935\u093E\u092A\u0930\u092A\u0940 \u0906\u092F\u0921\u0940: {{id}}",
|
|
2655
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u0935\u0928 \u0906\u0938\u093E\u2026",
|
|
2656
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u092C\u0926\u0932\u093E"
|
|
2615
2657
|
};
|
|
2616
2658
|
|
|
2617
2659
|
// src/RedactoPrivacyCenter/locales/gu/translation.json
|
|
@@ -3025,7 +3067,14 @@ var translation_default7 = {
|
|
|
3025
3067
|
submittingAs: "{{email}} \u0AA4\u0AB0\u0AC0\u0A95\u0AC7 \u0AB8\u0AAC\u0AAE\u0ABF\u0A9F \u0A95\u0AB0\u0AC0 \u0AB0\u0AB9\u0ACD\u0AAF\u0ABE \u0A9B\u0ACB",
|
|
3026
3068
|
tapToChooseFile: "\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0AB5\u0ABE \u0A9F\u0AC5\u0AAA \u0A95\u0AB0\u0ACB",
|
|
3027
3069
|
view: "\u0A9C\u0AC1\u0A93",
|
|
3028
|
-
whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?"
|
|
3070
|
+
whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?",
|
|
3071
|
+
sessionExpiredTitle: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC1\u0A82 \u0AB8\u0AA4\u0ACD\u0AB0 \u0AB8\u0AAE\u0ABE\u0AAA\u0ACD\u0AA4 \u0AA5\u0A88 \u0A97\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7",
|
|
3072
|
+
sessionExpiredDescription: "\u0A9A\u0ABE\u0AB2\u0AC1 \u0AB0\u0ABE\u0A96\u0AB5\u0ABE \u0AAE\u0ABE\u0A9F\u0AC7 \u0A95\u0AC3\u0AAA\u0ABE \u0A95\u0AB0\u0AC0\u0AA8\u0AC7 \u0AAB\u0AB0\u0AC0\u0AA5\u0AC0 \u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0A95\u0AB0\u0ACB.",
|
|
3073
|
+
chooseYourProfile: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC0 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB",
|
|
3074
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0AB2\u0ACB\u0A97\u0ABF\u0AA8 \u0A86\u0A88\u0AA1\u0AC0 \u0A8F\u0A95 \u0A95\u0AB0\u0AA4\u0ABE\u0A82 \u0AB5\u0AA7\u0AC1 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AB8\u0ABE\u0AA5\u0AC7 \u0A9C\u0ACB\u0AA1\u0ABE\u0AAF\u0AC7\u0AB2 \u0A9B\u0AC7. \u0AA4\u0AAE\u0AC7 \u0A9C\u0AC7 \u0A9C\u0ACB\u0AB5\u0ABE \u0AAE\u0ABE\u0A82\u0A97\u0ACB \u0A9B\u0ACB \u0AA4\u0AC7 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB.",
|
|
3075
|
+
userIdLabel: "\u0AB5\u0AAA\u0AB0\u0ABE\u0AB6\u0A95\u0AB0\u0ACD\u0AA4\u0ABE \u0A86\u0A88\u0AA1\u0AC0: {{id}}",
|
|
3076
|
+
signingInEllipsis: "\u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0AA5\u0A88 \u0AB0\u0AB9\u0ACD\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7\u2026",
|
|
3077
|
+
switchProfile: "\u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAC\u0AA6\u0AB2\u0ACB"
|
|
3029
3078
|
};
|
|
3030
3079
|
|
|
3031
3080
|
// src/RedactoPrivacyCenter/locales/hi/translation.json
|
|
@@ -3439,7 +3488,14 @@ var translation_default8 = {
|
|
|
3439
3488
|
submittingAs: "{{email}} \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u092C\u092E\u093F\u091F \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
|
|
3440
3489
|
tapToChooseFile: "\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091F\u0948\u092A \u0915\u0930\u0947\u0902",
|
|
3441
3490
|
view: "\u0926\u0947\u0916\u0947\u0902",
|
|
3442
|
-
whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?"
|
|
3491
|
+
whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?",
|
|
3492
|
+
sessionExpiredTitle: "\u0906\u092A\u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E \u0939\u0948",
|
|
3493
|
+
sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u0943\u092A\u092F\u093E \u092B\u093F\u0930 \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902\u0964",
|
|
3494
|
+
chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0947\u0902",
|
|
3495
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u090F\u0915 \u0938\u0947 \u0905\u0927\u093F\u0915 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u0938\u0947 \u091C\u0941\u0921\u093C\u093E \u0939\u0948\u0964 \u091C\u093F\u0938\u0947 \u0906\u092A \u0926\u0947\u0916\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902 \u0909\u0938\u0947 \u091A\u0941\u0928\u0947\u0902\u0964",
|
|
3496
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
3497
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
|
|
3498
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u092C\u0926\u0932\u0947\u0902"
|
|
3443
3499
|
};
|
|
3444
3500
|
|
|
3445
3501
|
// src/RedactoPrivacyCenter/locales/kn/translation.json
|
|
@@ -3853,7 +3909,14 @@ var translation_default9 = {
|
|
|
3853
3909
|
submittingAs: "{{email}} \u0C86\u0C97\u0CBF \u0CB8\u0CB2\u0CCD\u0CB2\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6",
|
|
3854
3910
|
tapToChooseFile: "\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CB2\u0CC1 \u0C9F\u0CCD\u0CAF\u0CBE\u0CAA\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF",
|
|
3855
3911
|
view: "\u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CBF",
|
|
3856
|
-
whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?"
|
|
3912
|
+
whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?",
|
|
3913
|
+
sessionExpiredTitle: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CB8\u0CC6\u0CB7\u0CA8\u0CCD \u0C85\u0CB5\u0CA7\u0CBF \u0CAE\u0CC1\u0C97\u0CBF\u0CA6\u0CBF\u0CA6\u0CC6",
|
|
3914
|
+
sessionExpiredDescription: "\u0CAE\u0CC1\u0C82\u0CA6\u0CC1\u0CB5\u0CB0\u0CBF\u0CB8\u0CB2\u0CC1 \u0CA6\u0CAF\u0CB5\u0CBF\u0C9F\u0CCD\u0C9F\u0CC1 \u0CAE\u0CA4\u0CCD\u0CA4\u0CC6 \u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF.",
|
|
3915
|
+
chooseYourProfile: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF",
|
|
3916
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0CB2\u0CBE\u0C97\u0CBF\u0CA8\u0CCD \u0C90\u0CA1\u0CBF \u0C92\u0C82\u0CA6\u0C95\u0CCD\u0C95\u0CBF\u0C82\u0CA4 \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1 \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CBF\u0C97\u0CC6 \u0CB2\u0CBF\u0C82\u0C95\u0CCD \u0C86\u0C97\u0CBF\u0CA6\u0CC6. \u0CA8\u0CC0\u0CB5\u0CC1 \u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CC1 \u0CAC\u0CAF\u0CB8\u0CC1\u0CB5\u0CC1\u0CA6\u0CA8\u0CCD\u0CA8\u0CC1 \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF.",
|
|
3917
|
+
userIdLabel: "\u0CAC\u0CB3\u0C95\u0CC6\u0CA6\u0CBE\u0CB0 \u0C90\u0CA1\u0CBF: {{id}}",
|
|
3918
|
+
signingInEllipsis: "\u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0C86\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6\u2026",
|
|
3919
|
+
switchProfile: "\u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0CAC\u0CA6\u0CB2\u0CBE\u0CAF\u0CBF\u0CB8\u0CBF"
|
|
3857
3920
|
};
|
|
3858
3921
|
|
|
3859
3922
|
// src/RedactoPrivacyCenter/locales/ks/translation.json
|
|
@@ -4267,7 +4330,14 @@ var translation_default10 = {
|
|
|
4267
4330
|
submittingAs: "{{email}} \u067E\u0620\u0658\u0679\u06BE \u062C\u0645\u0639 \u06A9\u0631\u0627\u0646",
|
|
4268
4331
|
tapToChooseFile: "\u0641\u0627\u06CC\u0644 \u0698\u0627\u0631\u0646\u06C1 \u062E\u0672\u0637\u0631\u0655 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u0648",
|
|
4269
4332
|
view: "\u0648\u064F\u0686\u06BE\u0650\u0648",
|
|
4270
|
-
whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F"
|
|
4333
|
+
whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F",
|
|
4334
|
+
sessionExpiredTitle: "\u062A\u064F\u06C1\u0646\u065B\u062F \u0633\u06CC\u0634\u064E\u0646 \u062E\u062A\u0645 \u06AF\u06C4\u0645\u064F\u062A",
|
|
4335
|
+
sessionExpiredDescription: "\u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06C1\u0655 \u062E\u0672\u0637\u0631\u0655 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u06A9\u0631\u0650\u062A\u06BE \u062F\u0648\u0628\u0627\u0631\u0655 \u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06A9\u0631\u06CC\u0648\u06D4",
|
|
4336
|
+
chooseYourProfile: "\u067E\u0646\u0646\u06C1\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0698\u0627\u0631\u0655\u0648",
|
|
4337
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0650\u0646 \u0622\u0626\u06CC \u0688\u06CC \u0686\u06BE\u064F \u0627\u06A9\u06C1 \u06A9\u06BE\u06C4\u062A\u06C1 \u0632\u06CC\u0627\u062F\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0646 \u0633\u065F\u062A\u0620 \u062C\u0648\u0691\u0646\u06C1 \u0622\u0645\u064F\u062A\u06D4 \u06CC\u064F\u0633 \u062A\u0648\u06C1\u06C1\u0650 \u0648\u064F\u0686\u06BE\u064F\u0646 \u0686\u06BE\u0650\u0648 \u06CC\u0698\u06BE\u0627\u0646 \u0633\u064F \u0698\u0627\u0631\u0655\u0648\u06D4",
|
|
4338
|
+
userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
|
|
4339
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06AF\u0698\u06BE\u0627\u0646 \u0686\u06BE\u064F\u2026",
|
|
4340
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0628\u062F\u0644\u0627\u0648"
|
|
4271
4341
|
};
|
|
4272
4342
|
|
|
4273
4343
|
// src/RedactoPrivacyCenter/locales/mai/translation.json
|
|
@@ -4681,7 +4751,14 @@ var translation_default11 = {
|
|
|
4681
4751
|
submittingAs: "{{email}} \u0930\u0942\u092A\u092E\u0947 \u091C\u092E\u093E \u0915\u093D \u0930\u0939\u0932 \u091B\u0940",
|
|
4682
4752
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u092C\u093E\u0915 \u0932\u0947\u0932 \u091F\u0948\u092A \u0915\u0930\u0942",
|
|
4683
4753
|
view: "\u0926\u0947\u0916\u0942",
|
|
4684
|
-
whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?"
|
|
4754
|
+
whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?",
|
|
4755
|
+
sessionExpiredTitle: "\u0905\u0939\u093E\u0901\u0915 \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u093D \u0917\u0947\u0932 \u0905\u091B\u093F",
|
|
4756
|
+
sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u093E\u0916\u092C\u093E\u0915 \u0932\u0947\u0932 \u0915\u0943\u092A\u092F\u093E \u092B\u0947\u0930 \u0938\u0901 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0942\u0964",
|
|
4757
|
+
chooseYourProfile: "\u0905\u092A\u0928 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0942",
|
|
4758
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0907\u0921\u0940 \u090F\u0915\u093E\u0927\u093F\u0915 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0938\u0901 \u091C\u0941\u0921\u093C\u0932 \u0905\u091B\u093F\u0964 \u091C\u0947 \u0905\u0939\u093E\u0901 \u0926\u0947\u0916\u092F \u091A\u093E\u0939\u0948\u0924 \u091B\u0940 \u0913\u0915\u0930\u093E \u091A\u0941\u0928\u0942\u0964",
|
|
4759
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0907\u0921\u0940: {{id}}",
|
|
4760
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u092D' \u0930\u0939\u0932 \u0905\u091B\u093F\u2026",
|
|
4761
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u0942"
|
|
4685
4762
|
};
|
|
4686
4763
|
|
|
4687
4764
|
// src/RedactoPrivacyCenter/locales/ml/translation.json
|
|
@@ -5095,7 +5172,14 @@ var translation_default12 = {
|
|
|
5095
5172
|
submittingAs: "{{email}} \u0D06\u0D2F\u0D3F \u0D38\u0D2E\u0D7C\u0D2A\u0D4D\u0D2A\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41",
|
|
5096
5173
|
tapToChooseFile: "\u0D2B\u0D2F\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D3E\u0D7B \u0D1F\u0D3E\u0D2A\u0D4D\u0D2A\u0D4D \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15",
|
|
5097
5174
|
view: "\u0D15\u0D3E\u0D23\u0D41\u0D15",
|
|
5098
|
-
whatDoYouNeed: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E\u0D15\u0D4D\u0D15\u0D4D \u0D0E\u0D28\u0D4D\u0D24\u0D3E\u0D23\u0D4D \u0D35\u0D47\u0D23\u0D4D\u0D1F\u0D24\u0D4D?"
|
|
5175
|
+
whatDoYouNeed: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E\u0D15\u0D4D\u0D15\u0D4D \u0D0E\u0D28\u0D4D\u0D24\u0D3E\u0D23\u0D4D \u0D35\u0D47\u0D23\u0D4D\u0D1F\u0D24\u0D4D?",
|
|
5176
|
+
sessionExpiredTitle: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D33\u0D41\u0D1F\u0D46 \u0D38\u0D46\u0D37\u0D7B \u0D15\u0D3E\u0D32\u0D39\u0D30\u0D23\u0D2A\u0D4D\u0D2A\u0D46\u0D1F\u0D4D\u0D1F\u0D41",
|
|
5177
|
+
sessionExpiredDescription: "\u0D24\u0D41\u0D1F\u0D30\u0D3E\u0D7B \u0D26\u0D2F\u0D35\u0D3E\u0D2F\u0D3F \u0D35\u0D40\u0D23\u0D4D\u0D1F\u0D41\u0D02 \u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15.",
|
|
5178
|
+
chooseYourProfile: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D33\u0D41\u0D1F\u0D46 \u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15",
|
|
5179
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0D32\u0D4B\u0D17\u0D3F\u0D7B \u0D10\u0D21\u0D3F \u0D12\u0D28\u0D4D\u0D28\u0D3F\u0D32\u0D27\u0D3F\u0D15\u0D02 \u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D32\u0D41\u0D15\u0D33\u0D41\u0D2E\u0D3E\u0D2F\u0D3F \u0D2C\u0D28\u0D4D\u0D27\u0D3F\u0D2A\u0D4D\u0D2A\u0D3F\u0D1A\u0D4D\u0D1A\u0D3F\u0D30\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41. \u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E \u0D15\u0D3E\u0D23\u0D3E\u0D7B \u0D06\u0D17\u0D4D\u0D30\u0D39\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D24\u0D4D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15.",
|
|
5180
|
+
userIdLabel: "\u0D09\u0D2A\u0D2F\u0D4B\u0D15\u0D4D\u0D24\u0D43 \u0D10\u0D21\u0D3F: {{id}}",
|
|
5181
|
+
signingInEllipsis: "\u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D28\u0D4D\u0D28\u0D41\u2026",
|
|
5182
|
+
switchProfile: "\u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D2E\u0D3E\u0D31\u0D4D\u0D31\u0D41\u0D15"
|
|
5099
5183
|
};
|
|
5100
5184
|
|
|
5101
5185
|
// src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json
|
|
@@ -5509,7 +5593,14 @@ var translation_default13 = {
|
|
|
5509
5593
|
submittingAs: "{{email}} \uABD1\uABE3\uABCF\uABC5 \uABCA\uABE5\uABD2\uABE0\uABC2\uABE4",
|
|
5510
5594
|
tapToChooseFile: "\uABD0\uABE5\uABCF\uABDC \uABC8\uABDF\uABC5\uABD5 \uABC7\uABE6\uABDE \uABC7\uABE7",
|
|
5511
5595
|
view: "\uABCC\uABE6\uABE1\uABCE",
|
|
5512
|
-
whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?"
|
|
5596
|
+
whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?",
|
|
5597
|
+
sessionExpiredTitle: "\uABD1\uABD7\uABE3\uABDD\uABD2\uABE4 \uABC1\uABE6\uABC1\uABDF \uABC2\uABE3\uABCF\uABD4\uABE6",
|
|
5598
|
+
sessionExpiredDescription: "\uABC3\uABC8\uABE5 \uABC6\uABE0\uABCA\uABD4\uABDB\uABC5\uABD5 \uABC6\uABE5\uABC5\uABD5\uABE4\uABD7\uABE8\uABC5 \uABD1\uABC3\uABE8\uABDB \uABCD\uABDF\uABC5 \uABC1\uABE5\uABCF\uABDF \uABCF\uABDF \uABC7\uABE7\uABD5\uABE4\uABCC\uABE8\uABEB",
|
|
5599
|
+
chooseYourProfile: "\u09A8\u09B9\u09BE\u0995\u09CD\u0995\u09C0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1",
|
|
5600
|
+
loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u0985\u09B8\u09BF \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0985\u09AE\u09A6\u0997\u09C0 \u09B9\u09C7\u09A8\u09CD\u09A8\u09BE \u09B2\u09CB\u0987\u09A8\u09A8\u09AC\u09BE \u09B2\u09C8\u0964 \u09A8\u09B9\u09BE\u0995\u09CD\u09A8\u09BE \u09AF\u09BC\u09C7\u0982\u09A8\u09BF\u0982\u09AC\u09BE \u0985\u09A6\u09C1 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1\u0964",
|
|
5601
|
+
userIdLabel: "\uABC3\uABE4\uABD1\uABE3\uABCF\uABD5 \uABD1\uABE5\uABCF\uABD7\uABE4: {{id}}",
|
|
5602
|
+
signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09A4\u09CC\u09B0\u09BF\u2026",
|
|
5603
|
+
switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09B9\u09CB\u0982\u09A6\u09CB\u0995-\u0989"
|
|
5513
5604
|
};
|
|
5514
5605
|
|
|
5515
5606
|
// src/RedactoPrivacyCenter/locales/mr/translation.json
|
|
@@ -5923,7 +6014,14 @@ var translation_default14 = {
|
|
|
5923
6014
|
submittingAs: "{{email}} \u092E\u094D\u0939\u0923\u0942\u0928 \u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0924 \u0906\u0939\u0947",
|
|
5924
6015
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u091F\u0945\u092A \u0915\u0930\u093E",
|
|
5925
6016
|
view: "\u092A\u0939\u093E",
|
|
5926
|
-
whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?"
|
|
6017
|
+
whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?",
|
|
6018
|
+
sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947 \u0938\u0924\u094D\u0930 \u0938\u0902\u092A\u0932\u0947 \u0906\u0939\u0947",
|
|
6019
|
+
sessionExpiredDescription: "\u0938\u0941\u0930\u0942 \u0920\u0947\u0935\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u0915\u0943\u092A\u092F\u093E \u092A\u0941\u0928\u094D\u0939\u093E \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u093E.",
|
|
6020
|
+
chooseYourProfile: "\u0924\u0941\u092E\u091A\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u093E",
|
|
6021
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u092A\u0947\u0915\u094D\u0937\u093E \u091C\u093E\u0938\u094D\u0924 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0936\u0940 \u091C\u094B\u0921\u0932\u0947\u0932\u093E \u0906\u0939\u0947. \u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u091C\u0940 \u092A\u093E\u0939\u093E\u092F\u091A\u0940 \u0906\u0939\u0947 \u0924\u0940 \u0928\u093F\u0935\u0921\u093E.",
|
|
6022
|
+
userIdLabel: "\u0935\u093E\u092A\u0930\u0915\u0930\u094D\u0924\u093E \u0906\u092F\u0921\u0940: {{id}}",
|
|
6023
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0924 \u0906\u0939\u0947\u2026",
|
|
6024
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u093E"
|
|
5927
6025
|
};
|
|
5928
6026
|
|
|
5929
6027
|
// src/RedactoPrivacyCenter/locales/ne/translation.json
|
|
@@ -6337,7 +6435,14 @@ var translation_default15 = {
|
|
|
6337
6435
|
submittingAs: "{{email}} \u0915\u094B \u0930\u0942\u092A\u092E\u093E \u092A\u0947\u0936 \u0917\u0930\u094D\u0926\u0948",
|
|
6338
6436
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928 \u091F\u094D\u092F\u093E\u092A \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6339
6437
|
view: "\u0939\u0947\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6340
|
-
whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?"
|
|
6438
|
+
whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?",
|
|
6439
|
+
sessionExpiredTitle: "\u0924\u092A\u093E\u0908\u0902\u0915\u094B \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u090F\u0915\u094B \u091B",
|
|
6440
|
+
sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u093E\u0916\u094D\u0928 \u0915\u0943\u092A\u092F\u093E \u092B\u0947\u0930\u093F \u0938\u093E\u0907\u0928 \u0907\u0928 \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D\u0964",
|
|
6441
|
+
chooseYourProfile: "\u0906\u092B\u094D\u0928\u094B \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6442
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0932\u0917\u0907\u0928 \u0906\u0908\u0921\u0940 \u090F\u0915\u092D\u0928\u094D\u0926\u093E \u092C\u0922\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0938\u0901\u0917 \u091C\u094B\u0921\u093F\u090F\u0915\u094B \u091B\u0964 \u0924\u092A\u093E\u0908\u0902\u0932\u0947 \u0939\u0947\u0930\u094D\u0928 \u091A\u093E\u0939\u0928\u0941\u092D\u090F\u0915\u094B \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D\u0964",
|
|
6443
|
+
userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
6444
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u0941\u0901\u0926\u0948\u091B\u2026",
|
|
6445
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094D\u0928\u0941\u0939\u094B\u0938\u094D"
|
|
6341
6446
|
};
|
|
6342
6447
|
|
|
6343
6448
|
// src/RedactoPrivacyCenter/locales/or/translation.json
|
|
@@ -6751,7 +6856,14 @@ var translation_default16 = {
|
|
|
6751
6856
|
submittingAs: "{{email}} \u0B2D\u0B3E\u0B2C\u0B47 \u0B26\u0B3E\u0B16\u0B32 \u0B15\u0B30\u0B41\u0B1B\u0B28\u0B4D\u0B24\u0B3F",
|
|
6752
6857
|
tapToChooseFile: "\u0B2B\u0B3E\u0B07\u0B32 \u0B2C\u0B3E\u0B1B\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1F\u0B4D\u0B5F\u0B3E\u0B2A \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41",
|
|
6753
6858
|
view: "\u0B26\u0B47\u0B16\u0B28\u0B4D\u0B24\u0B41",
|
|
6754
|
-
whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?"
|
|
6859
|
+
whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?",
|
|
6860
|
+
sessionExpiredTitle: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B38\u0B47\u0B38\u0B28\u0B4D \u0B38\u0B2E\u0B3E\u0B2A\u0B4D\u0B24 \u0B39\u0B4B\u0B07\u0B2F\u0B3E\u0B07\u0B1B\u0B3F",
|
|
6861
|
+
sessionExpiredDescription: "\u0B1C\u0B3E\u0B30\u0B3F \u0B30\u0B16\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B26\u0B5F\u0B3E\u0B15\u0B30\u0B3F \u0B2A\u0B41\u0B28\u0B30\u0B4D\u0B2C\u0B3E\u0B30 \u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41\u0964",
|
|
6862
|
+
chooseYourProfile: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41",
|
|
6863
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0B32\u0B17\u0B07\u0B28\u0B4D \u0B06\u0B07\u0B21\u0B3F \u0B0F\u0B15\u0B3E\u0B27\u0B3F\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B38\u0B39\u0B3F\u0B24 \u0B2F\u0B4B\u0B21\u0B3C\u0B3E\u0B2F\u0B3E\u0B07\u0B1B\u0B3F\u0964 \u0B06\u0B2A\u0B23 \u0B26\u0B47\u0B16\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1A\u0B3E\u0B39\u0B41\u0B01\u0B25\u0B3F\u0B2C\u0B3E\u0B1F\u0B3F \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41\u0964",
|
|
6864
|
+
userIdLabel: "\u0B2C\u0B4D\u0B5F\u0B2C\u0B39\u0B3E\u0B30\u0B15\u0B3E\u0B30\u0B40 \u0B06\u0B07\u0B21\u0B3F: {{id}}",
|
|
6865
|
+
signingInEllipsis: "\u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B39\u0B47\u0B09\u0B1B\u0B3F\u2026",
|
|
6866
|
+
switchProfile: "\u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B26\u0B33\u0B3E\u0B28\u0B4D\u0B24\u0B41"
|
|
6755
6867
|
};
|
|
6756
6868
|
|
|
6757
6869
|
// src/RedactoPrivacyCenter/locales/pa/translation.json
|
|
@@ -7165,7 +7277,14 @@ var translation_default17 = {
|
|
|
7165
7277
|
submittingAs: "{{email}} \u0A35\u0A1C\u0A4B\u0A02 \u0A38\u0A2C\u0A2E\u0A3F\u0A1F \u0A15\u0A30 \u0A30\u0A39\u0A47 \u0A39\u0A4B",
|
|
7166
7278
|
tapToChooseFile: "\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A28 \u0A32\u0A08 \u0A1F\u0A48\u0A2A \u0A15\u0A30\u0A4B",
|
|
7167
7279
|
view: "\u0A26\u0A47\u0A16\u0A4B",
|
|
7168
|
-
whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?"
|
|
7280
|
+
whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?",
|
|
7281
|
+
sessionExpiredTitle: "\u0A24\u0A41\u0A39\u0A3E\u0A21\u0A3E \u0A38\u0A48\u0A38\u0A3C\u0A28 \u0A38\u0A2E\u0A3E\u0A2A\u0A24 \u0A39\u0A4B \u0A17\u0A3F\u0A06 \u0A39\u0A48",
|
|
7282
|
+
sessionExpiredDescription: "\u0A1C\u0A3E\u0A30\u0A40 \u0A30\u0A71\u0A16\u0A23 \u0A32\u0A08 \u0A15\u0A3F\u0A30\u0A2A\u0A3E \u0A15\u0A30\u0A15\u0A47 \u0A26\u0A41\u0A2C\u0A3E\u0A30\u0A3E \u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A15\u0A30\u0A4B\u0964",
|
|
7283
|
+
chooseYourProfile: "\u0A06\u0A2A\u0A23\u0A40 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A4B",
|
|
7284
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0A32\u0A4C\u0A17\u0A07\u0A28 \u0A06\u0A08\u0A21\u0A40 \u0A07\u0A71\u0A15 \u0A24\u0A4B\u0A02 \u0A35\u0A71\u0A27 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32\u0A3E\u0A02 \u0A28\u0A3E\u0A32 \u0A1C\u0A41\u0A5C\u0A3F\u0A06 \u0A39\u0A4B\u0A07\u0A06 \u0A39\u0A48\u0964 \u0A1C\u0A4B \u0A24\u0A41\u0A38\u0A40\u0A02 \u0A35\u0A47\u0A16\u0A23\u0A3E \u0A1A\u0A3E\u0A39\u0A41\u0A70\u0A26\u0A47 \u0A39\u0A4B \u0A09\u0A39 \u0A1A\u0A41\u0A23\u0A4B\u0964",
|
|
7285
|
+
userIdLabel: "\u0A09\u0A2A\u0A2F\u0A4B\u0A17\u0A15\u0A30\u0A24\u0A3E \u0A06\u0A08\u0A21\u0A40: {{id}}",
|
|
7286
|
+
signingInEllipsis: "\u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A39\u0A4B \u0A30\u0A3F\u0A39\u0A3E \u0A39\u0A48\u2026",
|
|
7287
|
+
switchProfile: "\u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A2C\u0A26\u0A32\u0A4B"
|
|
7169
7288
|
};
|
|
7170
7289
|
|
|
7171
7290
|
// src/RedactoPrivacyCenter/locales/sa/translation.json
|
|
@@ -7579,7 +7698,14 @@ var translation_default18 = {
|
|
|
7579
7698
|
submittingAs: "{{email}} \u0907\u0924\u093F \u0938\u092E\u0930\u094D\u092A\u092F\u0928\u094D",
|
|
7580
7699
|
tapToChooseFile: "\u0938\u091E\u094D\u091A\u093F\u0915\u093E\u0902 \u091A\u0947\u0924\u0941\u0902 \u0938\u094D\u092A\u0943\u0936\u0924\u0941",
|
|
7581
7700
|
view: "\u092A\u0936\u094D\u092F",
|
|
7582
|
-
whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?"
|
|
7701
|
+
whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?",
|
|
7702
|
+
sessionExpiredTitle: "\u092D\u0935\u0924\u0903 \u0938\u0924\u094D\u0930\u0902 \u0938\u092E\u093E\u092A\u094D\u0924\u092E\u094D",
|
|
7703
|
+
sessionExpiredDescription: "\u0905\u0928\u0941\u0935\u0930\u094D\u0924\u0928\u093E\u0930\u094D\u0925\u0902 \u0915\u0943\u092A\u092F\u093E \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u0935\u0947\u0936\u0902 \u0915\u0930\u094B\u0924\u0941\u0964",
|
|
7704
|
+
chooseYourProfile: "\u0938\u094D\u0935\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u091A\u093F\u0928\u094B\u0924\u0941",
|
|
7705
|
+
loginIdentifierLinkedToMultipleProfiles: "\u092A\u094D\u0930\u0935\u0947\u0936-\u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u0927\u093F\u0915\u0948\u0903 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0948\u0903 \u0938\u0939 \u0938\u092E\u094D\u092C\u0926\u094D\u0927\u0903 \u0905\u0938\u094D\u0924\u093F\u0964 \u092F\u0924\u094D \u0926\u094D\u0930\u0937\u094D\u091F\u0941\u092E\u094D \u0907\u091A\u094D\u091B\u0924\u093F \u0924\u0924\u094D \u091A\u093F\u0928\u094B\u0924\u0941\u0964",
|
|
7706
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0915\u094D\u0924\u0943-\u0906\u092F\u0921\u0940: {{id}}",
|
|
7707
|
+
signingInEllipsis: "\u092A\u094D\u0930\u0935\u0947\u0936\u0903 \u0915\u094D\u0930\u093F\u092F\u0924\u0947\u2026",
|
|
7708
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u092F\u0924\u0941"
|
|
7583
7709
|
};
|
|
7584
7710
|
|
|
7585
7711
|
// src/RedactoPrivacyCenter/locales/sat/translation.json
|
|
@@ -7993,7 +8119,14 @@ var translation_default19 = {
|
|
|
7993
8119
|
submittingAs: "{{email}} \u1C5E\u1C6E\u1C60\u1C5F\u1C5B\u1C6E \u1C61\u1C5A\u1C62\u1C5F \u1C6E\u1C6B\u1C5F",
|
|
7994
8120
|
tapToChooseFile: "\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C74\u1C6E\u1C6F \u1C62\u1C6E",
|
|
7995
8121
|
view: "\u1C67\u1C6E\u1C5E \u1C62\u1C6E",
|
|
7996
|
-
whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?"
|
|
8122
|
+
whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?",
|
|
8123
|
+
sessionExpiredTitle: "\u1C5F\u1C62\u1C5F\u1C5C \u1C65\u1C6E\u1C65\u1C5A\u1C71 \u1C62\u1C69\u1C6A\u1C5F\u1C79\u1C6B\u1C6E\u1C71\u1C5F",
|
|
8124
|
+
sessionExpiredDescription: "\u1C5E\u1C5F\u1C66\u1C5F \u1C6A\u1C5F\u1C5E\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C6B\u1C5F\u1C6D\u1C5F \u1C60\u1C5F\u1C5B\u1C6E \u1C6B\u1C73\u1C66\u1C72\u1C5F \u1C65\u1C5F\u1C6D\u1C71 \u1C64\u1C71 \u1C62\u1C6E\u1C7E",
|
|
8125
|
+
chooseYourProfile: "\u1C5F\u1C62\u1C5F\u1C5C \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E",
|
|
8126
|
+
loginIdentifierLinkedToMultipleProfiles: "\u1C5E\u1C5A\u1C5C\u1C64\u1C71 \u1C5F\u1C6D\u1C70\u1C64 \u1C6B\u1C5A \u1C62\u1C64\u1C6B \u1C60\u1C77\u1C5A\u1C71 \u1C70\u1C77\u1C6E\u1C68 \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C65\u1C5F\u1C76 \u1C61\u1C69\u1C70\u1C5F\u1C79\u1C63 \u1C5F\u1C60\u1C5F\u1C71\u1C5F\u1C7E \u1C5F\u1C62 \u1C67\u1C6E\u1C5E \u1C65\u1C5F\u1C71\u1C5F\u1C62 \u1C5A\u1C71\u1C5F \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E\u1C7E",
|
|
8127
|
+
userIdLabel: "\u1C75\u1C6E\u1C75\u1C77\u1C5F\u1C68\u1C64\u1C6D\u1C5F\u1C79 \u1C5F\u1C6D\u1C70\u1C64: {{id}}",
|
|
8128
|
+
signingInEllipsis: "\u1C65\u1C5F\u1C6D\u1C64\u1C71 \u1C64\u1C71 \u1C6E\u1C6B\u1C5F\u1C6D\u2026",
|
|
8129
|
+
switchProfile: "\u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5A\u1C6B\u1C5A\u1C5E \u1C62\u1C6E"
|
|
7997
8130
|
};
|
|
7998
8131
|
|
|
7999
8132
|
// src/RedactoPrivacyCenter/locales/sd/translation.json
|
|
@@ -8407,7 +8540,14 @@ var translation_default20 = {
|
|
|
8407
8540
|
submittingAs: "{{email}} \u0637\u0648\u0631 \u062C\u0645\u0639 \u06AA\u0631\u064A \u0631\u0647\u064A\u0627 \u0622\u0647\u064A\u0648",
|
|
8408
8541
|
tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u06BB \u0644\u0627\u0621\u0650 \u067D\u064A\u067E \u06AA\u0631\u064A\u0648",
|
|
8409
8542
|
view: "\u068F\u0633\u0648",
|
|
8410
|
-
whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F"
|
|
8543
|
+
whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F",
|
|
8544
|
+
sessionExpiredTitle: "\u062A\u0648\u0647\u0627\u0646 \u062C\u0648 \u0633\u064A\u0634\u0646 \u062E\u062A\u0645 \u067F\u064A \u0648\u064A\u0648 \u0622\u0647\u064A",
|
|
8545
|
+
sessionExpiredDescription: "\u062C\u0627\u0631\u064A \u0631\u06A9\u06BB \u0644\u0627\u0621\u0650 \u0645\u0647\u0631\u0628\u0627\u0646\u064A \u06AA\u0631\u064A \u067B\u064A\u0647\u0631 \u0633\u0627\u0626\u0646 \u0627\u0646 \u06AA\u0631\u064A\u0648.",
|
|
8546
|
+
chooseYourProfile: "\u067E\u0646\u0647\u0646\u062C\u0648 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u064A\u0648",
|
|
8547
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0646 \u0622\u0626\u064A\u068A\u064A \u0647\u06AA \u06A9\u0627\u0646 \u0648\u068C\u064A\u06AA \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0646 \u0633\u0627\u0646 \u06B3\u0646\u068D\u064A\u0644 \u0622\u0647\u064A. \u062C\u064A\u06AA\u0648 \u062A\u0648\u0647\u0627\u0646 \u068F\u0633\u06BB \u0686\u0627\u0647\u064A\u0648 \u067F\u0627 \u0627\u0647\u0648 \u0686\u0648\u0646\u068A\u064A\u0648.",
|
|
8548
|
+
userIdLabel: "\u064A\u0648\u0632\u0631 \u0622\u0626\u064A\u068A\u064A: {{id}}",
|
|
8549
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u067F\u064A \u0631\u0647\u064A\u0648 \u0622\u0647\u064A\u2026",
|
|
8550
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u064A\u0644 \u06AA\u0631\u064A\u0648"
|
|
8411
8551
|
};
|
|
8412
8552
|
|
|
8413
8553
|
// src/RedactoPrivacyCenter/locales/ta/translation.json
|
|
@@ -8821,7 +8961,14 @@ var translation_default21 = {
|
|
|
8821
8961
|
submittingAs: "{{email}} \u0B86\u0B95 \u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BC0\u0BB0\u0BCD\u0B95\u0BB3\u0BCD",
|
|
8822
8962
|
tapToChooseFile: "\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95 \u0BA4\u0B9F\u0BCD\u0B9F\u0BB5\u0BC1\u0BAE\u0BCD",
|
|
8823
8963
|
view: "\u0BAA\u0BBE\u0BB0\u0BCD",
|
|
8824
|
-
whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?"
|
|
8964
|
+
whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?",
|
|
8965
|
+
sessionExpiredTitle: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B85\u0BAE\u0BB0\u0BCD\u0BB5\u0BC1 \u0B95\u0BBE\u0BB2\u0BBE\u0BB5\u0BA4\u0BBF\u0BAF\u0BBE\u0B95\u0BBF\u0BB5\u0BBF\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",
|
|
8966
|
+
sessionExpiredDescription: "\u0BA4\u0BCA\u0B9F\u0BB0\u0BCD\u0BB5\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BA4\u0BAF\u0BB5\u0BC1\u0B9A\u0BC6\u0BAF\u0BCD\u0BA4\u0BC1 \u0BAE\u0BC0\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD \u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0BAF\u0BB5\u0BC1\u0BAE\u0BCD.",
|
|
8967
|
+
chooseYourProfile: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD",
|
|
8968
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0BB5\u0BC1 \u0B90\u0B9F\u0BBF \u0B92\u0BA9\u0BCD\u0BB1\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0BAE\u0BC7\u0BB1\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F \u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B9F\u0BA9\u0BCD \u0B87\u0BA3\u0BC8\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BC1\u0BB3\u0BCD\u0BB3\u0BA4\u0BC1. \u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAE\u0BCD\u0BAA\u0BC1\u0BB5\u0BA4\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD.",
|
|
8969
|
+
userIdLabel: "\u0BAA\u0BAF\u0BA9\u0BB0\u0BCD \u0B90\u0B9F\u0BBF: {{id}}",
|
|
8970
|
+
signingInEllipsis: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",
|
|
8971
|
+
switchProfile: "\u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BC1"
|
|
8825
8972
|
};
|
|
8826
8973
|
|
|
8827
8974
|
// src/RedactoPrivacyCenter/locales/te/translation.json
|
|
@@ -9235,7 +9382,14 @@ var translation_default22 = {
|
|
|
9235
9382
|
submittingAs: "{{email}} \u0C17\u0C3E \u0C38\u0C2E\u0C30\u0C4D\u0C2A\u0C3F\u0C38\u0C4D\u0C24\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C30\u0C41",
|
|
9236
9383
|
tapToChooseFile: "\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C35\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C28\u0C4A\u0C15\u0C4D\u0C15\u0C02\u0C21\u0C3F",
|
|
9237
9384
|
view: "\u0C35\u0C40\u0C15\u0C4D\u0C37\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",
|
|
9238
|
-
whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?"
|
|
9385
|
+
whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?",
|
|
9386
|
+
sessionExpiredTitle: "\u0C2E\u0C40 \u0C38\u0C46\u0C37\u0C28\u0C4D \u0C17\u0C21\u0C41\u0C35\u0C41 \u0C2E\u0C41\u0C17\u0C3F\u0C38\u0C3F\u0C02\u0C26\u0C3F",
|
|
9387
|
+
sessionExpiredDescription: "\u0C15\u0C4A\u0C28\u0C38\u0C3E\u0C17\u0C3F\u0C02\u0C1A\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C26\u0C2F\u0C1A\u0C47\u0C38\u0C3F \u0C2E\u0C33\u0C4D\u0C32\u0C40 \u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F.",
|
|
9388
|
+
chooseYourProfile: "\u0C2E\u0C40 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",
|
|
9389
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0C32\u0C3E\u0C17\u0C3F\u0C28\u0C4D \u0C10\u0C21\u0C3F \u0C12\u0C15\u0C1F\u0C3F \u0C15\u0C02\u0C1F\u0C47 \u0C0E\u0C15\u0C4D\u0C15\u0C41\u0C35 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C24\u0C4B \u0C05\u0C28\u0C41\u0C38\u0C02\u0C27\u0C3E\u0C28\u0C3F\u0C02\u0C1A\u0C2C\u0C21\u0C3F\u0C02\u0C26\u0C3F. \u0C2E\u0C40\u0C30\u0C41 \u0C1A\u0C42\u0C21\u0C3E\u0C32\u0C28\u0C41\u0C15\u0C41\u0C02\u0C1F\u0C41\u0C28\u0C4D\u0C28\u0C26\u0C3E\u0C28\u0C4D\u0C28\u0C3F \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F.",
|
|
9390
|
+
userIdLabel: "\u0C35\u0C3F\u0C28\u0C3F\u0C2F\u0C4B\u0C17\u0C26\u0C3E\u0C30\u0C41 \u0C10\u0C21\u0C3F: {{id}}",
|
|
9391
|
+
signingInEllipsis: "\u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",
|
|
9392
|
+
switchProfile: "\u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C2E\u0C3E\u0C30\u0C4D\u0C1A\u0C02\u0C21\u0C3F"
|
|
9239
9393
|
};
|
|
9240
9394
|
|
|
9241
9395
|
// src/RedactoPrivacyCenter/locales/ur/translation.json
|
|
@@ -9649,7 +9803,14 @@ var translation_default23 = {
|
|
|
9649
9803
|
submittingAs: "{{email}} \u06A9\u06D2 \u0637\u0648\u0631 \u067E\u0631 \u062C\u0645\u0639 \u06A9\u0631 \u0631\u06C1\u06D2 \u06C1\u06CC\u06BA",
|
|
9650
9804
|
tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u06BA",
|
|
9651
9805
|
view: "\u062F\u06CC\u06A9\u06BE\u06CC\u06BA",
|
|
9652
|
-
whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F"
|
|
9806
|
+
whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F",
|
|
9807
|
+
sessionExpiredTitle: "\u0622\u067E \u06A9\u0627 \u0633\u06CC\u0634\u0646 \u062E\u062A\u0645 \u06C1\u0648 \u06AF\u06CC\u0627 \u06C1\u06D2",
|
|
9808
|
+
sessionExpiredDescription: "\u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0628\u0631\u0627\u06C1 \u06A9\u0631\u0645 \u062F\u0648\u0628\u0627\u0631\u06C1 \u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06A9\u0631\u06CC\u06BA\u06D4",
|
|
9809
|
+
chooseYourProfile: "\u0627\u067E\u0646\u06CC \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA",
|
|
9810
|
+
loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0646 \u0622\u0626\u06CC \u0688\u06CC \u0627\u06CC\u06A9 \u0633\u06D2 \u0632\u06CC\u0627\u062F\u06C1 \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u0633\u06D2 \u0645\u0646\u0633\u0644\u06A9 \u06C1\u06D2\u06D4 \u062C\u0633\u06D2 \u0622\u067E \u062F\u06CC\u06A9\u06BE\u0646\u0627 \u0686\u0627\u06C1\u062A\u06D2 \u06C1\u06CC\u06BA \u0627\u0633\u06D2 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA\u06D4",
|
|
9811
|
+
userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
|
|
9812
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u06C1\u0648 \u0631\u06C1\u0627 \u06C1\u06D2\u2026",
|
|
9813
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA"
|
|
9653
9814
|
};
|
|
9654
9815
|
|
|
9655
9816
|
// src/RedactoPrivacyCenter/lib/locales.ts
|
|
@@ -9863,7 +10024,57 @@ function useSafeInsets() {
|
|
|
9863
10024
|
// src/RedactoPrivacyCenter/context/BaseUrlContext.tsx
|
|
9864
10025
|
var import_react2 = require("react");
|
|
9865
10026
|
|
|
10027
|
+
// src/shared/sandbox.ts
|
|
10028
|
+
var SANDBOX_TOKEN_HEADER = "X-Consent-Token";
|
|
10029
|
+
|
|
10030
|
+
// src/RedactoPrivacyCenter/lib/sandbox.ts
|
|
10031
|
+
var sandboxConfig = null;
|
|
10032
|
+
var setSandboxConfig = (config) => {
|
|
10033
|
+
sandboxConfig = config;
|
|
10034
|
+
};
|
|
10035
|
+
var getSandboxConfig = () => sandboxConfig;
|
|
10036
|
+
var isSandboxMode = () => sandboxConfig !== null;
|
|
10037
|
+
var sandboxAuthHeaders = () => {
|
|
10038
|
+
if (!sandboxConfig) {
|
|
10039
|
+
return null;
|
|
10040
|
+
}
|
|
10041
|
+
return {
|
|
10042
|
+
[SANDBOX_TOKEN_HEADER]: sandboxConfig.token
|
|
10043
|
+
};
|
|
10044
|
+
};
|
|
10045
|
+
var sandboxBodyIdentity = () => {
|
|
10046
|
+
if (!sandboxConfig) {
|
|
10047
|
+
return null;
|
|
10048
|
+
}
|
|
10049
|
+
if (sandboxConfig.ucic) {
|
|
10050
|
+
return { org_user_id: sandboxConfig.ucic };
|
|
10051
|
+
}
|
|
10052
|
+
return sandboxConfig.subject.includes("@") ? { primary_email: sandboxConfig.subject } : { primary_mobile: sandboxConfig.subject };
|
|
10053
|
+
};
|
|
10054
|
+
var sandboxQueryIdentity = () => sandboxBodyIdentity();
|
|
10055
|
+
var sandboxContact = () => sandboxConfig ? sandboxConfig.ucic || sandboxConfig.subject : null;
|
|
10056
|
+
|
|
9866
10057
|
// src/RedactoPrivacyCenter/api/fetcher.ts
|
|
10058
|
+
var ApiError = class _ApiError extends Error {
|
|
10059
|
+
constructor(message, options = {}) {
|
|
10060
|
+
super(message);
|
|
10061
|
+
this.name = "ApiError";
|
|
10062
|
+
this.status = options.status;
|
|
10063
|
+
this.detail = options.detail;
|
|
10064
|
+
Object.setPrototypeOf(this, _ApiError.prototype);
|
|
10065
|
+
}
|
|
10066
|
+
};
|
|
10067
|
+
var TERMINAL_REFRESH_STATUSES = /* @__PURE__ */ new Set([400, 401, 403, 422]);
|
|
10068
|
+
function isTerminalRefreshError(error) {
|
|
10069
|
+
const e = error;
|
|
10070
|
+
if (!e) return false;
|
|
10071
|
+
if (typeof e.status === "number") {
|
|
10072
|
+
return TERMINAL_REFRESH_STATUSES.has(e.status);
|
|
10073
|
+
}
|
|
10074
|
+
const message = (typeof e.message === "string" ? e.message : "").toLowerCase();
|
|
10075
|
+
if (!message) return false;
|
|
10076
|
+
return message.includes("expired") || message.includes("revoked") || message.includes("not found") || message.includes("already used") || message.includes("invalid refresh token") || message.includes("unauthorized") || message.includes("[401]") || message.includes("[403]");
|
|
10077
|
+
}
|
|
9867
10078
|
async function apiFetch(url, options = {}) {
|
|
9868
10079
|
const { getAuthToken, headers = {}, ...fetchOptions } = options;
|
|
9869
10080
|
const requestHeaders = new Headers();
|
|
@@ -9888,11 +10099,18 @@ async function apiFetch(url, options = {}) {
|
|
|
9888
10099
|
}
|
|
9889
10100
|
}
|
|
9890
10101
|
if (getAuthToken) {
|
|
9891
|
-
const
|
|
9892
|
-
if (
|
|
9893
|
-
|
|
9894
|
-
|
|
9895
|
-
|
|
10102
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10103
|
+
if (sandboxHeaders) {
|
|
10104
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10105
|
+
requestHeaders.set(key, value);
|
|
10106
|
+
});
|
|
10107
|
+
} else {
|
|
10108
|
+
const token = await getAuthToken();
|
|
10109
|
+
if (token) {
|
|
10110
|
+
const trimmedToken = token.trim();
|
|
10111
|
+
requestHeaders.set("X-Auth-Token", trimmedToken);
|
|
10112
|
+
requestHeaders.set("x-auth-token", trimmedToken);
|
|
10113
|
+
}
|
|
9896
10114
|
}
|
|
9897
10115
|
}
|
|
9898
10116
|
const fetchOptionsFinal = {
|
|
@@ -9921,7 +10139,7 @@ async function apiFetch(url, options = {}) {
|
|
|
9921
10139
|
} catch {
|
|
9922
10140
|
}
|
|
9923
10141
|
}
|
|
9924
|
-
throw new
|
|
10142
|
+
throw new ApiError(errorMessage, { status: response.status });
|
|
9925
10143
|
}
|
|
9926
10144
|
const contentLength = response.headers.get("Content-Length");
|
|
9927
10145
|
const contentType = response.headers.get("Content-Type") || "";
|
|
@@ -9983,14 +10201,29 @@ function arrayBufferToBase64(buffer) {
|
|
|
9983
10201
|
return result;
|
|
9984
10202
|
}
|
|
9985
10203
|
function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
9986
|
-
const
|
|
10204
|
+
const ledgerConfigured = Boolean(ledgerBaseUrl);
|
|
10205
|
+
const useLedger = () => ledgerConfigured && !isSandboxMode();
|
|
9987
10206
|
const ledgerBase = (ledgerBaseUrl != null ? ledgerBaseUrl : "").replace(/\/$/, "");
|
|
9988
10207
|
function ledgerUrl(baseRequest, path) {
|
|
9989
|
-
if (!useLedger) {
|
|
10208
|
+
if (!useLedger()) {
|
|
9990
10209
|
throw new Error("ledgerUrl called without a configured ledgerBaseUrl");
|
|
9991
10210
|
}
|
|
9992
10211
|
return `${ledgerBase}/public/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}${path}`;
|
|
9993
10212
|
}
|
|
10213
|
+
function appendSandboxIdentity(queryParams) {
|
|
10214
|
+
const identity = sandboxQueryIdentity();
|
|
10215
|
+
if (identity) {
|
|
10216
|
+
Object.entries(identity).forEach(([key, value]) => {
|
|
10217
|
+
queryParams.append(key, value);
|
|
10218
|
+
});
|
|
10219
|
+
}
|
|
10220
|
+
}
|
|
10221
|
+
function sandboxIdentitySuffix() {
|
|
10222
|
+
const queryParams = new URLSearchParams();
|
|
10223
|
+
appendSandboxIdentity(queryParams);
|
|
10224
|
+
const queryString = queryParams.toString();
|
|
10225
|
+
return queryString ? `?${queryString}` : "";
|
|
10226
|
+
}
|
|
9994
10227
|
async function privacyCenterApiFetch(url, options) {
|
|
9995
10228
|
const { authToken, getAuthToken, headers = {}, ...fetchOptions } = options;
|
|
9996
10229
|
const requestHeaders = new Headers();
|
|
@@ -10014,11 +10247,18 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10014
10247
|
);
|
|
10015
10248
|
}
|
|
10016
10249
|
}
|
|
10017
|
-
const
|
|
10018
|
-
if (
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
|
|
10250
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10251
|
+
if (sandboxHeaders) {
|
|
10252
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10253
|
+
requestHeaders.set(key, value);
|
|
10254
|
+
});
|
|
10255
|
+
} else {
|
|
10256
|
+
const token = authToken || (getAuthToken ? await getAuthToken() : null);
|
|
10257
|
+
if (token) {
|
|
10258
|
+
const trimmedToken = token.trim();
|
|
10259
|
+
const bearerToken = trimmedToken.startsWith("Bearer ") ? trimmedToken : `Bearer ${trimmedToken}`;
|
|
10260
|
+
requestHeaders.set("Authorization", bearerToken);
|
|
10261
|
+
}
|
|
10022
10262
|
}
|
|
10023
10263
|
const fetchOptionsFinal = {
|
|
10024
10264
|
...fetchOptions,
|
|
@@ -10099,18 +10339,20 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10099
10339
|
async createCaseRequest(baseRequest, payload, authToken, options) {
|
|
10100
10340
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/case`;
|
|
10101
10341
|
const { useSessionAuth = false, getAuthToken, ...fetchOptions } = options || {};
|
|
10342
|
+
const contact = sandboxContact();
|
|
10343
|
+
const requestPayload = contact && payload && typeof payload === "object" ? { ...payload, contact } : payload;
|
|
10102
10344
|
if (useSessionAuth) {
|
|
10103
10345
|
return apiFetch(url, {
|
|
10104
10346
|
...fetchOptions,
|
|
10105
10347
|
method: "POST",
|
|
10106
|
-
body: JSON.stringify(
|
|
10348
|
+
body: JSON.stringify(requestPayload),
|
|
10107
10349
|
getAuthToken
|
|
10108
10350
|
});
|
|
10109
10351
|
}
|
|
10110
10352
|
return privacyCenterApiFetch(url, {
|
|
10111
10353
|
...fetchOptions,
|
|
10112
10354
|
method: "POST",
|
|
10113
|
-
body: JSON.stringify(
|
|
10355
|
+
body: JSON.stringify(requestPayload),
|
|
10114
10356
|
authToken: authToken || baseRequest.authToken
|
|
10115
10357
|
});
|
|
10116
10358
|
},
|
|
@@ -10191,9 +10433,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10191
10433
|
if (params.status) queryParams.append("status", params.status);
|
|
10192
10434
|
if (params.product_uuid) queryParams.append("product_uuid", params.product_uuid);
|
|
10193
10435
|
if (params.language) queryParams.append("language", params.language);
|
|
10436
|
+
appendSandboxIdentity(queryParams);
|
|
10194
10437
|
const queryString = queryParams.toString();
|
|
10195
10438
|
const consentsSuffix = `/user-consents${queryString ? `?${queryString}` : ""}`;
|
|
10196
|
-
const url = useLedger ? ledgerUrl(baseRequest, consentsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${consentsSuffix}`;
|
|
10439
|
+
const url = useLedger() ? ledgerUrl(baseRequest, consentsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${consentsSuffix}`;
|
|
10197
10440
|
return privacyCenterApiFetch(url, {
|
|
10198
10441
|
...options,
|
|
10199
10442
|
method: "GET",
|
|
@@ -10212,9 +10455,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10212
10455
|
if (params.search) queryParams.append("search", params.search);
|
|
10213
10456
|
if (params.language) queryParams.append("language", params.language);
|
|
10214
10457
|
if (params.nominator_uuid) queryParams.append("nominator_uuid", params.nominator_uuid);
|
|
10458
|
+
appendSandboxIdentity(queryParams);
|
|
10215
10459
|
const queryString = queryParams.toString();
|
|
10216
10460
|
const purposesSuffix = `/user-consents/${productUuid}/purposes${queryString ? `?${queryString}` : ""}`;
|
|
10217
|
-
const url = useLedger ? ledgerUrl(baseRequest, purposesSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${purposesSuffix}`;
|
|
10461
|
+
const url = useLedger() ? ledgerUrl(baseRequest, purposesSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${purposesSuffix}`;
|
|
10218
10462
|
return privacyCenterApiFetch(url, {
|
|
10219
10463
|
...options,
|
|
10220
10464
|
method: "GET",
|
|
@@ -10235,16 +10479,23 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10235
10479
|
* Without a ledger, the legacy Python `/manage-consent?status=` endpoint is
|
|
10236
10480
|
* used with its `{ purpose_uuid, contact, ... }` payload.
|
|
10237
10481
|
*/
|
|
10238
|
-
async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, noticeUuid, dataElements) {
|
|
10239
|
-
if (!useLedger) {
|
|
10482
|
+
async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, noticeUuid, dataElements, language) {
|
|
10483
|
+
if (!useLedger()) {
|
|
10240
10484
|
const url2 = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/manage-consent?status=${status}`;
|
|
10241
|
-
const
|
|
10485
|
+
const sandboxSingleContact = sandboxContact();
|
|
10486
|
+
const body2 = {
|
|
10487
|
+
purpose_uuid: purposeId,
|
|
10488
|
+
contact: sandboxSingleContact != null ? sandboxSingleContact : contact
|
|
10489
|
+
};
|
|
10242
10490
|
if (nominatorContact) {
|
|
10243
10491
|
body2.nominator_contact = nominatorContact;
|
|
10244
10492
|
}
|
|
10245
10493
|
if (Array.isArray(dataElementUuids) && dataElementUuids.length > 0) {
|
|
10246
10494
|
body2.data_element_uuids = dataElementUuids;
|
|
10247
10495
|
}
|
|
10496
|
+
if (language) {
|
|
10497
|
+
body2.language = language;
|
|
10498
|
+
}
|
|
10248
10499
|
return privacyCenterApiFetch(url2, {
|
|
10249
10500
|
...options,
|
|
10250
10501
|
method: "POST",
|
|
@@ -10279,7 +10530,8 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10279
10530
|
selected: purposeSelected,
|
|
10280
10531
|
data_elements: elements
|
|
10281
10532
|
}
|
|
10282
|
-
]
|
|
10533
|
+
],
|
|
10534
|
+
...language ? { language } : {}
|
|
10283
10535
|
};
|
|
10284
10536
|
const url = ledgerUrl(baseRequest, "/submit-consent");
|
|
10285
10537
|
return privacyCenterApiFetch(url, {
|
|
@@ -10297,6 +10549,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10297
10549
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10298
10550
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10299
10551
|
if (language) queryParams.append("language", language);
|
|
10552
|
+
appendSandboxIdentity(queryParams);
|
|
10300
10553
|
const queryString = queryParams.toString();
|
|
10301
10554
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/activities${queryString ? `?${queryString}` : ""}`;
|
|
10302
10555
|
return privacyCenterApiFetch(url, {
|
|
@@ -10304,6 +10557,32 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10304
10557
|
authToken: authToken || baseRequest.authToken
|
|
10305
10558
|
});
|
|
10306
10559
|
},
|
|
10560
|
+
/**
|
|
10561
|
+
* List all data principals that share this session's contact
|
|
10562
|
+
* (shared-contact profile picker). Identity is derived server-side from the
|
|
10563
|
+
* JWT — the caller sends nothing but its bearer token.
|
|
10564
|
+
*/
|
|
10565
|
+
async listIdentities(baseRequest, authToken, options) {
|
|
10566
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities`;
|
|
10567
|
+
return privacyCenterApiFetch(url, {
|
|
10568
|
+
...options,
|
|
10569
|
+
authToken: authToken || baseRequest.authToken
|
|
10570
|
+
});
|
|
10571
|
+
},
|
|
10572
|
+
/**
|
|
10573
|
+
* Re-scope the session to a chosen principal uuid (must be one of the
|
|
10574
|
+
* principals sharing this session's contact). Returns fresh access/refresh
|
|
10575
|
+
* tokens scoped to that principal.
|
|
10576
|
+
*/
|
|
10577
|
+
async selectPrincipal(baseRequest, principalUuid, authToken, options) {
|
|
10578
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities/select`;
|
|
10579
|
+
return privacyCenterApiFetch(url, {
|
|
10580
|
+
...options,
|
|
10581
|
+
method: "POST",
|
|
10582
|
+
body: JSON.stringify({ uuid: principalUuid }),
|
|
10583
|
+
authToken: authToken || baseRequest.authToken
|
|
10584
|
+
});
|
|
10585
|
+
},
|
|
10307
10586
|
/**
|
|
10308
10587
|
* Get receipts (privacy center)
|
|
10309
10588
|
*/
|
|
@@ -10317,9 +10596,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10317
10596
|
if (params.created_before) queryParams.append("created_before", params.created_before);
|
|
10318
10597
|
if (params.notice_uuid) queryParams.append("notice_uuid", params.notice_uuid);
|
|
10319
10598
|
if (params.language) queryParams.append("language", params.language);
|
|
10599
|
+
appendSandboxIdentity(queryParams);
|
|
10320
10600
|
const queryString = queryParams.toString();
|
|
10321
10601
|
const receiptsSuffix = `/receipts${queryString ? `?${queryString}` : ""}`;
|
|
10322
|
-
const url = useLedger ? ledgerUrl(baseRequest, receiptsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${receiptsSuffix}`;
|
|
10602
|
+
const url = useLedger() ? ledgerUrl(baseRequest, receiptsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${receiptsSuffix}`;
|
|
10323
10603
|
return privacyCenterApiFetch(url, {
|
|
10324
10604
|
...options,
|
|
10325
10605
|
method: "GET",
|
|
@@ -10333,11 +10613,16 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10333
10613
|
* the RN UI writes to a temp file to open/share. 404 => not found.
|
|
10334
10614
|
*/
|
|
10335
10615
|
async getReceiptPdf(baseRequest, receiptUuid, authToken) {
|
|
10336
|
-
const url = useLedger ? ledgerUrl(baseRequest, `/receipts/${receiptUuid}/download`) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/receipts/${receiptUuid}/pdf`;
|
|
10616
|
+
const url = useLedger() ? ledgerUrl(baseRequest, `/receipts/${receiptUuid}/download`) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/receipts/${receiptUuid}/pdf`;
|
|
10337
10617
|
const token = authToken || baseRequest.authToken;
|
|
10338
10618
|
const requestHeaders = new Headers();
|
|
10339
10619
|
requestHeaders.set("Accept", "application/pdf");
|
|
10340
|
-
|
|
10620
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10621
|
+
if (sandboxHeaders) {
|
|
10622
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10623
|
+
requestHeaders.set(key, value);
|
|
10624
|
+
});
|
|
10625
|
+
} else if (token) {
|
|
10341
10626
|
const trimmedToken = token.trim();
|
|
10342
10627
|
const bearerToken = trimmedToken.startsWith("Bearer ") ? trimmedToken : `Bearer ${trimmedToken}`;
|
|
10343
10628
|
requestHeaders.set("Authorization", bearerToken);
|
|
@@ -10363,6 +10648,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10363
10648
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10364
10649
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10365
10650
|
if (language) queryParams.append("language", language);
|
|
10651
|
+
appendSandboxIdentity(queryParams);
|
|
10366
10652
|
const queryString = queryParams.toString();
|
|
10367
10653
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases?${queryString}`;
|
|
10368
10654
|
return privacyCenterApiFetch(url, {
|
|
@@ -10374,7 +10660,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10374
10660
|
* Get case messages (privacy center)
|
|
10375
10661
|
*/
|
|
10376
10662
|
async getCaseMessages(baseRequest, caseUuid, authToken, options) {
|
|
10377
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages`;
|
|
10663
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages${sandboxIdentitySuffix()}`;
|
|
10378
10664
|
return privacyCenterApiFetch(url, {
|
|
10379
10665
|
...options,
|
|
10380
10666
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10384,7 +10670,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10384
10670
|
* Send a message in a case (privacy center)
|
|
10385
10671
|
*/
|
|
10386
10672
|
async sendCaseMessage(baseRequest, caseUuid, body, documentUuids, authToken, options) {
|
|
10387
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages`;
|
|
10673
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages${sandboxIdentitySuffix()}`;
|
|
10388
10674
|
return privacyCenterApiFetch(url, {
|
|
10389
10675
|
...options,
|
|
10390
10676
|
method: "POST",
|
|
@@ -10396,7 +10682,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10396
10682
|
* Upload a document for a case (privacy center)
|
|
10397
10683
|
*/
|
|
10398
10684
|
async uploadCaseDocument(baseRequest, caseUuid, formData, authToken, options) {
|
|
10399
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/upload-document`;
|
|
10685
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/upload-document${sandboxIdentitySuffix()}`;
|
|
10400
10686
|
return privacyCenterApiFetch(url, {
|
|
10401
10687
|
...options,
|
|
10402
10688
|
method: "POST",
|
|
@@ -10429,6 +10715,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10429
10715
|
if ((params == null ? void 0 : params.limit) !== void 0) queryParams.append("limit", params.limit.toString());
|
|
10430
10716
|
if (params == null ? void 0 : params.include_summary) queryParams.append("include_summary", "true");
|
|
10431
10717
|
if (params == null ? void 0 : params.language) queryParams.append("language", params.language);
|
|
10718
|
+
appendSandboxIdentity(queryParams);
|
|
10432
10719
|
const queryString = queryParams.toString();
|
|
10433
10720
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${queryString ? `?${queryString}` : ""}`;
|
|
10434
10721
|
return privacyCenterApiFetch(url, {
|
|
@@ -10440,7 +10727,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10440
10727
|
* Get notification summary (aggregated counts only)
|
|
10441
10728
|
*/
|
|
10442
10729
|
async getNotificationSummary(baseRequest, authToken) {
|
|
10443
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/summary`;
|
|
10730
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/summary${sandboxIdentitySuffix()}`;
|
|
10444
10731
|
return privacyCenterApiFetch(url, {
|
|
10445
10732
|
method: "GET",
|
|
10446
10733
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10450,7 +10737,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10450
10737
|
* Get unread notification count (lightweight, for the header badge)
|
|
10451
10738
|
*/
|
|
10452
10739
|
async getUnreadCount(baseRequest, authToken) {
|
|
10453
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/unread-count`;
|
|
10740
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/unread-count${sandboxIdentitySuffix()}`;
|
|
10454
10741
|
return privacyCenterApiFetch(url, {
|
|
10455
10742
|
method: "GET",
|
|
10456
10743
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10460,7 +10747,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10460
10747
|
* Mark a single notification as read
|
|
10461
10748
|
*/
|
|
10462
10749
|
async markNotificationRead(baseRequest, notificationUuid, authToken) {
|
|
10463
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/read`;
|
|
10750
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/read${sandboxIdentitySuffix()}`;
|
|
10464
10751
|
return privacyCenterApiFetch(url, {
|
|
10465
10752
|
method: "PATCH",
|
|
10466
10753
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10470,7 +10757,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10470
10757
|
* Mark all notifications as read
|
|
10471
10758
|
*/
|
|
10472
10759
|
async markAllNotificationsRead(baseRequest, authToken) {
|
|
10473
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/mark-all-read`;
|
|
10760
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/mark-all-read${sandboxIdentitySuffix()}`;
|
|
10474
10761
|
return privacyCenterApiFetch(url, {
|
|
10475
10762
|
method: "POST",
|
|
10476
10763
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10480,7 +10767,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10480
10767
|
* Acknowledge a notification (sets is_read and is_acknowledged to true)
|
|
10481
10768
|
*/
|
|
10482
10769
|
async acknowledgeNotification(baseRequest, notificationUuid, authToken) {
|
|
10483
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/acknowledge`;
|
|
10770
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/acknowledge${sandboxIdentitySuffix()}`;
|
|
10484
10771
|
return privacyCenterApiFetch(url, {
|
|
10485
10772
|
method: "POST",
|
|
10486
10773
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10719,7 +11006,8 @@ async function manageConsentServer(params) {
|
|
|
10719
11006
|
params.nominatorContact,
|
|
10720
11007
|
params.dataElementUuids,
|
|
10721
11008
|
params.noticeUuid,
|
|
10722
|
-
params.dataElements
|
|
11009
|
+
params.dataElements,
|
|
11010
|
+
params.language
|
|
10723
11011
|
);
|
|
10724
11012
|
if (result && typeof result === "object" && "success" in result) {
|
|
10725
11013
|
return Boolean(result.success);
|
|
@@ -11210,7 +11498,8 @@ var manageConsent = async ({
|
|
|
11210
11498
|
nominatorContact,
|
|
11211
11499
|
dataElementUuids,
|
|
11212
11500
|
noticeUuid,
|
|
11213
|
-
dataElements
|
|
11501
|
+
dataElements,
|
|
11502
|
+
language
|
|
11214
11503
|
}) => {
|
|
11215
11504
|
try {
|
|
11216
11505
|
const accessToken = await ensureValidToken(organizationId, workspaceId, void 0, authContext, consentClient);
|
|
@@ -11228,7 +11517,8 @@ var manageConsent = async ({
|
|
|
11228
11517
|
nominatorContact,
|
|
11229
11518
|
dataElementUuids,
|
|
11230
11519
|
noticeUuid,
|
|
11231
|
-
dataElements
|
|
11520
|
+
dataElements,
|
|
11521
|
+
language
|
|
11232
11522
|
});
|
|
11233
11523
|
return result;
|
|
11234
11524
|
} catch (error) {
|
|
@@ -11249,7 +11539,8 @@ var manageConsent = async ({
|
|
|
11249
11539
|
nominatorContact,
|
|
11250
11540
|
dataElementUuids,
|
|
11251
11541
|
noticeUuid,
|
|
11252
|
-
dataElements
|
|
11542
|
+
dataElements,
|
|
11543
|
+
language
|
|
11253
11544
|
});
|
|
11254
11545
|
}
|
|
11255
11546
|
console.error(`Error ${action} consent:`, error);
|
|
@@ -11588,6 +11879,40 @@ var acknowledgeNotification = async (organizationId, workspaceId, notificationUu
|
|
|
11588
11879
|
var isRefreshing = false;
|
|
11589
11880
|
var refreshPromise = null;
|
|
11590
11881
|
var TOKEN_EXPIRY_BUFFER_SECONDS = 30;
|
|
11882
|
+
var deadRefreshToken = null;
|
|
11883
|
+
var transientRefreshFailureUntil = 0;
|
|
11884
|
+
var transientRefreshBackoffMs = 0;
|
|
11885
|
+
var MIN_REFRESH_BACKOFF_MS = 3e4;
|
|
11886
|
+
var MAX_REFRESH_BACKOFF_MS = 3e5;
|
|
11887
|
+
var sessionExpiredListener = null;
|
|
11888
|
+
var setSessionExpiredListener = (fn) => {
|
|
11889
|
+
sessionExpiredListener = fn;
|
|
11890
|
+
};
|
|
11891
|
+
var notifySessionExpired = () => {
|
|
11892
|
+
sessionExpiredListener == null ? void 0 : sessionExpiredListener();
|
|
11893
|
+
};
|
|
11894
|
+
var activeRefreshToken = (authContext) => (authContext == null ? void 0 : authContext.refreshToken) || getStoredValue("refresh_token") || null;
|
|
11895
|
+
var isRefreshBlocked = (authContext) => {
|
|
11896
|
+
const active = activeRefreshToken(authContext);
|
|
11897
|
+
if (active !== null && active === deadRefreshToken) return true;
|
|
11898
|
+
return Date.now() < transientRefreshFailureUntil;
|
|
11899
|
+
};
|
|
11900
|
+
var noteTransientRefreshFailure = () => {
|
|
11901
|
+
transientRefreshBackoffMs = Math.min(
|
|
11902
|
+
Math.max(transientRefreshBackoffMs * 2, MIN_REFRESH_BACKOFF_MS),
|
|
11903
|
+
MAX_REFRESH_BACKOFF_MS
|
|
11904
|
+
);
|
|
11905
|
+
transientRefreshFailureUntil = Date.now() + transientRefreshBackoffMs;
|
|
11906
|
+
};
|
|
11907
|
+
var markRefreshTokenDead = (token) => {
|
|
11908
|
+
if (token) deadRefreshToken = token;
|
|
11909
|
+
notifySessionExpired();
|
|
11910
|
+
};
|
|
11911
|
+
var resetRefreshCircuit = () => {
|
|
11912
|
+
deadRefreshToken = null;
|
|
11913
|
+
transientRefreshFailureUntil = 0;
|
|
11914
|
+
transientRefreshBackoffMs = 0;
|
|
11915
|
+
};
|
|
11591
11916
|
var tokenStore = {};
|
|
11592
11917
|
var getStoredValue = (key) => {
|
|
11593
11918
|
var _a3;
|
|
@@ -11643,6 +11968,18 @@ var decodeJwtToken = (token) => {
|
|
|
11643
11968
|
return null;
|
|
11644
11969
|
}
|
|
11645
11970
|
};
|
|
11971
|
+
var resolveContactFromJwt = (decoded) => {
|
|
11972
|
+
if (!decoded) {
|
|
11973
|
+
return null;
|
|
11974
|
+
}
|
|
11975
|
+
const userData = decoded.user_data || {};
|
|
11976
|
+
const candidate = decoded.contact || decoded.primary_email || userData.primary_email || userData.primary_mobile || userData.org_user_id;
|
|
11977
|
+
if (typeof candidate !== "string") {
|
|
11978
|
+
return null;
|
|
11979
|
+
}
|
|
11980
|
+
const contact = candidate.trim();
|
|
11981
|
+
return contact === "" ? null : contact;
|
|
11982
|
+
};
|
|
11646
11983
|
var isJwtExpired = (token, bufferSeconds = 30) => {
|
|
11647
11984
|
if (!token || typeof token !== "string") return true;
|
|
11648
11985
|
try {
|
|
@@ -11669,11 +12006,16 @@ var compareEmails = (email1, email2) => {
|
|
|
11669
12006
|
return decodeURIComponent(email1.trim()).toLowerCase() === email2.trim().toLowerCase();
|
|
11670
12007
|
};
|
|
11671
12008
|
var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, consentClient) => {
|
|
12009
|
+
const sandbox = getSandboxConfig();
|
|
12010
|
+
if (sandbox) {
|
|
12011
|
+
return sandbox.token;
|
|
12012
|
+
}
|
|
11672
12013
|
const accessToken = (authContext == null ? void 0 : authContext.accessToken) || getStoredValue("access_token");
|
|
11673
12014
|
if (accessToken && typeof accessToken === "string" && accessToken.trim() !== "" && !isJwtExpired(accessToken, TOKEN_EXPIRY_BUFFER_SECONDS)) {
|
|
11674
12015
|
return accessToken;
|
|
11675
12016
|
}
|
|
11676
12017
|
if (isRefreshing && refreshPromise) return refreshPromise;
|
|
12018
|
+
if (isRefreshBlocked(authContext)) return null;
|
|
11677
12019
|
isRefreshing = true;
|
|
11678
12020
|
refreshPromise = performTokenRefresh(
|
|
11679
12021
|
organizationId,
|
|
@@ -11701,6 +12043,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11701
12043
|
if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
|
|
11702
12044
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11703
12045
|
authContext.onError(new Error("No refresh token available"));
|
|
12046
|
+
notifySessionExpired();
|
|
11704
12047
|
signOutPrivacyCenter();
|
|
11705
12048
|
return null;
|
|
11706
12049
|
}
|
|
@@ -11730,11 +12073,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11730
12073
|
if (newRefreshToken)
|
|
11731
12074
|
setStoredValue("refresh_token", newRefreshToken);
|
|
11732
12075
|
}
|
|
12076
|
+
resetRefreshCircuit();
|
|
11733
12077
|
return newAccessToken;
|
|
11734
12078
|
}
|
|
11735
12079
|
}
|
|
11736
12080
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11737
12081
|
authContext.onError(new Error("Refresh token expired or revoked"));
|
|
12082
|
+
markRefreshTokenDead(refreshToken);
|
|
11738
12083
|
signOutPrivacyCenter();
|
|
11739
12084
|
return null;
|
|
11740
12085
|
} catch (error) {
|
|
@@ -11742,7 +12087,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11742
12087
|
authContext.onError(
|
|
11743
12088
|
error instanceof Error ? error : new Error(String(error))
|
|
11744
12089
|
);
|
|
11745
|
-
|
|
12090
|
+
if (isTerminalRefreshError(error)) {
|
|
12091
|
+
markRefreshTokenDead(refreshToken);
|
|
12092
|
+
signOutPrivacyCenter();
|
|
12093
|
+
} else {
|
|
12094
|
+
noteTransientRefreshFailure();
|
|
12095
|
+
}
|
|
11746
12096
|
return null;
|
|
11747
12097
|
}
|
|
11748
12098
|
};
|
|
@@ -11770,6 +12120,23 @@ var formatDateTime = (timestamp) => {
|
|
|
11770
12120
|
hours = hours % 12 || 12;
|
|
11771
12121
|
return `${month} ${day}, ${year} at ${hours}:${minutes} ${ampm}`;
|
|
11772
12122
|
};
|
|
12123
|
+
var extractCaseRef = (response) => {
|
|
12124
|
+
if (!response || typeof response !== "object") {
|
|
12125
|
+
return null;
|
|
12126
|
+
}
|
|
12127
|
+
const wrapper = response;
|
|
12128
|
+
const candidates = [wrapper.detail, response];
|
|
12129
|
+
for (const candidate of candidates) {
|
|
12130
|
+
if (!candidate || typeof candidate !== "object") {
|
|
12131
|
+
continue;
|
|
12132
|
+
}
|
|
12133
|
+
const { case_id: caseId, uuid } = candidate;
|
|
12134
|
+
if (caseId || uuid) {
|
|
12135
|
+
return { case_id: caseId != null ? caseId : "", uuid: uuid != null ? uuid : "" };
|
|
12136
|
+
}
|
|
12137
|
+
}
|
|
12138
|
+
return null;
|
|
12139
|
+
};
|
|
11773
12140
|
var generateUuid = () => {
|
|
11774
12141
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
11775
12142
|
const r = Math.random() * 16 | 0;
|
|
@@ -11789,10 +12156,10 @@ function extractJwtAuthData(token) {
|
|
|
11789
12156
|
if (!decoded) {
|
|
11790
12157
|
return { email: null, organizationId: null, workspaceId: null, organizationName: null };
|
|
11791
12158
|
}
|
|
11792
|
-
const
|
|
11793
|
-
const userEmail = decoded.contact || decoded.primary_email || decoded.email || decoded.user_uuid || decoded.sub || (userData && typeof userData === "object" ? userData.primary_email || userData.email || userData.contact : null) || null;
|
|
12159
|
+
const contact = resolveContactFromJwt(decoded);
|
|
11794
12160
|
return {
|
|
11795
|
-
|
|
12161
|
+
// `resolveContactFromJwt` already returns a trimmed, non-empty string or null.
|
|
12162
|
+
email: contact,
|
|
11796
12163
|
organizationId: decoded.organisation_uuid || null,
|
|
11797
12164
|
workspaceId: decoded.workspace_uuid || null,
|
|
11798
12165
|
organizationName: decoded.organisation_name || null
|
|
@@ -11801,20 +12168,82 @@ function extractJwtAuthData(token) {
|
|
|
11801
12168
|
function syncJwtDataToStore(token) {
|
|
11802
12169
|
const authData = extractJwtAuthData(token);
|
|
11803
12170
|
setStoredValue("access_token", token);
|
|
11804
|
-
if (authData.email)
|
|
12171
|
+
if (authData.email) {
|
|
12172
|
+
setStoredValue("email", authData.email);
|
|
12173
|
+
} else {
|
|
12174
|
+
removeStoredValue("email");
|
|
12175
|
+
}
|
|
11805
12176
|
if (authData.organizationId) setStoredValue("pc_org_id", authData.organizationId);
|
|
11806
12177
|
if (authData.workspaceId) setStoredValue("pc_workspace_id", authData.workspaceId);
|
|
11807
12178
|
return authData;
|
|
11808
12179
|
}
|
|
11809
|
-
function
|
|
11810
|
-
|
|
12180
|
+
function configureSandbox(props) {
|
|
12181
|
+
var _a3, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
12182
|
+
const token = (_a3 = props.token) == null ? void 0 : _a3.trim();
|
|
12183
|
+
if (!token) {
|
|
12184
|
+
setSandboxConfig(null);
|
|
12185
|
+
return null;
|
|
12186
|
+
}
|
|
12187
|
+
const organisationUuid = (_c = (_b = props.organisationUuid) == null ? void 0 : _b.trim()) != null ? _c : "";
|
|
12188
|
+
const workspaceUuid = (_e = (_d = props.workspaceUuid) == null ? void 0 : _d.trim()) != null ? _e : "";
|
|
12189
|
+
const ucic = (_g = (_f = props.sandboxUcic) == null ? void 0 : _f.trim()) != null ? _g : "";
|
|
12190
|
+
const subject = (_i = (_h = props.sandboxSubject) == null ? void 0 : _h.trim()) != null ? _i : "";
|
|
12191
|
+
const slug = (_k = (_j = props.slug) == null ? void 0 : _j.trim()) != null ? _k : "";
|
|
12192
|
+
if (!organisationUuid || !workspaceUuid) {
|
|
12193
|
+
throw new Error("Sandbox mode requires organisationUuid and workspaceUuid props");
|
|
12194
|
+
}
|
|
12195
|
+
if (!ucic && !subject) {
|
|
12196
|
+
throw new Error("Sandbox mode requires a UCIC, email, or mobile");
|
|
12197
|
+
}
|
|
12198
|
+
setSandboxConfig({
|
|
12199
|
+
token,
|
|
12200
|
+
ucic: ucic || void 0,
|
|
12201
|
+
subject,
|
|
12202
|
+
organisationUuid,
|
|
12203
|
+
workspaceUuid,
|
|
12204
|
+
slug
|
|
12205
|
+
});
|
|
12206
|
+
const contact = ucic || subject;
|
|
12207
|
+
setStoredValue("access_token", token);
|
|
12208
|
+
if (organisationUuid) setStoredValue("pc_org_id", organisationUuid);
|
|
12209
|
+
if (workspaceUuid) setStoredValue("pc_workspace_id", workspaceUuid);
|
|
12210
|
+
if (contact) setStoredValue("email", contact);
|
|
12211
|
+
return {
|
|
12212
|
+
email: contact || null,
|
|
12213
|
+
organizationId: organisationUuid || null,
|
|
12214
|
+
workspaceId: workspaceUuid || null,
|
|
12215
|
+
organizationName: null
|
|
12216
|
+
};
|
|
12217
|
+
}
|
|
12218
|
+
function AuthProvider(props) {
|
|
12219
|
+
const {
|
|
12220
|
+
children,
|
|
12221
|
+
accessToken: initialAccessToken,
|
|
12222
|
+
refreshToken: initialRefreshToken,
|
|
12223
|
+
token: sandboxToken,
|
|
12224
|
+
sandboxUcic,
|
|
12225
|
+
sandboxSubject,
|
|
12226
|
+
organisationUuid,
|
|
12227
|
+
workspaceUuid,
|
|
12228
|
+
slug,
|
|
12229
|
+
onError
|
|
12230
|
+
} = props;
|
|
12231
|
+
const [sandboxAuth] = (0, import_react3.useState)(() => configureSandbox(props));
|
|
12232
|
+
const sandboxActive = sandboxAuth !== null;
|
|
12233
|
+
const initialAuth = sandboxAuth != null ? sandboxAuth : extractJwtAuthData(initialAccessToken);
|
|
11811
12234
|
const [accessToken, setAccessToken] = (0, import_react3.useState)(() => {
|
|
12235
|
+
if (sandboxActive) {
|
|
12236
|
+
return sandboxToken != null ? sandboxToken : "";
|
|
12237
|
+
}
|
|
11812
12238
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11813
12239
|
syncJwtDataToStore(initialAccessToken);
|
|
11814
12240
|
}
|
|
11815
12241
|
return initialAccessToken;
|
|
11816
12242
|
});
|
|
11817
12243
|
const [refreshToken, setRefreshToken] = (0, import_react3.useState)(() => {
|
|
12244
|
+
if (sandboxActive) {
|
|
12245
|
+
return "";
|
|
12246
|
+
}
|
|
11818
12247
|
if (initialRefreshToken && initialRefreshToken.trim() !== "") {
|
|
11819
12248
|
setStoredValue("refresh_token", initialRefreshToken);
|
|
11820
12249
|
}
|
|
@@ -11825,6 +12254,20 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11825
12254
|
const [workspaceId, setWorkspaceId] = (0, import_react3.useState)(initialAuth.workspaceId);
|
|
11826
12255
|
const [organizationName, setOrganizationName] = (0, import_react3.useState)(initialAuth.organizationName);
|
|
11827
12256
|
(0, import_react3.useEffect)(() => {
|
|
12257
|
+
if (!sandboxActive) {
|
|
12258
|
+
return;
|
|
12259
|
+
}
|
|
12260
|
+
const seeded = configureSandbox(props);
|
|
12261
|
+
if (seeded) {
|
|
12262
|
+
setEmail(seeded.email);
|
|
12263
|
+
setOrganizationId(seeded.organizationId);
|
|
12264
|
+
setWorkspaceId(seeded.workspaceId);
|
|
12265
|
+
setOrganizationName(seeded.organizationName);
|
|
12266
|
+
}
|
|
12267
|
+
return () => setSandboxConfig(null);
|
|
12268
|
+
}, [sandboxActive, sandboxToken, sandboxUcic, sandboxSubject, organisationUuid, workspaceUuid, slug]);
|
|
12269
|
+
(0, import_react3.useEffect)(() => {
|
|
12270
|
+
if (sandboxActive) return;
|
|
11828
12271
|
if (accessToken) {
|
|
11829
12272
|
const authData = syncJwtDataToStore(accessToken);
|
|
11830
12273
|
setEmail(authData.email);
|
|
@@ -11832,11 +12275,13 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11832
12275
|
setWorkspaceId(authData.workspaceId);
|
|
11833
12276
|
setOrganizationName(authData.organizationName);
|
|
11834
12277
|
}
|
|
11835
|
-
}, [accessToken]);
|
|
12278
|
+
}, [accessToken, sandboxActive]);
|
|
11836
12279
|
(0, import_react3.useEffect)(() => {
|
|
12280
|
+
if (sandboxActive) return;
|
|
11837
12281
|
if (refreshToken) setStoredValue("refresh_token", refreshToken);
|
|
11838
|
-
}, [refreshToken]);
|
|
12282
|
+
}, [refreshToken, sandboxActive]);
|
|
11839
12283
|
(0, import_react3.useEffect)(() => {
|
|
12284
|
+
if (sandboxActive) return;
|
|
11840
12285
|
setAccessToken(initialAccessToken);
|
|
11841
12286
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11842
12287
|
const authData = syncJwtDataToStore(initialAccessToken);
|
|
@@ -11845,10 +12290,11 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11845
12290
|
setWorkspaceId(authData.workspaceId);
|
|
11846
12291
|
setOrganizationName(authData.organizationName);
|
|
11847
12292
|
}
|
|
11848
|
-
}, [initialAccessToken]);
|
|
12293
|
+
}, [initialAccessToken, sandboxActive]);
|
|
11849
12294
|
(0, import_react3.useEffect)(() => {
|
|
12295
|
+
if (sandboxActive) return;
|
|
11850
12296
|
setRefreshToken(initialRefreshToken);
|
|
11851
|
-
}, [initialRefreshToken]);
|
|
12297
|
+
}, [initialRefreshToken, sandboxActive]);
|
|
11852
12298
|
const updateTokens = (0, import_react3.useCallback)((newAccessToken, newRefreshToken) => {
|
|
11853
12299
|
setAccessToken(newAccessToken);
|
|
11854
12300
|
if (newRefreshToken) setRefreshToken(newRefreshToken);
|
|
@@ -12091,8 +12537,17 @@ function DataAvailabilityProvider({ children }) {
|
|
|
12091
12537
|
mountedRef.current = false;
|
|
12092
12538
|
};
|
|
12093
12539
|
}, []);
|
|
12540
|
+
(0, import_react7.useEffect)(() => {
|
|
12541
|
+
setSessionExpiredListener(() => {
|
|
12542
|
+
if (!mountedRef.current) return;
|
|
12543
|
+
runIdRef.current += 1;
|
|
12544
|
+
setStatus("session-expired");
|
|
12545
|
+
});
|
|
12546
|
+
return () => setSessionExpiredListener(null);
|
|
12547
|
+
}, []);
|
|
12094
12548
|
const runCheck = (0, import_react7.useCallback)(async () => {
|
|
12095
12549
|
if (!organizationId || !workspaceId) return;
|
|
12550
|
+
if (isRefreshBlocked(authContext)) return;
|
|
12096
12551
|
const runId = ++runIdRef.current;
|
|
12097
12552
|
setStatus("checking");
|
|
12098
12553
|
const contact = email;
|
|
@@ -14120,7 +14575,7 @@ var import_react_i18next11 = require("react-i18next");
|
|
|
14120
14575
|
|
|
14121
14576
|
// src/RedactoPrivacyCenter/lib/consentManagerUtils.ts
|
|
14122
14577
|
function purposeItemToUserConsent(purpose, group) {
|
|
14123
|
-
var _a3, _b, _c, _d;
|
|
14578
|
+
var _a3, _b, _c, _d, _e;
|
|
14124
14579
|
return {
|
|
14125
14580
|
purpose_uuid: purpose.purpose_uuid,
|
|
14126
14581
|
purpose: purpose.name,
|
|
@@ -14133,7 +14588,9 @@ function purposeItemToUserConsent(purpose, group) {
|
|
|
14133
14588
|
product_uuid: group.product_uuid,
|
|
14134
14589
|
product_name: group.product_name,
|
|
14135
14590
|
product_description: group.product_description,
|
|
14136
|
-
nominator_info: (_d = group.nominator) != null ? _d : void 0
|
|
14591
|
+
nominator_info: (_d = group.nominator) != null ? _d : void 0,
|
|
14592
|
+
revoke_warning_message: (_e = purpose.revoke_warning_message) != null ? _e : null,
|
|
14593
|
+
notice_uuid: purpose.notice_uuid
|
|
14137
14594
|
};
|
|
14138
14595
|
}
|
|
14139
14596
|
function getDisplayProductGroups(detail, tab) {
|
|
@@ -14211,7 +14668,7 @@ var ConsentStatusEnum = /* @__PURE__ */ ((ConsentStatusEnum2) => {
|
|
|
14211
14668
|
return ConsentStatusEnum2;
|
|
14212
14669
|
})(ConsentStatusEnum || {});
|
|
14213
14670
|
|
|
14214
|
-
// src/
|
|
14671
|
+
// src/shared/languages.ts
|
|
14215
14672
|
var languageOptions = [
|
|
14216
14673
|
{ value: "en", label: "English" },
|
|
14217
14674
|
{ value: "hi", label: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)" },
|
|
@@ -14237,6 +14694,17 @@ var languageOptions = [
|
|
|
14237
14694
|
{ value: "ks", label: "\u0643\u0672\u0634\u064F\u0631 (Kashmiri)" },
|
|
14238
14695
|
{ value: "sat", label: "\u1C65\u1C5F\u1C71\u1C5B\u1C5F\u1C72\u1C64 (Santali)" }
|
|
14239
14696
|
];
|
|
14697
|
+
var codeByLabel = new Map(languageOptions.map((o) => [o.label, o.value]));
|
|
14698
|
+
var codeByLower = new Map(languageOptions.map((o) => [o.value.toLowerCase(), o.value]));
|
|
14699
|
+
var englishName = (label) => {
|
|
14700
|
+
var _a3, _b;
|
|
14701
|
+
return (_b = (_a3 = label.match(/\(([^)]+)\)\s*$/)) == null ? void 0 : _a3[1]) != null ? _b : label;
|
|
14702
|
+
};
|
|
14703
|
+
var codeByName = new Map(
|
|
14704
|
+
languageOptions.map((o) => [englishName(o.label).toLowerCase(), o.value])
|
|
14705
|
+
);
|
|
14706
|
+
|
|
14707
|
+
// src/RedactoPrivacyCenter/lib/constants.ts
|
|
14240
14708
|
var PAGE_CHROME_BY_PAGE = {
|
|
14241
14709
|
home: {
|
|
14242
14710
|
titleKey: "privacyCenter",
|
|
@@ -14314,8 +14782,14 @@ var useTimePeriodOptions = () => {
|
|
|
14314
14782
|
);
|
|
14315
14783
|
};
|
|
14316
14784
|
var MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL = 3;
|
|
14785
|
+
var PRODUCT_SCOPED_REQUEST_TYPES = [
|
|
14786
|
+
"ACCESS" /* ACCESS */,
|
|
14787
|
+
"erasure" /* ERASURE */,
|
|
14788
|
+
"CORRECTION" /* CORRECTION */
|
|
14789
|
+
];
|
|
14317
14790
|
var SEARCH_DEBOUNCE_DELAY = 500;
|
|
14318
14791
|
var FORM_PICKER_GROUP_LIMIT = 100;
|
|
14792
|
+
var LEGACY_PRODUCT_GROUP_UUID = "__legacy_flat_purposes__";
|
|
14319
14793
|
var POLL_INTERVAL = 3e4;
|
|
14320
14794
|
var NOTIFICATION_PAGE_SIZE = 10;
|
|
14321
14795
|
var TAB_TO_CATEGORY = {
|
|
@@ -14418,7 +14892,7 @@ var ModifyConsentModal = ({
|
|
|
14418
14892
|
action: "revoke",
|
|
14419
14893
|
buttonLabel: t("revokeConsent"),
|
|
14420
14894
|
buttonColor: colors.error,
|
|
14421
|
-
warningMessage: t("revokeConsentWarning"),
|
|
14895
|
+
warningMessage: selectedRecord.revoke_warning_message || t("revokeConsentWarning"),
|
|
14422
14896
|
description: nominatorLabel ? t("aboutToModifyConsentOnBehalf", { nominator: nominatorLabel }) : t("aboutToModifyConsent")
|
|
14423
14897
|
};
|
|
14424
14898
|
}
|
|
@@ -15089,7 +15563,8 @@ function ConsentManager() {
|
|
|
15089
15563
|
dataElements: (_b = selectedRecord == null ? void 0 : selectedRecord.data_elements) == null ? void 0 : _b.map((de) => ({
|
|
15090
15564
|
uuid: de.uuid,
|
|
15091
15565
|
selected: de.selected
|
|
15092
|
-
}))
|
|
15566
|
+
})),
|
|
15567
|
+
language: langParam
|
|
15093
15568
|
});
|
|
15094
15569
|
setIsModalOpen(false);
|
|
15095
15570
|
setSelectedRecord(null);
|
|
@@ -15101,7 +15576,7 @@ function ConsentManager() {
|
|
|
15101
15576
|
setIsManageLoading(false);
|
|
15102
15577
|
}
|
|
15103
15578
|
},
|
|
15104
|
-
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, fetchData, t]
|
|
15579
|
+
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, langParam, fetchData, t]
|
|
15105
15580
|
);
|
|
15106
15581
|
const handleExport = (0, import_react25.useCallback)(async () => {
|
|
15107
15582
|
if (!consentData.length) return;
|
|
@@ -15464,6 +15939,7 @@ function ActivitiesList() {
|
|
|
15464
15939
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
15465
15940
|
[accessToken, refreshToken, onError, updateTokens]
|
|
15466
15941
|
);
|
|
15942
|
+
const { langParam } = useCurrentLanguage();
|
|
15467
15943
|
const [activities, setActivities] = (0, import_react26.useState)([]);
|
|
15468
15944
|
const [totalCount, setTotalCount] = (0, import_react26.useState)(0);
|
|
15469
15945
|
const [isLoading, setIsLoading] = (0, import_react26.useState)(true);
|
|
@@ -15475,7 +15951,7 @@ function ActivitiesList() {
|
|
|
15475
15951
|
var _a3, _b, _c;
|
|
15476
15952
|
if (!organizationId || !workspaceId) return;
|
|
15477
15953
|
try {
|
|
15478
|
-
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient);
|
|
15954
|
+
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient, langParam);
|
|
15479
15955
|
if (!response) return;
|
|
15480
15956
|
const rows = (_a3 = response.data) != null ? _a3 : [];
|
|
15481
15957
|
setActivities((prev) => append ? [...prev, ...rows] : rows);
|
|
@@ -15486,7 +15962,7 @@ function ActivitiesList() {
|
|
|
15486
15962
|
if (!append) setActivities([]);
|
|
15487
15963
|
}
|
|
15488
15964
|
},
|
|
15489
|
-
[organizationId, workspaceId, authContext, consentClient]
|
|
15965
|
+
[organizationId, workspaceId, authContext, consentClient, langParam]
|
|
15490
15966
|
);
|
|
15491
15967
|
(0, import_react26.useEffect)(() => {
|
|
15492
15968
|
setIsLoading(true);
|
|
@@ -15616,10 +16092,10 @@ var import_react_i18next14 = require("react-i18next");
|
|
|
15616
16092
|
// src/RedactoPrivacyCenter/lib/dateGroup.ts
|
|
15617
16093
|
var import_react27 = require("react");
|
|
15618
16094
|
var import_react_i18next13 = require("react-i18next");
|
|
15619
|
-
function monthKey(ts) {
|
|
16095
|
+
function monthKey(ts, locale) {
|
|
15620
16096
|
if (!ts) return "";
|
|
15621
16097
|
try {
|
|
15622
|
-
return new Date(ts).toLocaleDateString(void 0, { month: "long", year: "numeric" });
|
|
16098
|
+
return new Date(ts).toLocaleDateString(locale || void 0, { month: "long", year: "numeric" });
|
|
15623
16099
|
} catch {
|
|
15624
16100
|
return "";
|
|
15625
16101
|
}
|
|
@@ -15695,7 +16171,7 @@ function groupByTime(items, getTs, classify) {
|
|
|
15695
16171
|
);
|
|
15696
16172
|
}
|
|
15697
16173
|
function useRelativeDate() {
|
|
15698
|
-
const { t } = (0, import_react_i18next13.useTranslation)();
|
|
16174
|
+
const { t, i18n: i18n2 } = (0, import_react_i18next13.useTranslation)();
|
|
15699
16175
|
return (0, import_react27.useCallback)(
|
|
15700
16176
|
(ts) => {
|
|
15701
16177
|
if (!ts) return "";
|
|
@@ -15708,7 +16184,7 @@ function useRelativeDate() {
|
|
|
15708
16184
|
if (dayDiff <= 0) return t("today", { defaultValue: "Today" });
|
|
15709
16185
|
if (dayDiff === 1) return t("yesterday", { defaultValue: "Yesterday" });
|
|
15710
16186
|
if (dayDiff < 7) return t("daysAgo", { count: dayDiff, defaultValue: "{{count}} days ago" });
|
|
15711
|
-
return d.toLocaleDateString(void 0, {
|
|
16187
|
+
return d.toLocaleDateString(i18n2.language || void 0, {
|
|
15712
16188
|
month: "short",
|
|
15713
16189
|
day: "numeric",
|
|
15714
16190
|
...d.getFullYear() !== now.getFullYear() ? { year: "numeric" } : {}
|
|
@@ -15717,10 +16193,28 @@ function useRelativeDate() {
|
|
|
15717
16193
|
return ts;
|
|
15718
16194
|
}
|
|
15719
16195
|
},
|
|
15720
|
-
[t]
|
|
16196
|
+
[t, i18n2.language]
|
|
15721
16197
|
);
|
|
15722
16198
|
}
|
|
15723
16199
|
|
|
16200
|
+
// src/RedactoPrivacyCenter/lib/receiptEvent.ts
|
|
16201
|
+
function eventLabelKey(eventType) {
|
|
16202
|
+
const v = String(eventType || "").toUpperCase();
|
|
16203
|
+
if (v.includes("GRANT")) {
|
|
16204
|
+
return "consentGranted";
|
|
16205
|
+
}
|
|
16206
|
+
if (v.includes("WITHDRAW") || v.includes("REVOK")) {
|
|
16207
|
+
return "consentRevoked";
|
|
16208
|
+
}
|
|
16209
|
+
if (v.includes("DECLIN")) {
|
|
16210
|
+
return "consentDeclined";
|
|
16211
|
+
}
|
|
16212
|
+
if (v.includes("EXPIR")) {
|
|
16213
|
+
return "consentExpired";
|
|
16214
|
+
}
|
|
16215
|
+
return void 0;
|
|
16216
|
+
}
|
|
16217
|
+
|
|
15724
16218
|
// src/RedactoPrivacyCenter/components/ReceiptsList.tsx
|
|
15725
16219
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
15726
16220
|
var PAGE_SIZE2 = 10;
|
|
@@ -15756,11 +16250,10 @@ function receiptBadgeStatus(eventType) {
|
|
|
15756
16250
|
if (v.includes("EXPIR")) return "warning";
|
|
15757
16251
|
return "secondary";
|
|
15758
16252
|
}
|
|
15759
|
-
var ReceiptRow = import_react28.default.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel }) => {
|
|
16253
|
+
var ReceiptRow = import_react28.default.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel, eventLabel }) => {
|
|
15760
16254
|
const product = item.product_name_display || item.product_name || "";
|
|
15761
|
-
const
|
|
15762
|
-
const
|
|
15763
|
-
const badgeLabel = event || "-";
|
|
16255
|
+
const primary = product || eventLabel || "-";
|
|
16256
|
+
const badgeLabel = eventLabel || "-";
|
|
15764
16257
|
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_react_native41.View, { style: styles31.row, children: [
|
|
15765
16258
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(NameAvatar, { name: primary, seed: item.uuid || primary, size: "sm" }),
|
|
15766
16259
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_react_native41.View, { style: styles31.body, children: [
|
|
@@ -15787,7 +16280,7 @@ var ReceiptRow = import_react28.default.memo(({ item, colors, downloading, onDow
|
|
|
15787
16280
|
});
|
|
15788
16281
|
ReceiptRow.displayName = "ReceiptRow";
|
|
15789
16282
|
function ReceiptsList() {
|
|
15790
|
-
const { t } = (0, import_react_i18next14.useTranslation)();
|
|
16283
|
+
const { t, i18n: i18n2 } = (0, import_react_i18next14.useTranslation)();
|
|
15791
16284
|
const { accessToken, refreshToken, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
15792
16285
|
const { consentClient } = useBaseUrl();
|
|
15793
16286
|
const { colors } = useTheme();
|
|
@@ -15872,14 +16365,18 @@ function ReceiptsList() {
|
|
|
15872
16365
|
const sections = (0, import_react28.useMemo)(() => {
|
|
15873
16366
|
const map = /* @__PURE__ */ new Map();
|
|
15874
16367
|
for (const r of receipts) {
|
|
15875
|
-
const key = monthKey(r.created_at);
|
|
16368
|
+
const key = monthKey(r.created_at, i18n2.language);
|
|
15876
16369
|
const arr = map.get(key);
|
|
15877
16370
|
if (arr) arr.push(r);
|
|
15878
16371
|
else map.set(key, [r]);
|
|
15879
16372
|
}
|
|
15880
16373
|
return Array.from(map, ([title, data]) => ({ title, data }));
|
|
15881
|
-
}, [receipts]);
|
|
16374
|
+
}, [receipts, i18n2.language]);
|
|
15882
16375
|
const downloadLabel = t("download") || "Download";
|
|
16376
|
+
const eventLabelFor = (r) => {
|
|
16377
|
+
const key = eventLabelKey(r.event_type);
|
|
16378
|
+
return key ? t(key) : r.event_type_display || r.event_type || "-";
|
|
16379
|
+
};
|
|
15883
16380
|
const handleScroll = (0, import_react28.useCallback)(
|
|
15884
16381
|
(e) => {
|
|
15885
16382
|
const { layoutMeasurement, contentOffset, contentSize } = e.nativeEvent;
|
|
@@ -15961,7 +16458,8 @@ function ReceiptsList() {
|
|
|
15961
16458
|
downloading: downloadingUuid === item.uuid,
|
|
15962
16459
|
onDownload: handleDownload,
|
|
15963
16460
|
downloadLabel,
|
|
15964
|
-
dateLabel: relativeLabel(item.created_at)
|
|
16461
|
+
dateLabel: relativeLabel(item.created_at),
|
|
16462
|
+
eventLabel: eventLabelFor(item)
|
|
15965
16463
|
}
|
|
15966
16464
|
)
|
|
15967
16465
|
] }, `${item.uuid || item.created_at}-${index}`)) }, section2.title)),
|
|
@@ -16109,6 +16607,25 @@ var uploadFileWithS2S = async ({
|
|
|
16109
16607
|
}
|
|
16110
16608
|
};
|
|
16111
16609
|
|
|
16610
|
+
// src/RedactoPrivacyCenter/lib/requestType.ts
|
|
16611
|
+
var isRequestType = (requestType, expected) => typeof requestType === "string" && requestType.toLowerCase() === expected.toLowerCase();
|
|
16612
|
+
var isProductScopedRequestType = (requestType) => PRODUCT_SCOPED_REQUEST_TYPES.some((type) => isRequestType(requestType, type));
|
|
16613
|
+
|
|
16614
|
+
// src/RedactoPrivacyCenter/lib/erasureConsent.ts
|
|
16615
|
+
var isErasureRequestType = (requestType) => isRequestType(requestType, "erasure" /* ERASURE */);
|
|
16616
|
+
var resolveErasurePurposeNames = (purposeNames, fallback) => {
|
|
16617
|
+
if (purposeNames.length === 0 || purposeNames.length > MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL) {
|
|
16618
|
+
return fallback;
|
|
16619
|
+
}
|
|
16620
|
+
return purposeNames.join(", ");
|
|
16621
|
+
};
|
|
16622
|
+
var erasureConsentPayload = (requestType, revokeConsentOnFulfilment) => {
|
|
16623
|
+
if (!isErasureRequestType(requestType)) {
|
|
16624
|
+
return {};
|
|
16625
|
+
}
|
|
16626
|
+
return { revoke_consent_on_fulfilment: revokeConsentOnFulfilment };
|
|
16627
|
+
};
|
|
16628
|
+
|
|
16112
16629
|
// src/RedactoPrivacyCenter/lib/filePicker.ts
|
|
16113
16630
|
var import_react_native42 = require("react-native");
|
|
16114
16631
|
async function pickFile() {
|
|
@@ -16283,19 +16800,32 @@ var consentGroupToFormProductGroup = (group) => {
|
|
|
16283
16800
|
};
|
|
16284
16801
|
};
|
|
16285
16802
|
var purposeItemToFormPurpose = (purpose) => {
|
|
16286
|
-
var _a3, _b;
|
|
16803
|
+
var _a3, _b, _c, _d, _e, _f;
|
|
16287
16804
|
return {
|
|
16288
|
-
|
|
16289
|
-
|
|
16805
|
+
// The ledger keys purposes as `purpose_uuid`; the legacy Python
|
|
16806
|
+
// user-consents payload keys some of them as `uuid`. Accept either so the
|
|
16807
|
+
// picker and the submitted `purpose_uuid` resolve on both backends.
|
|
16808
|
+
uuid: (_b = (_a3 = purpose.purpose_uuid) != null ? _a3 : purpose.uuid) != null ? _b : "",
|
|
16809
|
+
purpose_uuid: (_d = (_c = purpose.purpose_uuid) != null ? _c : purpose.uuid) != null ? _d : "",
|
|
16290
16810
|
name: purpose.name,
|
|
16291
|
-
description: (
|
|
16811
|
+
description: (_e = purpose.description) != null ? _e : "",
|
|
16292
16812
|
industries: "",
|
|
16293
16813
|
selected: false,
|
|
16294
16814
|
given_consent: false,
|
|
16295
16815
|
status: purpose.status,
|
|
16296
16816
|
validity: null,
|
|
16297
16817
|
enabled: true,
|
|
16298
|
-
data_elements: ((
|
|
16818
|
+
data_elements: ((_f = purpose.data_elements) != null ? _f : []).map(consentDataElementToFormDataElement)
|
|
16819
|
+
};
|
|
16820
|
+
};
|
|
16821
|
+
var legacyFlatGroup = (form, label) => {
|
|
16822
|
+
var _a3;
|
|
16823
|
+
return {
|
|
16824
|
+
product_uuid: LEGACY_PRODUCT_GROUP_UUID,
|
|
16825
|
+
product_name: label,
|
|
16826
|
+
product_description: null,
|
|
16827
|
+
nominator: null,
|
|
16828
|
+
purposes: ((_a3 = form.purposes) != null ? _a3 : []).map((wrapper) => wrapper == null ? void 0 : wrapper.purpose).filter((purpose) => Boolean(purpose))
|
|
16299
16829
|
};
|
|
16300
16830
|
};
|
|
16301
16831
|
var consentDataElementToFormDataElement = (element) => ({
|
|
@@ -16332,16 +16862,10 @@ var buildGroupDataElements = (group) => {
|
|
|
16332
16862
|
// src/RedactoPrivacyCenter/components/Form.tsx
|
|
16333
16863
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
16334
16864
|
var TOTAL_STEPS = 3;
|
|
16335
|
-
var PRODUCT_SCOPED_REQUEST_TYPES = /* @__PURE__ */ new Set([
|
|
16336
|
-
"ACCESS" /* ACCESS */,
|
|
16337
|
-
"erasure" /* ERASURE */,
|
|
16338
|
-
"CORRECTION" /* CORRECTION */
|
|
16339
|
-
]);
|
|
16340
|
-
var isProductScopedRequestType = (rt) => PRODUCT_SCOPED_REQUEST_TYPES.has(rt);
|
|
16341
16865
|
function Form({ onCreateRequest }) {
|
|
16342
16866
|
const { t } = (0, import_react_i18next16.useTranslation)();
|
|
16343
16867
|
const { accessToken, refreshToken, email, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
16344
|
-
const { consentClient, baseUrl
|
|
16868
|
+
const { consentClient, baseUrl } = useBaseUrl();
|
|
16345
16869
|
const { colors } = useTheme();
|
|
16346
16870
|
const requestTypeLabels = useRequestTypeLabels();
|
|
16347
16871
|
const timePeriodOptions = useTimePeriodOptions();
|
|
@@ -16378,10 +16902,10 @@ function Form({ onCreateRequest }) {
|
|
|
16378
16902
|
});
|
|
16379
16903
|
const [uploadedDocs, setUploadedDocs] = (0, import_react29.useState)([]);
|
|
16380
16904
|
const [isUploading, setIsUploading] = (0, import_react29.useState)(false);
|
|
16381
|
-
const
|
|
16905
|
+
const withUserConsentPickerGroups = (0, import_react29.useCallback)(
|
|
16382
16906
|
async (form, language) => {
|
|
16383
16907
|
var _a3, _b;
|
|
16384
|
-
if (!
|
|
16908
|
+
if (!organizationId || !workspaceId) {
|
|
16385
16909
|
return form;
|
|
16386
16910
|
}
|
|
16387
16911
|
const consents = await fetchUserConsents({
|
|
@@ -16396,16 +16920,18 @@ function Form({ onCreateRequest }) {
|
|
|
16396
16920
|
authContext,
|
|
16397
16921
|
consentClient
|
|
16398
16922
|
});
|
|
16399
|
-
|
|
16923
|
+
const direct = (_a3 = consents == null ? void 0 : consents.direct) != null ? _a3 : [];
|
|
16924
|
+
const nominated = (_b = consents == null ? void 0 : consents.nominated) != null ? _b : [];
|
|
16925
|
+
if (direct.length === 0 && nominated.length === 0) {
|
|
16400
16926
|
return form;
|
|
16401
16927
|
}
|
|
16402
16928
|
return {
|
|
16403
16929
|
...form,
|
|
16404
|
-
direct_groups:
|
|
16405
|
-
nominated_groups:
|
|
16930
|
+
direct_groups: direct.map(consentGroupToFormProductGroup),
|
|
16931
|
+
nominated_groups: nominated.map(consentGroupToFormProductGroup)
|
|
16406
16932
|
};
|
|
16407
16933
|
},
|
|
16408
|
-
[
|
|
16934
|
+
[organizationId, workspaceId, authContext, consentClient]
|
|
16409
16935
|
);
|
|
16410
16936
|
(0, import_react29.useEffect)(() => {
|
|
16411
16937
|
if (!organizationId || !workspaceId || !contact) return;
|
|
@@ -16413,7 +16939,7 @@ function Form({ onCreateRequest }) {
|
|
|
16413
16939
|
setIsLoading(true);
|
|
16414
16940
|
getFormData(organizationId, workspaceId, contact, false, false, authContext, consentClient, langParam).then(async (data) => {
|
|
16415
16941
|
if (!data) return;
|
|
16416
|
-
const withGroups = await
|
|
16942
|
+
const withGroups = await withUserConsentPickerGroups(data, langParam);
|
|
16417
16943
|
if (!isCancelled) setFormDataResponse(withGroups);
|
|
16418
16944
|
}).catch((error) => {
|
|
16419
16945
|
console.warn("Error fetching form data:", error);
|
|
@@ -16430,16 +16956,24 @@ function Form({ onCreateRequest }) {
|
|
|
16430
16956
|
authContext,
|
|
16431
16957
|
consentClient,
|
|
16432
16958
|
langParam,
|
|
16433
|
-
|
|
16959
|
+
withUserConsentPickerGroups
|
|
16434
16960
|
]);
|
|
16435
16961
|
const allGroups = (0, import_react29.useMemo)(() => {
|
|
16436
16962
|
var _a3, _b;
|
|
16437
16963
|
if (!formDataResponse) return [];
|
|
16438
|
-
|
|
16964
|
+
const groups = [
|
|
16439
16965
|
...(_a3 = formDataResponse.direct_groups) != null ? _a3 : [],
|
|
16440
16966
|
...(_b = formDataResponse.nominated_groups) != null ? _b : []
|
|
16441
16967
|
];
|
|
16442
|
-
|
|
16968
|
+
if (groups.length > 0) {
|
|
16969
|
+
return groups;
|
|
16970
|
+
}
|
|
16971
|
+
const flatGroup = legacyFlatGroup(formDataResponse, t("yourData"));
|
|
16972
|
+
if (buildGroupPurposes(flatGroup).length === 0) {
|
|
16973
|
+
return [];
|
|
16974
|
+
}
|
|
16975
|
+
return [flatGroup];
|
|
16976
|
+
}, [formDataResponse, t]);
|
|
16443
16977
|
const skipProductStep = allGroups.length === 1;
|
|
16444
16978
|
const selectedGroup = (0, import_react29.useMemo)(() => {
|
|
16445
16979
|
var _a3, _b;
|
|
@@ -16471,7 +17005,7 @@ function Form({ onCreateRequest }) {
|
|
|
16471
17005
|
setSelectedProductKey(null);
|
|
16472
17006
|
}
|
|
16473
17007
|
setNominationData({ nominee_email: "", nominee_mobile: "" });
|
|
16474
|
-
if (requestType
|
|
17008
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */) && grievanceOptions.length > 0) {
|
|
16475
17009
|
const resetGrievances = grievanceOptions.reduce(
|
|
16476
17010
|
(acc, option) => {
|
|
16477
17011
|
acc[option.value] = false;
|
|
@@ -16500,12 +17034,10 @@ function Form({ onCreateRequest }) {
|
|
|
16500
17034
|
() => groupPurposes.filter((p) => selectedPurposes.has(p.uuid)).map((p) => p.name).filter(Boolean),
|
|
16501
17035
|
[groupPurposes, selectedPurposes]
|
|
16502
17036
|
);
|
|
16503
|
-
const selectedErasurePurposeNames = (0, import_react29.useMemo)(
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
return selectedErasurePurposeList.join(", ");
|
|
16508
|
-
}, [selectedErasurePurposeList, t]);
|
|
17037
|
+
const selectedErasurePurposeNames = (0, import_react29.useMemo)(
|
|
17038
|
+
() => resolveErasurePurposeNames(selectedErasurePurposeList, t("revokeConsentModalYourPurposes")),
|
|
17039
|
+
[selectedErasurePurposeList, t]
|
|
17040
|
+
);
|
|
16509
17041
|
const togglePurpose = (0, import_react29.useCallback)(
|
|
16510
17042
|
(purpose) => {
|
|
16511
17043
|
const uuid = purpose.uuid;
|
|
@@ -16612,7 +17144,7 @@ function Form({ onCreateRequest }) {
|
|
|
16612
17144
|
if (isProductScopedRequestType(requestType)) {
|
|
16613
17145
|
if (allGroups.length === 0) return false;
|
|
16614
17146
|
if (!selectedGroup) return false;
|
|
16615
|
-
if (requestType
|
|
17147
|
+
if (isRequestType(requestType, "CORRECTION" /* CORRECTION */)) {
|
|
16616
17148
|
if (selectedCorrectionFields.size === 0) return false;
|
|
16617
17149
|
return Array.from(selectedCorrectionFields).every((fieldUuid) => {
|
|
16618
17150
|
var _a3, _b;
|
|
@@ -16620,15 +17152,15 @@ function Form({ onCreateRequest }) {
|
|
|
16620
17152
|
return Boolean(((_a3 = v == null ? void 0 : v.current) == null ? void 0 : _a3.trim()) && ((_b = v == null ? void 0 : v.updated) == null ? void 0 : _b.trim()));
|
|
16621
17153
|
});
|
|
16622
17154
|
}
|
|
16623
|
-
if (requestType
|
|
17155
|
+
if (isRequestType(requestType, "ACCESS" /* ACCESS */) || isErasureRequestType(requestType)) {
|
|
16624
17156
|
return selectedPurposes.size > 0;
|
|
16625
17157
|
}
|
|
16626
17158
|
return false;
|
|
16627
17159
|
}
|
|
16628
|
-
if (requestType
|
|
17160
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
16629
17161
|
return Object.values(selectedGrievances).some(Boolean);
|
|
16630
17162
|
}
|
|
16631
|
-
if (requestType
|
|
17163
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
16632
17164
|
return Boolean(nominationData.nominee_email);
|
|
16633
17165
|
}
|
|
16634
17166
|
return false;
|
|
@@ -16642,9 +17174,17 @@ function Form({ onCreateRequest }) {
|
|
|
16642
17174
|
selectedGrievances,
|
|
16643
17175
|
nominationData
|
|
16644
17176
|
]);
|
|
16645
|
-
const isFormValid = (0, import_react29.useMemo)(
|
|
17177
|
+
const isFormValid = (0, import_react29.useMemo)(
|
|
17178
|
+
() => Boolean(contact.trim()) && detailsValid && confirmChecked,
|
|
17179
|
+
[contact, detailsValid, confirmChecked]
|
|
17180
|
+
);
|
|
16646
17181
|
const handleUpload = (0, import_react29.useCallback)(async () => {
|
|
16647
17182
|
if (!organizationId || !workspaceId) return;
|
|
17183
|
+
const caseUuid = formDataResponse == null ? void 0 : formDataResponse.uuid;
|
|
17184
|
+
if (!caseUuid) {
|
|
17185
|
+
import_react_native44.Alert.alert(t("uploadFile"), t("unableToUpload") || "Unable to upload file. Please try again.");
|
|
17186
|
+
return;
|
|
17187
|
+
}
|
|
16648
17188
|
try {
|
|
16649
17189
|
const file = await pickFile();
|
|
16650
17190
|
if (!file) return;
|
|
@@ -16661,11 +17201,11 @@ function Form({ onCreateRequest }) {
|
|
|
16661
17201
|
"payload",
|
|
16662
17202
|
JSON.stringify({
|
|
16663
17203
|
organization_uuid: organizationId || "",
|
|
16664
|
-
space: `privacy/${
|
|
17204
|
+
space: `privacy/${caseUuid}`,
|
|
16665
17205
|
uuid: docUuid,
|
|
16666
17206
|
is_public: true,
|
|
16667
17207
|
allow_ai_processing: true,
|
|
16668
|
-
metadata: { group_by: "privacy", product: "privacy_center" }
|
|
17208
|
+
metadata: { group_by: "privacy", case_uuid: caseUuid, product: "privacy_center" }
|
|
16669
17209
|
})
|
|
16670
17210
|
);
|
|
16671
17211
|
const result = await uploadFileWithS2S({
|
|
@@ -16685,18 +17225,28 @@ function Form({ onCreateRequest }) {
|
|
|
16685
17225
|
} finally {
|
|
16686
17226
|
setIsUploading(false);
|
|
16687
17227
|
}
|
|
16688
|
-
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t]);
|
|
17228
|
+
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t, formDataResponse]);
|
|
16689
17229
|
const removeUploadedDoc = (0, import_react29.useCallback)((uuid) => {
|
|
16690
17230
|
setUploadedDocs((prev) => prev.filter((d) => d.uuid !== uuid));
|
|
16691
17231
|
}, []);
|
|
17232
|
+
const alertSubmitFailed = (0, import_react29.useCallback)(
|
|
17233
|
+
(message) => {
|
|
17234
|
+
import_react_native44.Alert.alert(t("submit"), message || t("unableToSubmit") || "Unable to submit request. Please try again.");
|
|
17235
|
+
},
|
|
17236
|
+
[t]
|
|
17237
|
+
);
|
|
16692
17238
|
const handleSubmit = (0, import_react29.useCallback)(async (revoke = false) => {
|
|
16693
|
-
var _a3
|
|
16694
|
-
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse)
|
|
17239
|
+
var _a3;
|
|
17240
|
+
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse) {
|
|
17241
|
+
alertSubmitFailed();
|
|
17242
|
+
return;
|
|
17243
|
+
}
|
|
16695
17244
|
setRevokeConsentOnFulfilment(revoke);
|
|
16696
17245
|
setIsSubmitting(true);
|
|
16697
17246
|
try {
|
|
16698
17247
|
const isProductScoped = isProductScopedRequestType(requestType);
|
|
16699
|
-
const
|
|
17248
|
+
const isLegacyFlatSelection = (selectedGroup == null ? void 0 : selectedGroup.product_uuid) === LEGACY_PRODUCT_GROUP_UUID;
|
|
17249
|
+
const anchorGroup = isProductScoped && !isLegacyFlatSelection ? selectedGroup : null;
|
|
16700
17250
|
const updatePurposes = Array.from(selectedPurposes).map((uuid) => ({
|
|
16701
17251
|
purpose_uuid: uuid,
|
|
16702
17252
|
data_element_uuids: Array.from(selectedDataElements.get(uuid) || [])
|
|
@@ -16717,27 +17267,27 @@ function Form({ onCreateRequest }) {
|
|
|
16717
17267
|
purposes: updatePurposes,
|
|
16718
17268
|
correction_data: correctionData,
|
|
16719
17269
|
grievance_types: grievanceTypes,
|
|
16720
|
-
...requestType
|
|
17270
|
+
...isRequestType(requestType, "nomination" /* NOMINATION */) ? { nomination_data: nominationData } : {}
|
|
16721
17271
|
},
|
|
16722
|
-
time_period: requestType
|
|
17272
|
+
time_period: isRequestType(requestType, "ACCESS" /* ACCESS */) ? parseInt(timePeriod || "30", 10) : 0,
|
|
16723
17273
|
requestor_note: additionalNote || "",
|
|
16724
|
-
...requestType
|
|
17274
|
+
...erasureConsentPayload(requestType, revoke),
|
|
16725
17275
|
...anchorGroup ? { product_uuid: anchorGroup.product_uuid } : {},
|
|
16726
17276
|
...(anchorGroup == null ? void 0 : anchorGroup.nominator) ? { data_principal_uuid: anchorGroup.nominator.uuid } : {}
|
|
16727
17277
|
};
|
|
16728
17278
|
const response = await createCaseRequest(organizationId, workspaceId, request, false, false, authContext, consentClient);
|
|
16729
|
-
const
|
|
16730
|
-
const newCaseId = (
|
|
17279
|
+
const caseRef = extractCaseRef(response);
|
|
17280
|
+
const newCaseId = (caseRef == null ? void 0 : caseRef.case_id) || (caseRef == null ? void 0 : caseRef.uuid) || null;
|
|
16731
17281
|
if (newCaseId) {
|
|
16732
17282
|
setCaseId(newCaseId);
|
|
16733
|
-
setSubmittedProductName((
|
|
17283
|
+
setSubmittedProductName((_a3 = anchorGroup == null ? void 0 : anchorGroup.product_name) != null ? _a3 : "");
|
|
16734
17284
|
setIsSubmitted(true);
|
|
16735
17285
|
} else {
|
|
16736
|
-
|
|
17286
|
+
alertSubmitFailed();
|
|
16737
17287
|
}
|
|
16738
17288
|
} catch (error) {
|
|
16739
17289
|
console.warn("Error submitting request:", error);
|
|
16740
|
-
|
|
17290
|
+
alertSubmitFailed(error == null ? void 0 : error.message);
|
|
16741
17291
|
} finally {
|
|
16742
17292
|
setIsSubmitting(false);
|
|
16743
17293
|
}
|
|
@@ -16760,11 +17310,13 @@ function Form({ onCreateRequest }) {
|
|
|
16760
17310
|
consentClient,
|
|
16761
17311
|
groupDataElements,
|
|
16762
17312
|
uploadedDocs,
|
|
16763
|
-
|
|
17313
|
+
alertSubmitFailed
|
|
16764
17314
|
]);
|
|
16765
17315
|
const handleSubmitClick = (0, import_react29.useCallback)(() => {
|
|
16766
|
-
if (!isFormValid)
|
|
16767
|
-
|
|
17316
|
+
if (!isFormValid) {
|
|
17317
|
+
return;
|
|
17318
|
+
}
|
|
17319
|
+
if (isErasureRequestType(requestType)) {
|
|
16768
17320
|
setIsErasureConsentModalOpen(true);
|
|
16769
17321
|
return;
|
|
16770
17322
|
}
|
|
@@ -16853,7 +17405,7 @@ function Form({ onCreateRequest }) {
|
|
|
16853
17405
|
if (groupPurposes.length === 0) {
|
|
16854
17406
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.placeholder, { color: colors.textSecondary }], children: t("noPurposesAvailable") || "No purposes available" });
|
|
16855
17407
|
}
|
|
16856
|
-
const isErasure = requestType
|
|
17408
|
+
const isErasure = isErasureRequestType(requestType);
|
|
16857
17409
|
const allPurposesSelected = groupPurposes.every(
|
|
16858
17410
|
(p) => (p.data_elements || []).every((de) => {
|
|
16859
17411
|
var _a3;
|
|
@@ -16973,18 +17525,18 @@ function Form({ onCreateRequest }) {
|
|
|
16973
17525
|
] }),
|
|
16974
17526
|
selectedGroup ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_react_native44.View, { style: styles33.section, children: [
|
|
16975
17527
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("requestDetails") }),
|
|
16976
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.View, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: requestType
|
|
17528
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.View, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: isRequestType(requestType, "CORRECTION" /* CORRECTION */) ? renderCorrectionFields() : renderPurposeFields() })
|
|
16977
17529
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_react_native44.View, { style: [styles33.hintCard, { backgroundColor: colors.surfaceAlt }], children: [
|
|
16978
17530
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon, { name: "circle-alert", size: 18, color: colors.textSecondary }),
|
|
16979
17531
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.hintText, { color: colors.textSecondary }], children: t("selectProductFirst", { defaultValue: "Select a product to continue" }) })
|
|
16980
17532
|
] }),
|
|
16981
|
-
requestType
|
|
17533
|
+
isRequestType(requestType, "ACCESS" /* ACCESS */) && selectedGroup ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_react_native44.View, { style: styles33.section, children: [
|
|
16982
17534
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("timePeriod") }),
|
|
16983
17535
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PCSelect, { value: timePeriod, options: timePeriodOptions, onChange: setTimePeriod, placeholder: t("timePeriod") })
|
|
16984
17536
|
] }) : null
|
|
16985
17537
|
] });
|
|
16986
17538
|
}
|
|
16987
|
-
if (requestType
|
|
17539
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
16988
17540
|
if (grievanceOptions.length === 0) {
|
|
16989
17541
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.View, { style: styles33.stepBody, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.placeholder, { color: colors.textSecondary }], children: t("noPurposesAvailable") || "No grievance types available" }) });
|
|
16990
17542
|
}
|
|
@@ -17000,7 +17552,7 @@ function Form({ onCreateRequest }) {
|
|
|
17000
17552
|
] })
|
|
17001
17553
|
] }) });
|
|
17002
17554
|
}
|
|
17003
|
-
if (requestType
|
|
17555
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
17004
17556
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.View, { style: styles33.stepBody, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_react_native44.View, { style: styles33.section, children: [
|
|
17005
17557
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_native44.Text, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("enterNomineeDetails") }),
|
|
17006
17558
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_react_native44.View, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
@@ -18065,6 +18617,7 @@ function useUnreadCount() {
|
|
|
18065
18617
|
const loadRef = (0, import_react32.useRef)();
|
|
18066
18618
|
loadRef.current = async () => {
|
|
18067
18619
|
if (!organizationId || !workspaceId) return;
|
|
18620
|
+
if (isRefreshBlocked(authContext)) return;
|
|
18068
18621
|
const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
|
|
18069
18622
|
if (res && typeof res.count === "number") setCount(res.count);
|
|
18070
18623
|
};
|
|
@@ -18390,17 +18943,255 @@ function PrivacyCenterEmptyState() {
|
|
|
18390
18943
|
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
|
|
18391
18944
|
}
|
|
18392
18945
|
|
|
18946
|
+
// src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
|
|
18947
|
+
var import_react_i18next21 = require("react-i18next");
|
|
18948
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
18949
|
+
function PrivacyCenterSessionExpired() {
|
|
18950
|
+
const { t } = (0, import_react_i18next21.useTranslation)();
|
|
18951
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
18952
|
+
PCEmpty,
|
|
18953
|
+
{
|
|
18954
|
+
iconName: "shield",
|
|
18955
|
+
title: t("sessionExpiredTitle"),
|
|
18956
|
+
description: t("sessionExpiredDescription")
|
|
18957
|
+
}
|
|
18958
|
+
);
|
|
18959
|
+
}
|
|
18960
|
+
|
|
18961
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
18962
|
+
var import_react36 = require("react");
|
|
18963
|
+
var import_react_native51 = require("react-native");
|
|
18964
|
+
|
|
18965
|
+
// src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
|
|
18966
|
+
var import_react35 = require("react");
|
|
18967
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
18968
|
+
var ProfileSwitchContext = (0, import_react35.createContext)({
|
|
18969
|
+
switchProfile: null
|
|
18970
|
+
});
|
|
18971
|
+
function ProfileSwitchProvider({
|
|
18972
|
+
switchProfile,
|
|
18973
|
+
children
|
|
18974
|
+
}) {
|
|
18975
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
|
|
18976
|
+
}
|
|
18977
|
+
function useProfileSwitch() {
|
|
18978
|
+
return (0, import_react35.useContext)(ProfileSwitchContext);
|
|
18979
|
+
}
|
|
18980
|
+
|
|
18981
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18982
|
+
var import_react_native50 = require("react-native");
|
|
18983
|
+
var import_react_i18next22 = require("react-i18next");
|
|
18984
|
+
|
|
18985
|
+
// src/RedactoPrivacyCenter/lib/identityLabels.ts
|
|
18986
|
+
var identityPrimaryValue = (candidate) => {
|
|
18987
|
+
const orgUserId = candidate.org_user_id || "";
|
|
18988
|
+
const email = candidate.primary_email || "";
|
|
18989
|
+
const mobile = candidate.primary_mobile || "";
|
|
18990
|
+
return { orgUserId, fallback: email || mobile || candidate.uuid };
|
|
18991
|
+
};
|
|
18992
|
+
var identitySecondaryLabels = (candidate, primaryLabel) => {
|
|
18993
|
+
const email = candidate.primary_email || "";
|
|
18994
|
+
const mobile = candidate.primary_mobile || "";
|
|
18995
|
+
return [email, mobile].filter(
|
|
18996
|
+
(value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
|
|
18997
|
+
);
|
|
18998
|
+
};
|
|
18999
|
+
var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
|
|
19000
|
+
|
|
19001
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
19002
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
19003
|
+
var SelectUser = ({
|
|
19004
|
+
candidates,
|
|
19005
|
+
onSelect,
|
|
19006
|
+
busyUuid,
|
|
19007
|
+
error
|
|
19008
|
+
}) => {
|
|
19009
|
+
const { t } = (0, import_react_i18next22.useTranslation)();
|
|
19010
|
+
const { colors } = useTheme();
|
|
19011
|
+
const selectable = selectableIdentities(candidates);
|
|
19012
|
+
const busy = busyUuid !== null;
|
|
19013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.ScrollView, { contentContainerStyle: styles39.container, children: [
|
|
19014
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
|
|
19015
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
|
|
19016
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
|
|
19017
|
+
selectable.map((candidate) => {
|
|
19018
|
+
const { orgUserId, fallback } = identityPrimaryValue(candidate);
|
|
19019
|
+
const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
|
|
19020
|
+
const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
|
|
19021
|
+
const isBusy = busyUuid === candidate.uuid;
|
|
19022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
19023
|
+
import_react_native50.TouchableOpacity,
|
|
19024
|
+
{
|
|
19025
|
+
accessibilityRole: "button",
|
|
19026
|
+
disabled: busy,
|
|
19027
|
+
onPress: () => onSelect(candidate.uuid),
|
|
19028
|
+
style: [
|
|
19029
|
+
styles39.row,
|
|
19030
|
+
{
|
|
19031
|
+
backgroundColor: colors.surface,
|
|
19032
|
+
borderColor: isBusy ? colors.primary : colors.border
|
|
19033
|
+
}
|
|
19034
|
+
],
|
|
19035
|
+
children: [
|
|
19036
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.View, { style: styles39.rowText, children: [
|
|
19037
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
|
|
19038
|
+
secondaryLabels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
19039
|
+
import_react_native50.Text,
|
|
19040
|
+
{
|
|
19041
|
+
style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
|
|
19042
|
+
children: label
|
|
19043
|
+
},
|
|
19044
|
+
label
|
|
19045
|
+
))
|
|
19046
|
+
] }),
|
|
19047
|
+
isBusy ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, { color: colors.textSecondary }], children: t("signingInEllipsis") }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary })
|
|
19048
|
+
]
|
|
19049
|
+
},
|
|
19050
|
+
candidate.uuid
|
|
19051
|
+
);
|
|
19052
|
+
})
|
|
19053
|
+
] });
|
|
19054
|
+
};
|
|
19055
|
+
var styles39 = import_react_native50.StyleSheet.create({
|
|
19056
|
+
container: { padding: spacing.lg },
|
|
19057
|
+
heading: { textAlign: "center" },
|
|
19058
|
+
subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
|
|
19059
|
+
error: { textAlign: "center", marginBottom: spacing.md },
|
|
19060
|
+
row: {
|
|
19061
|
+
flexDirection: "row",
|
|
19062
|
+
alignItems: "center",
|
|
19063
|
+
borderWidth: 1,
|
|
19064
|
+
borderRadius: radii.md,
|
|
19065
|
+
padding: spacing.md,
|
|
19066
|
+
marginBottom: spacing.sm
|
|
19067
|
+
},
|
|
19068
|
+
rowText: { flex: 1 },
|
|
19069
|
+
secondary: { marginTop: 2 }
|
|
19070
|
+
});
|
|
19071
|
+
|
|
19072
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
19073
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
19074
|
+
function SelectUserGate({ children }) {
|
|
19075
|
+
var _a3, _b;
|
|
19076
|
+
const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
|
|
19077
|
+
const { consentClient } = useBaseUrl();
|
|
19078
|
+
const { colors } = useTheme();
|
|
19079
|
+
const insets = useSafeInsets();
|
|
19080
|
+
const [phase, setPhase] = (0, import_react36.useState)("checking");
|
|
19081
|
+
const [candidates, setCandidates] = (0, import_react36.useState)([]);
|
|
19082
|
+
const [busyUuid, setBusyUuid] = (0, import_react36.useState)(null);
|
|
19083
|
+
const [selectError, setSelectError] = (0, import_react36.useState)(null);
|
|
19084
|
+
const [pinnedOrgUserId, setPinnedOrgUserId] = (0, import_react36.useState)(null);
|
|
19085
|
+
const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
|
|
19086
|
+
(0, import_react36.useEffect)(() => {
|
|
19087
|
+
let cancelled = false;
|
|
19088
|
+
if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
|
|
19089
|
+
setPhase("resolved");
|
|
19090
|
+
return;
|
|
19091
|
+
}
|
|
19092
|
+
const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
|
|
19093
|
+
setPhase(isPinned ? "resolved" : "checking");
|
|
19094
|
+
(async () => {
|
|
19095
|
+
var _a4;
|
|
19096
|
+
try {
|
|
19097
|
+
const res = await consentClient.listIdentities({
|
|
19098
|
+
organisationUuid: organizationId,
|
|
19099
|
+
workspaceUuid: workspaceId,
|
|
19100
|
+
authToken: accessToken
|
|
19101
|
+
});
|
|
19102
|
+
if (cancelled) return;
|
|
19103
|
+
const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
|
|
19104
|
+
setCandidates(list);
|
|
19105
|
+
setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
|
|
19106
|
+
} catch {
|
|
19107
|
+
if (cancelled) return;
|
|
19108
|
+
setCandidates([]);
|
|
19109
|
+
setPhase("resolved");
|
|
19110
|
+
}
|
|
19111
|
+
})();
|
|
19112
|
+
return () => {
|
|
19113
|
+
cancelled = true;
|
|
19114
|
+
};
|
|
19115
|
+
}, [organizationId, workspaceId, tokenOrgUserId]);
|
|
19116
|
+
const handleSelect = (0, import_react36.useCallback)(
|
|
19117
|
+
async (principalUuid) => {
|
|
19118
|
+
var _a4, _b2;
|
|
19119
|
+
if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
|
|
19120
|
+
setBusyUuid(principalUuid);
|
|
19121
|
+
setSelectError(null);
|
|
19122
|
+
try {
|
|
19123
|
+
const res = await consentClient.selectPrincipal(
|
|
19124
|
+
{
|
|
19125
|
+
organisationUuid: organizationId,
|
|
19126
|
+
workspaceUuid: workspaceId,
|
|
19127
|
+
authToken: accessToken
|
|
19128
|
+
},
|
|
19129
|
+
principalUuid
|
|
19130
|
+
);
|
|
19131
|
+
if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
|
|
19132
|
+
throw new Error("select-principal returned no tokens");
|
|
19133
|
+
}
|
|
19134
|
+
const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
|
|
19135
|
+
setPinnedOrgUserId(pinned);
|
|
19136
|
+
setPhase("resolved");
|
|
19137
|
+
updateTokens(res.token, res.refresh_token);
|
|
19138
|
+
} catch (error) {
|
|
19139
|
+
setSelectError(
|
|
19140
|
+
error instanceof Error ? error.message : "Failed to switch profile"
|
|
19141
|
+
);
|
|
19142
|
+
} finally {
|
|
19143
|
+
setBusyUuid(null);
|
|
19144
|
+
}
|
|
19145
|
+
},
|
|
19146
|
+
[accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
|
|
19147
|
+
);
|
|
19148
|
+
const canSwitch = candidates.length > 1;
|
|
19149
|
+
const switchProfile = (0, import_react36.useCallback)(() => {
|
|
19150
|
+
if (!canSwitch) return;
|
|
19151
|
+
setSelectError(null);
|
|
19152
|
+
setPhase("picking");
|
|
19153
|
+
}, [canSwitch]);
|
|
19154
|
+
if (phase === "checking" || phase === "picking") {
|
|
19155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19156
|
+
import_react_native51.View,
|
|
19157
|
+
{
|
|
19158
|
+
style: [
|
|
19159
|
+
styles40.screen,
|
|
19160
|
+
{
|
|
19161
|
+
backgroundColor: colors.canvasSubtle,
|
|
19162
|
+
paddingTop: insets.top,
|
|
19163
|
+
paddingBottom: insets.bottom
|
|
19164
|
+
}
|
|
19165
|
+
],
|
|
19166
|
+
children: phase === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19167
|
+
SelectUser,
|
|
19168
|
+
{
|
|
19169
|
+
candidates,
|
|
19170
|
+
onSelect: handleSelect,
|
|
19171
|
+
busyUuid,
|
|
19172
|
+
error: selectError
|
|
19173
|
+
}
|
|
19174
|
+
)
|
|
19175
|
+
}
|
|
19176
|
+
);
|
|
19177
|
+
}
|
|
19178
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
|
|
19179
|
+
}
|
|
19180
|
+
var styles40 = import_react_native51.StyleSheet.create({
|
|
19181
|
+
screen: { flex: 1 }
|
|
19182
|
+
});
|
|
19183
|
+
|
|
18393
19184
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
18394
|
-
var
|
|
18395
|
-
var
|
|
18396
|
-
var
|
|
19185
|
+
var import_react41 = require("react");
|
|
19186
|
+
var import_react_native59 = require("react-native");
|
|
19187
|
+
var import_react_i18next28 = require("react-i18next");
|
|
18397
19188
|
|
|
18398
19189
|
// src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
|
|
18399
|
-
var
|
|
18400
|
-
var
|
|
18401
|
-
var
|
|
19190
|
+
var import_react_native52 = require("react-native");
|
|
19191
|
+
var import_react_i18next23 = require("react-i18next");
|
|
19192
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
18402
19193
|
function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
18403
|
-
const { t } = (0,
|
|
19194
|
+
const { t } = (0, import_react_i18next23.useTranslation)();
|
|
18404
19195
|
const { colors } = useTheme();
|
|
18405
19196
|
const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
|
|
18406
19197
|
const details = selectedCase.request_details;
|
|
@@ -18432,36 +19223,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18432
19223
|
}
|
|
18433
19224
|
const description = selectedCase.description_display || selectedCase.description;
|
|
18434
19225
|
const hasDetails = description || details && (details.purposes && details.purposes.length > 0 || details.correction_data && details.correction_data.length > 0 || details.grievance_types && details.grievance_types.length > 0 || details.nomination_data);
|
|
18435
|
-
return /* @__PURE__ */ (0,
|
|
18436
|
-
/* @__PURE__ */ (0,
|
|
19226
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.ScrollView, { style: [styles41.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles41.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
|
|
19227
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.timeline, children: steps.map((step, i) => {
|
|
18437
19228
|
const isLast = i === steps.length - 1;
|
|
18438
|
-
return /* @__PURE__ */ (0,
|
|
18439
|
-
/* @__PURE__ */ (0,
|
|
18440
|
-
/* @__PURE__ */ (0,
|
|
18441
|
-
|
|
19229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.stepRow, children: [
|
|
19230
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.gutter, children: [
|
|
19231
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
19232
|
+
import_react_native52.View,
|
|
18442
19233
|
{
|
|
18443
19234
|
style: [
|
|
18444
|
-
|
|
19235
|
+
styles41.dot,
|
|
18445
19236
|
step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
|
|
18446
19237
|
],
|
|
18447
|
-
children: step.state === "done" ? /* @__PURE__ */ (0,
|
|
19238
|
+
children: step.state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.dotInner, { backgroundColor: colors.primaryText }] }) : null
|
|
18448
19239
|
}
|
|
18449
19240
|
),
|
|
18450
|
-
!isLast ? /* @__PURE__ */ (0,
|
|
19241
|
+
!isLast ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
|
|
18451
19242
|
] }),
|
|
18452
|
-
/* @__PURE__ */ (0,
|
|
18453
|
-
/* @__PURE__ */ (0,
|
|
18454
|
-
step.date ? /* @__PURE__ */ (0,
|
|
19243
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
|
|
19244
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
|
|
19245
|
+
step.date ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
|
|
18455
19246
|
] })
|
|
18456
19247
|
] }, `${step.label}-${i}`);
|
|
18457
19248
|
}) }),
|
|
18458
|
-
hasDetails ? /* @__PURE__ */ (0,
|
|
18459
|
-
description ? /* @__PURE__ */ (0,
|
|
18460
|
-
/* @__PURE__ */ (0,
|
|
18461
|
-
/* @__PURE__ */ (0,
|
|
19249
|
+
hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
19250
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19251
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
|
|
19252
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.descriptionText, { color: colors.text }], children: description })
|
|
18462
19253
|
] }) : null,
|
|
18463
|
-
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0,
|
|
18464
|
-
/* @__PURE__ */ (0,
|
|
19254
|
+
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19255
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
|
|
18465
19256
|
details.purposes.map((rawP, idx) => {
|
|
18466
19257
|
const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
|
|
18467
19258
|
const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
|
|
@@ -18469,10 +19260,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18469
19260
|
const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
|
|
18470
19261
|
const dataElements = Array.isArray(p == null ? void 0 : p.data_elements) ? p.data_elements.filter((de) => (de == null ? void 0 : de.selected) || (de == null ? void 0 : de.given_consent)) : [];
|
|
18471
19262
|
const dataElementUuids = Array.isArray(rawP == null ? void 0 : rawP.data_element_uuids) ? rawP.data_element_uuids : Array.isArray(p == null ? void 0 : p.data_element_uuids) ? p.data_element_uuids : [];
|
|
18472
|
-
return /* @__PURE__ */ (0,
|
|
18473
|
-
/* @__PURE__ */ (0,
|
|
18474
|
-
purposeDescription ? /* @__PURE__ */ (0,
|
|
18475
|
-
dataElements.length > 0 ? /* @__PURE__ */ (0,
|
|
19263
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native52.StyleSheet.hairlineWidth }], children: [
|
|
19264
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
|
|
19265
|
+
purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
|
|
19266
|
+
dataElements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.chipRow, children: dataElements.map((de) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], children: [
|
|
18476
19267
|
dataElementUuids.length,
|
|
18477
19268
|
" ",
|
|
18478
19269
|
t("dataElements") || "data elements"
|
|
@@ -18480,44 +19271,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18480
19271
|
] }, purposeId);
|
|
18481
19272
|
})
|
|
18482
19273
|
] }) : null,
|
|
18483
|
-
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ (0,
|
|
18484
|
-
/* @__PURE__ */ (0,
|
|
18485
|
-
details.correction_data.map((item, idx) => /* @__PURE__ */ (0,
|
|
18486
|
-
/* @__PURE__ */ (0,
|
|
18487
|
-
/* @__PURE__ */ (0,
|
|
18488
|
-
/* @__PURE__ */ (0,
|
|
18489
|
-
/* @__PURE__ */ (0,
|
|
18490
|
-
/* @__PURE__ */ (0,
|
|
19274
|
+
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19275
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
|
|
19276
|
+
details.correction_data.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native52.StyleSheet.hairlineWidth }], children: [
|
|
19277
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
|
|
19278
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValues, children: [
|
|
19279
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19280
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
|
|
19281
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
|
|
18491
19282
|
] }),
|
|
18492
|
-
/* @__PURE__ */ (0,
|
|
18493
|
-
/* @__PURE__ */ (0,
|
|
18494
|
-
/* @__PURE__ */ (0,
|
|
18495
|
-
/* @__PURE__ */ (0,
|
|
19283
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
19284
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19285
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
|
|
19286
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
|
|
18496
19287
|
] })
|
|
18497
19288
|
] })
|
|
18498
19289
|
] }, idx))
|
|
18499
19290
|
] }) : null,
|
|
18500
|
-
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0,
|
|
18501
|
-
/* @__PURE__ */ (0,
|
|
18502
|
-
/* @__PURE__ */ (0,
|
|
19291
|
+
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19292
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
|
|
19293
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
|
|
18503
19294
|
] }) : null,
|
|
18504
|
-
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0,
|
|
18505
|
-
/* @__PURE__ */ (0,
|
|
18506
|
-
details.nomination_data.nominee_email ? /* @__PURE__ */ (0,
|
|
18507
|
-
/* @__PURE__ */ (0,
|
|
18508
|
-
/* @__PURE__ */ (0,
|
|
19295
|
+
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19296
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
|
|
19297
|
+
details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19298
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
|
|
19299
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
|
|
18509
19300
|
] }) : null,
|
|
18510
|
-
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0,
|
|
18511
|
-
/* @__PURE__ */ (0,
|
|
18512
|
-
/* @__PURE__ */ (0,
|
|
19301
|
+
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19302
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
|
|
19303
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
|
|
18513
19304
|
] }) : null
|
|
18514
19305
|
] }) : null
|
|
18515
19306
|
] }) : null,
|
|
18516
|
-
/* @__PURE__ */ (0,
|
|
19307
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Footer, {}) })
|
|
18517
19308
|
] });
|
|
18518
19309
|
}
|
|
18519
19310
|
var DOT = 22;
|
|
18520
|
-
var
|
|
19311
|
+
var styles41 = import_react_native52.StyleSheet.create({
|
|
18521
19312
|
container: {
|
|
18522
19313
|
flex: 1
|
|
18523
19314
|
},
|
|
@@ -18638,51 +19429,51 @@ var styles39 = import_react_native50.StyleSheet.create({
|
|
|
18638
19429
|
});
|
|
18639
19430
|
|
|
18640
19431
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
18641
|
-
var
|
|
18642
|
-
var
|
|
18643
|
-
var
|
|
19432
|
+
var import_react40 = require("react");
|
|
19433
|
+
var import_react_native58 = require("react-native");
|
|
19434
|
+
var import_react_i18next27 = require("react-i18next");
|
|
18644
19435
|
|
|
18645
19436
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18646
|
-
var
|
|
18647
|
-
var
|
|
19437
|
+
var import_react38 = __toESM(require("react"));
|
|
19438
|
+
var import_react_i18next25 = require("react-i18next");
|
|
18648
19439
|
|
|
18649
19440
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18650
|
-
var
|
|
18651
|
-
var
|
|
19441
|
+
var import_react37 = __toESM(require("react"));
|
|
19442
|
+
var import_react_native54 = require("react-native");
|
|
18652
19443
|
|
|
18653
19444
|
// src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
|
|
18654
|
-
var
|
|
18655
|
-
var
|
|
19445
|
+
var import_react_native53 = require("react-native");
|
|
19446
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
18656
19447
|
function AttachmentCard({ doc }) {
|
|
18657
19448
|
const { colors } = useTheme();
|
|
18658
19449
|
const downloadUrl = getDownloadUrl(doc.file_url);
|
|
18659
19450
|
const handlePress = () => {
|
|
18660
19451
|
if (downloadUrl) {
|
|
18661
|
-
|
|
19452
|
+
import_react_native53.Linking.openURL(downloadUrl);
|
|
18662
19453
|
}
|
|
18663
19454
|
};
|
|
18664
|
-
return /* @__PURE__ */ (0,
|
|
18665
|
-
|
|
19455
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
19456
|
+
import_react_native53.TouchableOpacity,
|
|
18666
19457
|
{
|
|
18667
|
-
style: [
|
|
19458
|
+
style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
|
|
18668
19459
|
onPress: handlePress,
|
|
18669
19460
|
disabled: !downloadUrl,
|
|
18670
19461
|
activeOpacity: 0.7,
|
|
18671
19462
|
children: [
|
|
18672
|
-
/* @__PURE__ */ (0,
|
|
18673
|
-
/* @__PURE__ */ (0,
|
|
18674
|
-
/* @__PURE__ */ (0,
|
|
18675
|
-
doc.file_size ? /* @__PURE__ */ (0,
|
|
19463
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
|
|
19464
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react_native53.View, { style: styles42.info, children: [
|
|
19465
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
|
|
19466
|
+
doc.file_size ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
|
|
18676
19467
|
] })
|
|
18677
19468
|
]
|
|
18678
19469
|
}
|
|
18679
19470
|
);
|
|
18680
19471
|
}
|
|
18681
|
-
var
|
|
19472
|
+
var styles42 = import_react_native53.StyleSheet.create({
|
|
18682
19473
|
container: {
|
|
18683
19474
|
flexDirection: "row",
|
|
18684
19475
|
alignItems: "center",
|
|
18685
|
-
borderWidth:
|
|
19476
|
+
borderWidth: import_react_native53.StyleSheet.hairlineWidth,
|
|
18686
19477
|
borderRadius: radii.md,
|
|
18687
19478
|
paddingHorizontal: spacing.sm + 2,
|
|
18688
19479
|
paddingVertical: spacing.sm,
|
|
@@ -18702,11 +19493,11 @@ var styles40 = import_react_native51.StyleSheet.create({
|
|
|
18702
19493
|
});
|
|
18703
19494
|
|
|
18704
19495
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18705
|
-
var
|
|
19496
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
18706
19497
|
var AVATAR_SIZE = 28;
|
|
18707
19498
|
var AVATAR_GUTTER = 36;
|
|
18708
19499
|
function TeamAvatar({ tint }) {
|
|
18709
|
-
return /* @__PURE__ */ (0,
|
|
19500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: [styles43.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
|
|
18710
19501
|
}
|
|
18711
19502
|
function ChatBubbleImpl({
|
|
18712
19503
|
message,
|
|
@@ -18733,28 +19524,28 @@ function ChatBubbleImpl({
|
|
|
18733
19524
|
borderBottomRightRadius: BUBBLE_RADIUS,
|
|
18734
19525
|
borderBottomLeftRadius: tailRadius
|
|
18735
19526
|
};
|
|
18736
|
-
const bubble = /* @__PURE__ */ (0,
|
|
18737
|
-
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0,
|
|
18738
|
-
message.body ? /* @__PURE__ */ (0,
|
|
18739
|
-
message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0,
|
|
19527
|
+
const bubble = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.bubble, bubbleStyle], children: [
|
|
19528
|
+
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
|
|
19529
|
+
message.body ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
|
|
19530
|
+
message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: styles43.attachments, children: message.documents.map((doc) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AttachmentCard, { doc }, doc.uuid)) }) : null
|
|
18740
19531
|
] });
|
|
18741
|
-
return /* @__PURE__ */ (0,
|
|
18742
|
-
|
|
19532
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
19533
|
+
import_react_native54.View,
|
|
18743
19534
|
{
|
|
18744
19535
|
style: [
|
|
18745
|
-
|
|
18746
|
-
isPrincipal ?
|
|
19536
|
+
styles43.row,
|
|
19537
|
+
isPrincipal ? styles43.rowRight : styles43.rowLeft,
|
|
18747
19538
|
{ marginTop: isFirstInGroup ? spacing.md : 2 }
|
|
18748
19539
|
],
|
|
18749
19540
|
children: [
|
|
18750
|
-
!isPrincipal ? /* @__PURE__ */ (0,
|
|
18751
|
-
/* @__PURE__ */ (0,
|
|
19541
|
+
!isPrincipal ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: styles43.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TeamAvatar, { tint: colors.primary }) : null }) : null,
|
|
19542
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
|
|
18752
19543
|
bubble,
|
|
18753
|
-
isLastInGroup ? /* @__PURE__ */ (0,
|
|
18754
|
-
|
|
19544
|
+
isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
19545
|
+
import_react_native54.Text,
|
|
18755
19546
|
{
|
|
18756
19547
|
style: [
|
|
18757
|
-
|
|
19548
|
+
styles43.timestamp,
|
|
18758
19549
|
{ color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
|
|
18759
19550
|
],
|
|
18760
19551
|
children: formatMessageTime(timestamp)
|
|
@@ -18765,8 +19556,8 @@ function ChatBubbleImpl({
|
|
|
18765
19556
|
}
|
|
18766
19557
|
);
|
|
18767
19558
|
}
|
|
18768
|
-
var ChatBubble =
|
|
18769
|
-
var
|
|
19559
|
+
var ChatBubble = import_react37.default.memo(ChatBubbleImpl);
|
|
19560
|
+
var styles43 = import_react_native54.StyleSheet.create({
|
|
18770
19561
|
row: {
|
|
18771
19562
|
flexDirection: "row",
|
|
18772
19563
|
paddingHorizontal: spacing.md,
|
|
@@ -18826,9 +19617,9 @@ var styles41 = import_react_native52.StyleSheet.create({
|
|
|
18826
19617
|
});
|
|
18827
19618
|
|
|
18828
19619
|
// src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
|
|
18829
|
-
var
|
|
18830
|
-
var
|
|
18831
|
-
var
|
|
19620
|
+
var import_react_native55 = require("react-native");
|
|
19621
|
+
var import_react_i18next24 = require("react-i18next");
|
|
19622
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
18832
19623
|
var STATUS_BADGE_MAP = {
|
|
18833
19624
|
pending: "warning",
|
|
18834
19625
|
under_review: "info",
|
|
@@ -18848,20 +19639,20 @@ function humanize(value) {
|
|
|
18848
19639
|
}
|
|
18849
19640
|
function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
|
|
18850
19641
|
var _a3;
|
|
18851
|
-
const { t } = (0,
|
|
19642
|
+
const { t } = (0, import_react_i18next24.useTranslation)();
|
|
18852
19643
|
const { colors } = useTheme();
|
|
18853
19644
|
const meta = message.document_request_metadata;
|
|
18854
19645
|
if (!meta) return null;
|
|
18855
19646
|
const status = meta.document_request_status;
|
|
18856
19647
|
const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
|
|
18857
19648
|
const requestEventUuid = meta.document_request_uuid;
|
|
18858
|
-
return /* @__PURE__ */ (0,
|
|
18859
|
-
/* @__PURE__ */ (0,
|
|
18860
|
-
/* @__PURE__ */ (0,
|
|
18861
|
-
/* @__PURE__ */ (0,
|
|
18862
|
-
/* @__PURE__ */ (0,
|
|
19649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
|
|
19650
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.header, children: [
|
|
19651
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.titleRow, children: [
|
|
19652
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
|
|
19653
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
|
|
18863
19654
|
] }),
|
|
18864
|
-
/* @__PURE__ */ (0,
|
|
19655
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
18865
19656
|
PCBadge,
|
|
18866
19657
|
{
|
|
18867
19658
|
status: STATUS_BADGE_MAP[status] || "info",
|
|
@@ -18869,30 +19660,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
|
|
|
18869
19660
|
}
|
|
18870
19661
|
)
|
|
18871
19662
|
] }),
|
|
18872
|
-
meta.accepted_document ? /* @__PURE__ */ (0,
|
|
19663
|
+
meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
|
|
18873
19664
|
accepted: meta.accepted_document,
|
|
18874
19665
|
defaultValue: `Accepted: ${meta.accepted_document}`
|
|
18875
19666
|
}) }) : null,
|
|
18876
|
-
meta.rejection_reason ? /* @__PURE__ */ (0,
|
|
18877
|
-
/* @__PURE__ */ (0,
|
|
19667
|
+
meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
|
|
19668
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.Text, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
|
|
18878
19669
|
t("rejectionReasonLabel") || "Rejection reason",
|
|
18879
19670
|
":"
|
|
18880
19671
|
] }),
|
|
18881
|
-
/* @__PURE__ */ (0,
|
|
19672
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
|
|
18882
19673
|
] }) : null,
|
|
18883
|
-
canUpload && requestEventUuid ? /* @__PURE__ */ (0,
|
|
18884
|
-
|
|
19674
|
+
canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
19675
|
+
import_react_native55.TouchableOpacity,
|
|
18885
19676
|
{
|
|
18886
|
-
style: [
|
|
19677
|
+
style: [styles44.uploadButton, { backgroundColor: colors.primary }],
|
|
18887
19678
|
onPress: () => onUpload(requestEventUuid),
|
|
18888
19679
|
disabled: isSubmitting,
|
|
18889
19680
|
activeOpacity: 0.7,
|
|
18890
|
-
children: /* @__PURE__ */ (0,
|
|
19681
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
|
|
18891
19682
|
}
|
|
18892
19683
|
) : null
|
|
18893
19684
|
] });
|
|
18894
19685
|
}
|
|
18895
|
-
var
|
|
19686
|
+
var styles44 = import_react_native55.StyleSheet.create({
|
|
18896
19687
|
container: {
|
|
18897
19688
|
borderWidth: 1.5,
|
|
18898
19689
|
borderStyle: "dashed",
|
|
@@ -18945,20 +19736,20 @@ var styles42 = import_react_native53.StyleSheet.create({
|
|
|
18945
19736
|
});
|
|
18946
19737
|
|
|
18947
19738
|
// src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
|
|
18948
|
-
var
|
|
18949
|
-
var
|
|
19739
|
+
var import_react_native56 = require("react-native");
|
|
19740
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
18950
19741
|
function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
|
|
18951
19742
|
const { colors } = useTheme();
|
|
18952
|
-
return /* @__PURE__ */ (0,
|
|
18953
|
-
/* @__PURE__ */ (0,
|
|
18954
|
-
/* @__PURE__ */ (0,
|
|
18955
|
-
/* @__PURE__ */ (0,
|
|
18956
|
-
subText ? /* @__PURE__ */ (0,
|
|
19743
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: bgColor }], children: [
|
|
19744
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.View, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
|
|
19745
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: styles45.textContainer, children: [
|
|
19746
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.text, { color }], children: text }),
|
|
19747
|
+
subText ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
|
|
18957
19748
|
] }),
|
|
18958
|
-
/* @__PURE__ */ (0,
|
|
19749
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
|
|
18959
19750
|
] });
|
|
18960
19751
|
}
|
|
18961
|
-
var
|
|
19752
|
+
var styles45 = import_react_native56.StyleSheet.create({
|
|
18962
19753
|
container: {
|
|
18963
19754
|
flexDirection: "row",
|
|
18964
19755
|
alignItems: "center",
|
|
@@ -18997,10 +19788,10 @@ var styles43 = import_react_native54.StyleSheet.create({
|
|
|
18997
19788
|
});
|
|
18998
19789
|
|
|
18999
19790
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
19000
|
-
var
|
|
19001
|
-
var CheckIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19002
|
-
var XIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19003
|
-
var RefreshIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19791
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
19792
|
+
var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
|
|
19793
|
+
var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
|
|
19794
|
+
var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
|
|
19004
19795
|
function MessageItemImpl({
|
|
19005
19796
|
message,
|
|
19006
19797
|
onUploadForRequest,
|
|
@@ -19010,14 +19801,14 @@ function MessageItemImpl({
|
|
|
19010
19801
|
isLastInGroup = true
|
|
19011
19802
|
}) {
|
|
19012
19803
|
var _a3, _b;
|
|
19013
|
-
const { t } = (0,
|
|
19804
|
+
const { t } = (0, import_react_i18next25.useTranslation)();
|
|
19014
19805
|
const isPrincipal = message.sender_role === "data_principal";
|
|
19015
19806
|
const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
|
|
19016
19807
|
switch (message.message_type) {
|
|
19017
19808
|
case "message_sent":
|
|
19018
19809
|
case "document_submitted":
|
|
19019
19810
|
case "document_replaced":
|
|
19020
|
-
return /* @__PURE__ */ (0,
|
|
19811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19021
19812
|
ChatBubble,
|
|
19022
19813
|
{
|
|
19023
19814
|
message,
|
|
@@ -19029,8 +19820,8 @@ function MessageItemImpl({
|
|
|
19029
19820
|
}
|
|
19030
19821
|
);
|
|
19031
19822
|
case "document_requested":
|
|
19032
|
-
return /* @__PURE__ */ (0,
|
|
19033
|
-
/* @__PURE__ */ (0,
|
|
19823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
|
|
19824
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19034
19825
|
ChatBubble,
|
|
19035
19826
|
{
|
|
19036
19827
|
message,
|
|
@@ -19041,7 +19832,7 @@ function MessageItemImpl({
|
|
|
19041
19832
|
isLastInGroup
|
|
19042
19833
|
}
|
|
19043
19834
|
),
|
|
19044
|
-
/* @__PURE__ */ (0,
|
|
19835
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19045
19836
|
DocumentRequestCard,
|
|
19046
19837
|
{
|
|
19047
19838
|
message,
|
|
@@ -19052,10 +19843,10 @@ function MessageItemImpl({
|
|
|
19052
19843
|
)
|
|
19053
19844
|
] });
|
|
19054
19845
|
case "document_approved":
|
|
19055
|
-
return /* @__PURE__ */ (0,
|
|
19846
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19056
19847
|
StatusEvent,
|
|
19057
19848
|
{
|
|
19058
|
-
icon: /* @__PURE__ */ (0,
|
|
19849
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { color: "#059669" }),
|
|
19059
19850
|
color: "#059669",
|
|
19060
19851
|
bgColor: "rgba(16, 185, 129, 0.08)",
|
|
19061
19852
|
borderColor: "rgba(16, 185, 129, 0.2)",
|
|
@@ -19064,10 +19855,10 @@ function MessageItemImpl({
|
|
|
19064
19855
|
}
|
|
19065
19856
|
);
|
|
19066
19857
|
case "document_rejected":
|
|
19067
|
-
return /* @__PURE__ */ (0,
|
|
19858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19068
19859
|
StatusEvent,
|
|
19069
19860
|
{
|
|
19070
|
-
icon: /* @__PURE__ */ (0,
|
|
19861
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(XIcon, { color: "#DC2626" }),
|
|
19071
19862
|
color: "#DC2626",
|
|
19072
19863
|
bgColor: "rgba(220, 38, 38, 0.08)",
|
|
19073
19864
|
borderColor: "rgba(220, 38, 38, 0.2)",
|
|
@@ -19077,10 +19868,10 @@ function MessageItemImpl({
|
|
|
19077
19868
|
}
|
|
19078
19869
|
);
|
|
19079
19870
|
case "document_replacement_requested":
|
|
19080
|
-
return /* @__PURE__ */ (0,
|
|
19871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19081
19872
|
StatusEvent,
|
|
19082
19873
|
{
|
|
19083
|
-
icon: /* @__PURE__ */ (0,
|
|
19874
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RefreshIcon, { color: "#D97706" }),
|
|
19084
19875
|
color: "#D97706",
|
|
19085
19876
|
bgColor: "rgba(245, 158, 11, 0.08)",
|
|
19086
19877
|
borderColor: "rgba(245, 158, 11, 0.2)",
|
|
@@ -19090,7 +19881,7 @@ function MessageItemImpl({
|
|
|
19090
19881
|
}
|
|
19091
19882
|
);
|
|
19092
19883
|
default:
|
|
19093
|
-
return /* @__PURE__ */ (0,
|
|
19884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19094
19885
|
ChatBubble,
|
|
19095
19886
|
{
|
|
19096
19887
|
message,
|
|
@@ -19103,13 +19894,13 @@ function MessageItemImpl({
|
|
|
19103
19894
|
);
|
|
19104
19895
|
}
|
|
19105
19896
|
}
|
|
19106
|
-
var MessageItem =
|
|
19897
|
+
var MessageItem = import_react38.default.memo(MessageItemImpl);
|
|
19107
19898
|
|
|
19108
19899
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
|
|
19109
|
-
var
|
|
19110
|
-
var
|
|
19111
|
-
var
|
|
19112
|
-
var
|
|
19900
|
+
var import_react39 = require("react");
|
|
19901
|
+
var import_react_native57 = require("react-native");
|
|
19902
|
+
var import_react_i18next26 = require("react-i18next");
|
|
19903
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
19113
19904
|
function MessageComposer({
|
|
19114
19905
|
messageText,
|
|
19115
19906
|
onMessageTextChange,
|
|
@@ -19121,15 +19912,15 @@ function MessageComposer({
|
|
|
19121
19912
|
isUploading,
|
|
19122
19913
|
isCaseFinalized = false
|
|
19123
19914
|
}) {
|
|
19124
|
-
const { t } = (0,
|
|
19915
|
+
const { t } = (0, import_react_i18next26.useTranslation)();
|
|
19125
19916
|
const { colors } = useTheme();
|
|
19126
19917
|
const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
|
|
19127
|
-
const activate = (0,
|
|
19128
|
-
(0,
|
|
19129
|
-
|
|
19918
|
+
const activate = (0, import_react39.useRef)(new import_react_native57.Animated.Value(canSend ? 1 : 0)).current;
|
|
19919
|
+
(0, import_react39.useEffect)(() => {
|
|
19920
|
+
import_react_native57.Animated.timing(activate, {
|
|
19130
19921
|
toValue: canSend ? 1 : 0,
|
|
19131
19922
|
duration: 180,
|
|
19132
|
-
easing:
|
|
19923
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.quad),
|
|
19133
19924
|
useNativeDriver: false
|
|
19134
19925
|
}).start();
|
|
19135
19926
|
}, [canSend, activate]);
|
|
@@ -19137,30 +19928,30 @@ function MessageComposer({
|
|
|
19137
19928
|
inputRange: [0, 1],
|
|
19138
19929
|
outputRange: [colors.border, colors.primary]
|
|
19139
19930
|
});
|
|
19140
|
-
const pressScale = (0,
|
|
19931
|
+
const pressScale = (0, import_react39.useRef)(new import_react_native57.Animated.Value(1)).current;
|
|
19141
19932
|
const handlePressIn = () => {
|
|
19142
|
-
|
|
19933
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
|
|
19143
19934
|
};
|
|
19144
19935
|
const handlePressOut = () => {
|
|
19145
|
-
|
|
19936
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
|
|
19146
19937
|
};
|
|
19147
|
-
const pillIn = (0,
|
|
19148
|
-
(0,
|
|
19149
|
-
|
|
19938
|
+
const pillIn = (0, import_react39.useRef)(new import_react_native57.Animated.Value(0)).current;
|
|
19939
|
+
(0, import_react39.useEffect)(() => {
|
|
19940
|
+
import_react_native57.Animated.timing(pillIn, {
|
|
19150
19941
|
toValue: pendingUpload ? 1 : 0,
|
|
19151
19942
|
duration: 220,
|
|
19152
|
-
easing:
|
|
19943
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.cubic),
|
|
19153
19944
|
useNativeDriver: true
|
|
19154
19945
|
}).start();
|
|
19155
19946
|
}, [pendingUpload, pillIn]);
|
|
19156
19947
|
const pillOpacity = pillIn;
|
|
19157
19948
|
const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
|
|
19158
|
-
return /* @__PURE__ */ (0,
|
|
19159
|
-
pendingUpload && /* @__PURE__ */ (0,
|
|
19160
|
-
|
|
19949
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
|
|
19950
|
+
pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
19951
|
+
import_react_native57.Animated.View,
|
|
19161
19952
|
{
|
|
19162
19953
|
style: [
|
|
19163
|
-
|
|
19954
|
+
styles46.uploadPill,
|
|
19164
19955
|
{
|
|
19165
19956
|
backgroundColor: colors.primarySoft,
|
|
19166
19957
|
opacity: pillOpacity,
|
|
@@ -19168,34 +19959,34 @@ function MessageComposer({
|
|
|
19168
19959
|
}
|
|
19169
19960
|
],
|
|
19170
19961
|
children: [
|
|
19171
|
-
/* @__PURE__ */ (0,
|
|
19172
|
-
/* @__PURE__ */ (0,
|
|
19962
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
|
|
19963
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.Text, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
|
|
19173
19964
|
pendingUpload.file_name,
|
|
19174
19965
|
" (",
|
|
19175
19966
|
formatFileSize(pendingUpload.file_size),
|
|
19176
19967
|
")"
|
|
19177
19968
|
] }),
|
|
19178
|
-
/* @__PURE__ */ (0,
|
|
19969
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.TouchableOpacity, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
|
|
19179
19970
|
]
|
|
19180
19971
|
}
|
|
19181
19972
|
),
|
|
19182
|
-
/* @__PURE__ */ (0,
|
|
19183
|
-
/* @__PURE__ */ (0,
|
|
19184
|
-
|
|
19973
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
|
|
19974
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19975
|
+
import_react_native57.TouchableOpacity,
|
|
19185
19976
|
{
|
|
19186
|
-
style:
|
|
19977
|
+
style: styles46.attachButton,
|
|
19187
19978
|
onPress: onAttachClick,
|
|
19188
19979
|
disabled: isUploading || isCaseFinalized,
|
|
19189
19980
|
activeOpacity: 0.6,
|
|
19190
19981
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
19191
19982
|
accessibilityLabel: t("uploadFile") || "Attach file",
|
|
19192
|
-
children: isUploading ? /* @__PURE__ */ (0,
|
|
19983
|
+
children: isUploading ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.ActivityIndicator, { size: "small", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
|
|
19193
19984
|
}
|
|
19194
19985
|
),
|
|
19195
|
-
/* @__PURE__ */ (0,
|
|
19196
|
-
|
|
19986
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19987
|
+
import_react_native57.TextInput,
|
|
19197
19988
|
{
|
|
19198
|
-
style: [
|
|
19989
|
+
style: [styles46.input, { color: colors.text }],
|
|
19199
19990
|
value: messageText,
|
|
19200
19991
|
onChangeText: onMessageTextChange,
|
|
19201
19992
|
placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
|
|
@@ -19205,8 +19996,8 @@ function MessageComposer({
|
|
|
19205
19996
|
editable: !isSending && !isCaseFinalized
|
|
19206
19997
|
}
|
|
19207
19998
|
),
|
|
19208
|
-
/* @__PURE__ */ (0,
|
|
19209
|
-
|
|
19999
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
20000
|
+
import_react_native57.TouchableOpacity,
|
|
19210
20001
|
{
|
|
19211
20002
|
onPress: onSend,
|
|
19212
20003
|
onPressIn: handlePressIn,
|
|
@@ -19214,15 +20005,15 @@ function MessageComposer({
|
|
|
19214
20005
|
disabled: !canSend,
|
|
19215
20006
|
activeOpacity: 0.85,
|
|
19216
20007
|
accessibilityLabel: t("send") || "Send",
|
|
19217
|
-
children: /* @__PURE__ */ (0,
|
|
20008
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: [styles46.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.ActivityIndicator, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.View, { style: styles46.sendIcon, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
|
|
19218
20009
|
}
|
|
19219
20010
|
) })
|
|
19220
20011
|
] })
|
|
19221
20012
|
] });
|
|
19222
20013
|
}
|
|
19223
|
-
var
|
|
20014
|
+
var styles46 = import_react_native57.StyleSheet.create({
|
|
19224
20015
|
container: {
|
|
19225
|
-
borderTopWidth:
|
|
20016
|
+
borderTopWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19226
20017
|
paddingHorizontal: spacing.md,
|
|
19227
20018
|
paddingVertical: spacing.sm
|
|
19228
20019
|
},
|
|
@@ -19245,7 +20036,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19245
20036
|
pill: {
|
|
19246
20037
|
flexDirection: "row",
|
|
19247
20038
|
alignItems: "center",
|
|
19248
|
-
borderWidth:
|
|
20039
|
+
borderWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19249
20040
|
borderRadius: radii.xxl + 4,
|
|
19250
20041
|
paddingHorizontal: spacing.xs + 2,
|
|
19251
20042
|
paddingVertical: spacing.xs,
|
|
@@ -19284,7 +20075,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19284
20075
|
});
|
|
19285
20076
|
|
|
19286
20077
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
19287
|
-
var
|
|
20078
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
19288
20079
|
var STREAK_GAP_MS = 5 * 60 * 1e3;
|
|
19289
20080
|
function isStreakBoundary(a, b) {
|
|
19290
20081
|
if (!a || !b) return true;
|
|
@@ -19314,11 +20105,11 @@ function sameDay(a, b) {
|
|
|
19314
20105
|
}
|
|
19315
20106
|
var MESSAGE_POLL_INTERVAL = 3e4;
|
|
19316
20107
|
function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
19317
|
-
const { t } = (0,
|
|
20108
|
+
const { t } = (0, import_react_i18next27.useTranslation)();
|
|
19318
20109
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19319
20110
|
const { consentClient } = useBaseUrl();
|
|
19320
20111
|
const { colors } = useTheme();
|
|
19321
|
-
const authContext = (0,
|
|
20112
|
+
const authContext = (0, import_react40.useMemo)(() => ({
|
|
19322
20113
|
accessToken,
|
|
19323
20114
|
refreshToken,
|
|
19324
20115
|
onError,
|
|
@@ -19330,13 +20121,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19330
20121
|
caseUuid,
|
|
19331
20122
|
authContext
|
|
19332
20123
|
);
|
|
19333
|
-
const [messageText, setMessageText] = (0,
|
|
19334
|
-
const [pendingUpload, setPendingUpload] = (0,
|
|
19335
|
-
const [isSending, setIsSending] = (0,
|
|
19336
|
-
const [isUploading, setIsUploading] = (0,
|
|
19337
|
-
const [isSubmittingForRequest, setIsSubmittingForRequest] = (0,
|
|
19338
|
-
const flatListRef = (0,
|
|
19339
|
-
(0,
|
|
20124
|
+
const [messageText, setMessageText] = (0, import_react40.useState)("");
|
|
20125
|
+
const [pendingUpload, setPendingUpload] = (0, import_react40.useState)(null);
|
|
20126
|
+
const [isSending, setIsSending] = (0, import_react40.useState)(false);
|
|
20127
|
+
const [isUploading, setIsUploading] = (0, import_react40.useState)(false);
|
|
20128
|
+
const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react40.useState)(false);
|
|
20129
|
+
const flatListRef = (0, import_react40.useRef)(null);
|
|
20130
|
+
(0, import_react40.useEffect)(() => {
|
|
19340
20131
|
if (messages && messages.length > 0) {
|
|
19341
20132
|
setTimeout(() => {
|
|
19342
20133
|
var _a3;
|
|
@@ -19344,16 +20135,19 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19344
20135
|
}, 100);
|
|
19345
20136
|
}
|
|
19346
20137
|
}, [messages == null ? void 0 : messages.length]);
|
|
19347
|
-
const refetchRef = (0,
|
|
20138
|
+
const refetchRef = (0, import_react40.useRef)(refetch);
|
|
19348
20139
|
refetchRef.current = refetch;
|
|
19349
|
-
(0,
|
|
20140
|
+
const authContextRef = (0, import_react40.useRef)(authContext);
|
|
20141
|
+
authContextRef.current = authContext;
|
|
20142
|
+
(0, import_react40.useEffect)(() => {
|
|
19350
20143
|
if (isCaseFinalized) return;
|
|
19351
20144
|
const id = setInterval(() => {
|
|
20145
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
19352
20146
|
refetchRef.current();
|
|
19353
20147
|
}, MESSAGE_POLL_INTERVAL);
|
|
19354
20148
|
return () => clearInterval(id);
|
|
19355
20149
|
}, [isCaseFinalized]);
|
|
19356
|
-
const handleSend = (0,
|
|
20150
|
+
const handleSend = (0, import_react40.useCallback)(async () => {
|
|
19357
20151
|
if (isCaseFinalized) return;
|
|
19358
20152
|
if (!messageText.trim() && !pendingUpload) return;
|
|
19359
20153
|
if (!organizationId || !workspaceId) return;
|
|
@@ -19378,7 +20172,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19378
20172
|
setIsSending(false);
|
|
19379
20173
|
}
|
|
19380
20174
|
}, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
|
|
19381
|
-
const handleAttach = (0,
|
|
20175
|
+
const handleAttach = (0, import_react40.useCallback)(async () => {
|
|
19382
20176
|
if (isCaseFinalized) return;
|
|
19383
20177
|
if (!organizationId || !workspaceId) return;
|
|
19384
20178
|
try {
|
|
@@ -19413,10 +20207,10 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19413
20207
|
setIsUploading(false);
|
|
19414
20208
|
}
|
|
19415
20209
|
}, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
|
|
19416
|
-
const handleUploadForRequest = (0,
|
|
20210
|
+
const handleUploadForRequest = (0, import_react40.useCallback)((_requestEventUuid) => {
|
|
19417
20211
|
handleAttach();
|
|
19418
20212
|
}, [handleAttach]);
|
|
19419
|
-
const messagesList = (0,
|
|
20213
|
+
const messagesList = (0, import_react40.useMemo)(() => {
|
|
19420
20214
|
const list = messages ? [...messages] : [];
|
|
19421
20215
|
list.sort((a, b) => {
|
|
19422
20216
|
const ta = new Date(a.created_at).getTime();
|
|
@@ -19425,17 +20219,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19425
20219
|
});
|
|
19426
20220
|
return list;
|
|
19427
20221
|
}, [messages]);
|
|
19428
|
-
const keyExtractor = (0,
|
|
19429
|
-
const renderMessage = (0,
|
|
20222
|
+
const keyExtractor = (0, import_react40.useCallback)((item) => item.uuid, []);
|
|
20223
|
+
const renderMessage = (0, import_react40.useCallback)(
|
|
19430
20224
|
({ item, index }) => {
|
|
19431
20225
|
const prev = index > 0 ? messagesList[index - 1] : void 0;
|
|
19432
20226
|
const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
|
|
19433
20227
|
const isFirstInGroup = isStreakBoundary(prev, item);
|
|
19434
20228
|
const isLastInGroup = isStreakBoundary(item, next);
|
|
19435
20229
|
const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
|
|
19436
|
-
return /* @__PURE__ */ (0,
|
|
19437
|
-
dateSeparator ? /* @__PURE__ */ (0,
|
|
19438
|
-
/* @__PURE__ */ (0,
|
|
20230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
20231
|
+
dateSeparator ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.daySeparator, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: [styles47.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
|
|
20232
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19439
20233
|
MessageItem,
|
|
19440
20234
|
{
|
|
19441
20235
|
message: item,
|
|
@@ -19451,32 +20245,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19451
20245
|
[messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
|
|
19452
20246
|
);
|
|
19453
20247
|
if (isLoading) {
|
|
19454
|
-
return /* @__PURE__ */ (0,
|
|
20248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.centered, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.ActivityIndicator, { size: "large", color: colors.primary }) });
|
|
19455
20249
|
}
|
|
19456
20250
|
if (error) {
|
|
19457
|
-
return /* @__PURE__ */ (0,
|
|
20251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.centered, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
|
|
19458
20252
|
}
|
|
19459
|
-
return /* @__PURE__ */ (0,
|
|
19460
|
-
/* @__PURE__ */ (0,
|
|
19461
|
-
/* @__PURE__ */ (0,
|
|
19462
|
-
/* @__PURE__ */ (0,
|
|
20253
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
20254
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.secureRow, children: [
|
|
20255
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
20256
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.secureText, { color: colors.textSecondary }], children: isCaseFinalized ? t("caseFinalizedMessagesTooltip") || "This case is finalized \u2014 messages can no longer be sent." : `${t("private", { defaultValue: "Private" })} \xB7 ${t("senderPrivacyTeam") || "Privacy Team"}` })
|
|
19463
20257
|
] }),
|
|
19464
|
-
/* @__PURE__ */ (0,
|
|
19465
|
-
|
|
20258
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
20259
|
+
import_react_native58.FlatList,
|
|
19466
20260
|
{
|
|
19467
20261
|
ref: flatListRef,
|
|
19468
|
-
style:
|
|
20262
|
+
style: styles47.list,
|
|
19469
20263
|
data: messagesList,
|
|
19470
20264
|
keyExtractor,
|
|
19471
20265
|
renderItem: renderMessage,
|
|
19472
20266
|
contentContainerStyle: [
|
|
19473
|
-
|
|
19474
|
-
messagesList.length ?
|
|
20267
|
+
styles47.messagesList,
|
|
20268
|
+
messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
|
|
19475
20269
|
],
|
|
19476
|
-
ListEmptyComponent: /* @__PURE__ */ (0,
|
|
19477
|
-
/* @__PURE__ */ (0,
|
|
19478
|
-
/* @__PURE__ */ (0,
|
|
19479
|
-
/* @__PURE__ */ (0,
|
|
20270
|
+
ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.emptyContainer, children: [
|
|
20271
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: [styles47.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
|
|
20272
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
|
|
20273
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
|
|
19480
20274
|
] }),
|
|
19481
20275
|
onContentSizeChange: () => {
|
|
19482
20276
|
var _a3;
|
|
@@ -19488,7 +20282,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19488
20282
|
removeClippedSubviews: true
|
|
19489
20283
|
}
|
|
19490
20284
|
),
|
|
19491
|
-
/* @__PURE__ */ (0,
|
|
20285
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19492
20286
|
MessageComposer,
|
|
19493
20287
|
{
|
|
19494
20288
|
messageText,
|
|
@@ -19504,7 +20298,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19504
20298
|
)
|
|
19505
20299
|
] });
|
|
19506
20300
|
}
|
|
19507
|
-
var
|
|
20301
|
+
var styles47 = import_react_native58.StyleSheet.create({
|
|
19508
20302
|
container: {
|
|
19509
20303
|
flex: 1
|
|
19510
20304
|
},
|
|
@@ -19587,17 +20381,17 @@ var styles45 = import_react_native56.StyleSheet.create({
|
|
|
19587
20381
|
});
|
|
19588
20382
|
|
|
19589
20383
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
19590
|
-
var
|
|
20384
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
19591
20385
|
function CaseDetailsPage() {
|
|
19592
20386
|
var _a3, _b;
|
|
19593
|
-
const { t } = (0,
|
|
20387
|
+
const { t } = (0, import_react_i18next28.useTranslation)();
|
|
19594
20388
|
const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
|
|
19595
20389
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19596
20390
|
const { colors } = useTheme();
|
|
19597
20391
|
const { keyboardOffset } = usePrivacyCenterInsets();
|
|
19598
20392
|
const requestTypeLabels = useRequestTypeLabels();
|
|
19599
|
-
const [activeTab, setActiveTab] = (0,
|
|
19600
|
-
const authContext = (0,
|
|
20393
|
+
const [activeTab, setActiveTab] = (0, import_react41.useState)("request-details");
|
|
20394
|
+
const authContext = (0, import_react41.useMemo)(() => ({
|
|
19601
20395
|
accessToken,
|
|
19602
20396
|
refreshToken,
|
|
19603
20397
|
onError,
|
|
@@ -19610,7 +20404,7 @@ function CaseDetailsPage() {
|
|
|
19610
20404
|
email != null ? email : void 0,
|
|
19611
20405
|
authContext
|
|
19612
20406
|
);
|
|
19613
|
-
(0,
|
|
20407
|
+
(0, import_react41.useEffect)(() => {
|
|
19614
20408
|
if (!cases) return;
|
|
19615
20409
|
if (cases.length === 0) {
|
|
19616
20410
|
navigateTo("form");
|
|
@@ -19624,33 +20418,33 @@ function CaseDetailsPage() {
|
|
|
19624
20418
|
navigateTo("form");
|
|
19625
20419
|
}
|
|
19626
20420
|
}, [cases, targetUuid, setSelectedCase, navigateTo]);
|
|
19627
|
-
(0,
|
|
20421
|
+
(0, import_react41.useEffect)(() => {
|
|
19628
20422
|
if (!selectedCase && !targetUuid && !isLoading) {
|
|
19629
20423
|
navigateTo("form");
|
|
19630
20424
|
}
|
|
19631
20425
|
}, [selectedCase, targetUuid, isLoading, navigateTo]);
|
|
19632
20426
|
if (!selectedCase) {
|
|
19633
|
-
return /* @__PURE__ */ (0,
|
|
20427
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.centered, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.ActivityIndicator, { size: "large", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
|
|
19634
20428
|
}
|
|
19635
20429
|
const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
|
|
19636
20430
|
const tabs = [
|
|
19637
20431
|
{ id: "request-details", label: t("requestDetails") || "Request Details" },
|
|
19638
20432
|
{ id: "messages", label: t("messages") || "Messages" }
|
|
19639
20433
|
];
|
|
19640
|
-
return /* @__PURE__ */ (0,
|
|
20434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
19641
20435
|
KeyboardAvoidingViewCompat,
|
|
19642
20436
|
{
|
|
19643
|
-
style: [
|
|
20437
|
+
style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
|
|
19644
20438
|
behavior: "padding",
|
|
19645
|
-
keyboardVerticalOffset:
|
|
20439
|
+
keyboardVerticalOffset: import_react_native59.Platform.OS === "ios" ? keyboardOffset : 0,
|
|
19646
20440
|
children: [
|
|
19647
|
-
/* @__PURE__ */ (0,
|
|
19648
|
-
/* @__PURE__ */ (0,
|
|
19649
|
-
/* @__PURE__ */ (0,
|
|
19650
|
-
/* @__PURE__ */ (0,
|
|
19651
|
-
/* @__PURE__ */ (0,
|
|
19652
|
-
/* @__PURE__ */ (0,
|
|
19653
|
-
/* @__PURE__ */ (0,
|
|
20441
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.headerWrap, children: [
|
|
20442
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroInner, children: [
|
|
20443
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
|
|
20444
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroBody, children: [
|
|
20445
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroTopRow, children: [
|
|
20446
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
|
|
20447
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19654
20448
|
PCBadge,
|
|
19655
20449
|
{
|
|
19656
20450
|
status: getCaseStatusVariant(selectedCase.status),
|
|
@@ -19659,10 +20453,10 @@ function CaseDetailsPage() {
|
|
|
19659
20453
|
}
|
|
19660
20454
|
)
|
|
19661
20455
|
] }),
|
|
19662
|
-
/* @__PURE__ */ (0,
|
|
20456
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
|
|
19663
20457
|
] })
|
|
19664
20458
|
] }) }),
|
|
19665
|
-
/* @__PURE__ */ (0,
|
|
20459
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19666
20460
|
Segmented,
|
|
19667
20461
|
{
|
|
19668
20462
|
options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
|
|
@@ -19671,18 +20465,18 @@ function CaseDetailsPage() {
|
|
|
19671
20465
|
}
|
|
19672
20466
|
)
|
|
19673
20467
|
] }),
|
|
19674
|
-
/* @__PURE__ */ (0,
|
|
20468
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19675
20469
|
RequestDetailsTab,
|
|
19676
20470
|
{
|
|
19677
20471
|
selectedCase,
|
|
19678
20472
|
requestTypeLabel
|
|
19679
20473
|
}
|
|
19680
|
-
) : /* @__PURE__ */ (0,
|
|
20474
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
|
|
19681
20475
|
]
|
|
19682
20476
|
}
|
|
19683
20477
|
);
|
|
19684
20478
|
}
|
|
19685
|
-
var
|
|
20479
|
+
var styles48 = import_react_native59.StyleSheet.create({
|
|
19686
20480
|
container: {
|
|
19687
20481
|
flex: 1
|
|
19688
20482
|
},
|
|
@@ -19747,36 +20541,36 @@ var styles46 = import_react_native57.StyleSheet.create({
|
|
|
19747
20541
|
});
|
|
19748
20542
|
|
|
19749
20543
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
19750
|
-
var
|
|
19751
|
-
var
|
|
19752
|
-
var
|
|
20544
|
+
var import_react44 = require("react");
|
|
20545
|
+
var import_react_native65 = require("react-native");
|
|
20546
|
+
var import_react_i18next30 = require("react-i18next");
|
|
19753
20547
|
|
|
19754
20548
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19755
|
-
var
|
|
19756
|
-
var
|
|
20549
|
+
var import_react_native63 = require("react-native");
|
|
20550
|
+
var import_react_i18next29 = require("react-i18next");
|
|
19757
20551
|
|
|
19758
20552
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
|
|
19759
|
-
var
|
|
19760
|
-
var
|
|
20553
|
+
var import_react_native60 = require("react-native");
|
|
20554
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
19761
20555
|
var NotificationCTAButton = ({ cta, onPress }) => {
|
|
19762
20556
|
const { colors } = useTheme();
|
|
19763
20557
|
const tone = cta.style === "danger" ? colors.error : colors.primary;
|
|
19764
20558
|
const isPrimary = cta.style === "primary" || cta.style === "danger";
|
|
19765
|
-
return /* @__PURE__ */ (0,
|
|
19766
|
-
|
|
20559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
20560
|
+
import_react_native60.TouchableOpacity,
|
|
19767
20561
|
{
|
|
19768
20562
|
onPress,
|
|
19769
20563
|
activeOpacity: 0.7,
|
|
19770
20564
|
style: [
|
|
19771
|
-
|
|
20565
|
+
styles49.button,
|
|
19772
20566
|
isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
|
|
19773
20567
|
],
|
|
19774
20568
|
accessibilityRole: "button",
|
|
19775
|
-
children: /* @__PURE__ */ (0,
|
|
20569
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native60.Text, { style: [styles49.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
|
|
19776
20570
|
}
|
|
19777
20571
|
);
|
|
19778
20572
|
};
|
|
19779
|
-
var
|
|
20573
|
+
var styles49 = import_react_native60.StyleSheet.create({
|
|
19780
20574
|
button: {
|
|
19781
20575
|
paddingHorizontal: spacing.lg,
|
|
19782
20576
|
paddingVertical: spacing.sm,
|
|
@@ -19791,8 +20585,8 @@ var styles47 = import_react_native58.StyleSheet.create({
|
|
|
19791
20585
|
});
|
|
19792
20586
|
|
|
19793
20587
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
|
|
19794
|
-
var
|
|
19795
|
-
var
|
|
20588
|
+
var import_react_native61 = require("react-native");
|
|
20589
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
19796
20590
|
var CATEGORY_ICON = {
|
|
19797
20591
|
guardian: "user-round",
|
|
19798
20592
|
consent: "clock",
|
|
@@ -19805,18 +20599,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
|
|
|
19805
20599
|
var _a3;
|
|
19806
20600
|
const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
|
|
19807
20601
|
const color = ICON_COLORS[category];
|
|
19808
|
-
return /* @__PURE__ */ (0,
|
|
19809
|
-
|
|
20602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
20603
|
+
import_react_native61.View,
|
|
19810
20604
|
{
|
|
19811
20605
|
style: [
|
|
19812
|
-
|
|
20606
|
+
styles50.wrap,
|
|
19813
20607
|
{ width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
|
|
19814
20608
|
],
|
|
19815
|
-
children: /* @__PURE__ */ (0,
|
|
20609
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
|
|
19816
20610
|
}
|
|
19817
20611
|
);
|
|
19818
20612
|
};
|
|
19819
|
-
var
|
|
20613
|
+
var styles50 = import_react_native61.StyleSheet.create({
|
|
19820
20614
|
wrap: {
|
|
19821
20615
|
alignItems: "center",
|
|
19822
20616
|
justifyContent: "center"
|
|
@@ -19824,15 +20618,15 @@ var styles48 = import_react_native59.StyleSheet.create({
|
|
|
19824
20618
|
});
|
|
19825
20619
|
|
|
19826
20620
|
// src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
|
|
19827
|
-
var
|
|
19828
|
-
var
|
|
19829
|
-
var
|
|
20621
|
+
var import_react42 = require("react");
|
|
20622
|
+
var import_react_native62 = require("react-native");
|
|
20623
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
19830
20624
|
var ACTION_WIDTH = 80;
|
|
19831
20625
|
var CLAIM_THRESHOLD = 8;
|
|
19832
20626
|
var SwipeableRow = ({ actions, background, children }) => {
|
|
19833
20627
|
const { colors } = useTheme();
|
|
19834
|
-
const translateX = (0,
|
|
19835
|
-
const baseX = (0,
|
|
20628
|
+
const translateX = (0, import_react42.useRef)(new import_react_native62.Animated.Value(0)).current;
|
|
20629
|
+
const baseX = (0, import_react42.useRef)(0);
|
|
19836
20630
|
const maxOpen = actions.length * ACTION_WIDTH;
|
|
19837
20631
|
const toneColor2 = {
|
|
19838
20632
|
primary: colors.primary,
|
|
@@ -19841,10 +20635,10 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19841
20635
|
};
|
|
19842
20636
|
const settle = (to) => {
|
|
19843
20637
|
baseX.current = to;
|
|
19844
|
-
|
|
20638
|
+
import_react_native62.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
|
|
19845
20639
|
};
|
|
19846
|
-
const panResponder = (0,
|
|
19847
|
-
() =>
|
|
20640
|
+
const panResponder = (0, import_react42.useMemo)(
|
|
20641
|
+
() => import_react_native62.PanResponder.create({
|
|
19848
20642
|
onMoveShouldSetPanResponder: (_, g) => {
|
|
19849
20643
|
const horizontal = Math.abs(g.dx) > Math.abs(g.dy) * 1.5;
|
|
19850
20644
|
if (!horizontal) return false;
|
|
@@ -19865,37 +20659,37 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19865
20659
|
[maxOpen]
|
|
19866
20660
|
);
|
|
19867
20661
|
if (actions.length === 0) {
|
|
19868
|
-
return /* @__PURE__ */ (0,
|
|
20662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children });
|
|
19869
20663
|
}
|
|
19870
20664
|
const runAction = (action) => {
|
|
19871
20665
|
settle(0);
|
|
19872
20666
|
action.onPress();
|
|
19873
20667
|
};
|
|
19874
|
-
return /* @__PURE__ */ (0,
|
|
19875
|
-
/* @__PURE__ */ (0,
|
|
19876
|
-
|
|
20668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native62.View, { style: styles51.root, children: [
|
|
20669
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.View, { style: styles51.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
20670
|
+
import_react_native62.TouchableOpacity,
|
|
19877
20671
|
{
|
|
19878
|
-
style: [
|
|
20672
|
+
style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
|
|
19879
20673
|
onPress: () => runAction(action),
|
|
19880
20674
|
activeOpacity: 0.85,
|
|
19881
20675
|
accessibilityRole: "button",
|
|
19882
20676
|
accessibilityLabel: action.label,
|
|
19883
20677
|
children: [
|
|
19884
|
-
/* @__PURE__ */ (0,
|
|
19885
|
-
/* @__PURE__ */ (0,
|
|
20678
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
|
|
20679
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Text, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
|
|
19886
20680
|
]
|
|
19887
20681
|
},
|
|
19888
20682
|
action.key
|
|
19889
20683
|
)) }),
|
|
19890
|
-
/* @__PURE__ */ (0,
|
|
20684
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
|
|
19891
20685
|
] });
|
|
19892
20686
|
};
|
|
19893
|
-
var
|
|
20687
|
+
var styles51 = import_react_native62.StyleSheet.create({
|
|
19894
20688
|
root: {
|
|
19895
20689
|
position: "relative"
|
|
19896
20690
|
},
|
|
19897
20691
|
actionsLayer: {
|
|
19898
|
-
...
|
|
20692
|
+
...import_react_native62.StyleSheet.absoluteFillObject,
|
|
19899
20693
|
flexDirection: "row",
|
|
19900
20694
|
justifyContent: "flex-end"
|
|
19901
20695
|
},
|
|
@@ -19928,10 +20722,10 @@ var formatTimeAgo = (dateString, t) => {
|
|
|
19928
20722
|
};
|
|
19929
20723
|
|
|
19930
20724
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19931
|
-
var
|
|
20725
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
19932
20726
|
var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
|
|
19933
20727
|
var _a3, _b;
|
|
19934
|
-
const { t } = (0,
|
|
20728
|
+
const { t } = (0, import_react_i18next29.useTranslation)();
|
|
19935
20729
|
const { colors } = useTheme();
|
|
19936
20730
|
const isUnread = !notification.is_read;
|
|
19937
20731
|
const statusLabel = notification.status_label_display || notification.status_label;
|
|
@@ -19958,35 +20752,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
|
|
|
19958
20752
|
onPress: onAcknowledge
|
|
19959
20753
|
});
|
|
19960
20754
|
}
|
|
19961
|
-
return /* @__PURE__ */ (0,
|
|
19962
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
19963
|
-
/* @__PURE__ */ (0,
|
|
19964
|
-
/* @__PURE__ */ (0,
|
|
19965
|
-
/* @__PURE__ */ (0,
|
|
19966
|
-
/* @__PURE__ */ (0,
|
|
19967
|
-
|
|
20755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.TouchableOpacity, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles52.row, children: [
|
|
20756
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
|
|
20757
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
|
|
20758
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.content, children: [
|
|
20759
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.titleRow, children: [
|
|
20760
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
20761
|
+
import_react_native63.Text,
|
|
19968
20762
|
{
|
|
19969
|
-
style: [
|
|
20763
|
+
style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
|
|
19970
20764
|
numberOfLines: 2,
|
|
19971
20765
|
children: notification.title
|
|
19972
20766
|
}
|
|
19973
20767
|
),
|
|
19974
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
20768
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
|
|
19975
20769
|
] }),
|
|
19976
|
-
/* @__PURE__ */ (0,
|
|
19977
|
-
statusLabel ? /* @__PURE__ */ (0,
|
|
19978
|
-
/* @__PURE__ */ (0,
|
|
19979
|
-
/* @__PURE__ */ (0,
|
|
19980
|
-
/* @__PURE__ */ (0,
|
|
20770
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.metaRow, children: [
|
|
20771
|
+
statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
|
|
20772
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.statusDot, { backgroundColor: accent }] }),
|
|
20773
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
|
|
20774
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
|
|
19981
20775
|
] }) : null,
|
|
19982
|
-
/* @__PURE__ */ (0,
|
|
20776
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
|
|
19983
20777
|
] }),
|
|
19984
|
-
showAcknowledge && ackCta ? /* @__PURE__ */ (0,
|
|
20778
|
+
showAcknowledge && ackCta ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: styles52.ackWrap, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
|
|
19985
20779
|
] }),
|
|
19986
|
-
/* @__PURE__ */ (0,
|
|
20780
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: styles52.chevron, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
|
|
19987
20781
|
] }) });
|
|
19988
20782
|
};
|
|
19989
|
-
var
|
|
20783
|
+
var styles52 = import_react_native63.StyleSheet.create({
|
|
19990
20784
|
row: {
|
|
19991
20785
|
flexDirection: "row",
|
|
19992
20786
|
alignItems: "center",
|
|
@@ -20049,25 +20843,25 @@ var styles50 = import_react_native61.StyleSheet.create({
|
|
|
20049
20843
|
});
|
|
20050
20844
|
|
|
20051
20845
|
// src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
|
|
20052
|
-
var
|
|
20053
|
-
var
|
|
20846
|
+
var import_react43 = require("react");
|
|
20847
|
+
var import_react_native64 = require("react-native");
|
|
20054
20848
|
var useNotificationActions = () => {
|
|
20055
20849
|
const { navigateTo, setSelectedCase } = useInternalNavigation();
|
|
20056
20850
|
const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId, email } = useAuth();
|
|
20057
20851
|
const { consentClient } = useBaseUrl();
|
|
20058
20852
|
const { langParam } = useCurrentLanguage();
|
|
20059
|
-
const authContext = (0,
|
|
20853
|
+
const authContext = (0, import_react43.useMemo)(
|
|
20060
20854
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
20061
20855
|
[accessToken, refreshToken, onError, updateTokens]
|
|
20062
20856
|
);
|
|
20063
|
-
const hasAcknowledgeCTA = (0,
|
|
20857
|
+
const hasAcknowledgeCTA = (0, import_react43.useCallback)(
|
|
20064
20858
|
(notification) => {
|
|
20065
20859
|
var _a3, _b;
|
|
20066
20860
|
return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
|
|
20067
20861
|
},
|
|
20068
20862
|
[]
|
|
20069
20863
|
);
|
|
20070
|
-
const handleMarkRead = (0,
|
|
20864
|
+
const handleMarkRead = (0, import_react43.useCallback)(
|
|
20071
20865
|
async (notificationUuid) => {
|
|
20072
20866
|
if (!organizationId || !workspaceId) return false;
|
|
20073
20867
|
const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20075,12 +20869,12 @@ var useNotificationActions = () => {
|
|
|
20075
20869
|
},
|
|
20076
20870
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20077
20871
|
);
|
|
20078
|
-
const handleMarkAllRead = (0,
|
|
20872
|
+
const handleMarkAllRead = (0, import_react43.useCallback)(async () => {
|
|
20079
20873
|
if (!organizationId || !workspaceId) return false;
|
|
20080
20874
|
const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
|
|
20081
20875
|
return result !== null;
|
|
20082
20876
|
}, [organizationId, workspaceId, authContext, consentClient]);
|
|
20083
|
-
const handleAcknowledge = (0,
|
|
20877
|
+
const handleAcknowledge = (0, import_react43.useCallback)(
|
|
20084
20878
|
async (notificationUuid) => {
|
|
20085
20879
|
if (!organizationId || !workspaceId) return false;
|
|
20086
20880
|
const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20088,7 +20882,7 @@ var useNotificationActions = () => {
|
|
|
20088
20882
|
},
|
|
20089
20883
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20090
20884
|
);
|
|
20091
|
-
const handleCTAClick = (0,
|
|
20885
|
+
const handleCTAClick = (0, import_react43.useCallback)(
|
|
20092
20886
|
async (notification, cta) => {
|
|
20093
20887
|
var _a3;
|
|
20094
20888
|
if (cta.action_type === "acknowledge") {
|
|
@@ -20122,7 +20916,7 @@ var useNotificationActions = () => {
|
|
|
20122
20916
|
const url = cta.url;
|
|
20123
20917
|
if (!/^https?:\/\//i.test(url)) return null;
|
|
20124
20918
|
try {
|
|
20125
|
-
await
|
|
20919
|
+
await import_react_native64.Linking.openURL(url);
|
|
20126
20920
|
return "opened";
|
|
20127
20921
|
} catch {
|
|
20128
20922
|
return null;
|
|
@@ -20145,7 +20939,7 @@ var useNotificationActions = () => {
|
|
|
20145
20939
|
};
|
|
20146
20940
|
|
|
20147
20941
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
20148
|
-
var
|
|
20942
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
20149
20943
|
var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
|
|
20150
20944
|
var READ_FILTER_TO_PARAM = {
|
|
20151
20945
|
all: void 0,
|
|
@@ -20153,7 +20947,7 @@ var READ_FILTER_TO_PARAM = {
|
|
|
20153
20947
|
read: true
|
|
20154
20948
|
};
|
|
20155
20949
|
var NotificationsScreen = () => {
|
|
20156
|
-
const { t } = (0,
|
|
20950
|
+
const { t } = (0, import_react_i18next30.useTranslation)();
|
|
20157
20951
|
const { colors } = useTheme();
|
|
20158
20952
|
const { langParam } = useCurrentLanguage();
|
|
20159
20953
|
const { listBottom } = usePrivacyCenterInsets();
|
|
@@ -20170,15 +20964,15 @@ var NotificationsScreen = () => {
|
|
|
20170
20964
|
handleAcknowledge,
|
|
20171
20965
|
handleCTAClick
|
|
20172
20966
|
} = useNotificationActions();
|
|
20173
|
-
const [notifications, setNotifications] = (0,
|
|
20174
|
-
const [summary, setSummary] = (0,
|
|
20175
|
-
const [activeTab, setActiveTab] = (0,
|
|
20176
|
-
const [readFilter, setReadFilter] = (0,
|
|
20177
|
-
const [isLoading, setIsLoading] = (0,
|
|
20178
|
-
const [isRefreshing2, setIsRefreshing] = (0,
|
|
20179
|
-
const [filterOpen, setFilterOpen] = (0,
|
|
20967
|
+
const [notifications, setNotifications] = (0, import_react44.useState)([]);
|
|
20968
|
+
const [summary, setSummary] = (0, import_react44.useState)(EMPTY_SUMMARY);
|
|
20969
|
+
const [activeTab, setActiveTab] = (0, import_react44.useState)("all");
|
|
20970
|
+
const [readFilter, setReadFilter] = (0, import_react44.useState)("all");
|
|
20971
|
+
const [isLoading, setIsLoading] = (0, import_react44.useState)(true);
|
|
20972
|
+
const [isRefreshing2, setIsRefreshing] = (0, import_react44.useState)(false);
|
|
20973
|
+
const [filterOpen, setFilterOpen] = (0, import_react44.useState)(false);
|
|
20180
20974
|
const isFiltered = activeTab !== "all" || readFilter !== "all";
|
|
20181
|
-
const loadNotifications = (0,
|
|
20975
|
+
const loadNotifications = (0, import_react44.useCallback)(
|
|
20182
20976
|
async (includeSummary = false, silent = false) => {
|
|
20183
20977
|
if (!organizationId || !workspaceId) return;
|
|
20184
20978
|
if (!silent) setIsLoading(true);
|
|
@@ -20208,18 +21002,21 @@ var NotificationsScreen = () => {
|
|
|
20208
21002
|
},
|
|
20209
21003
|
[organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
|
|
20210
21004
|
);
|
|
20211
|
-
(0,
|
|
21005
|
+
(0, import_react44.useEffect)(() => {
|
|
20212
21006
|
loadNotifications(true);
|
|
20213
21007
|
}, [loadNotifications]);
|
|
20214
|
-
const loadRef = (0,
|
|
21008
|
+
const loadRef = (0, import_react44.useRef)(loadNotifications);
|
|
20215
21009
|
loadRef.current = loadNotifications;
|
|
20216
|
-
(0,
|
|
21010
|
+
const authContextRef = (0, import_react44.useRef)(authContext);
|
|
21011
|
+
authContextRef.current = authContext;
|
|
21012
|
+
(0, import_react44.useEffect)(() => {
|
|
20217
21013
|
const id = setInterval(() => {
|
|
21014
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
20218
21015
|
loadRef.current(false, true);
|
|
20219
21016
|
}, POLL_INTERVAL);
|
|
20220
21017
|
return () => clearInterval(id);
|
|
20221
21018
|
}, []);
|
|
20222
|
-
const onNotificationClick = (0,
|
|
21019
|
+
const onNotificationClick = (0, import_react44.useCallback)(
|
|
20223
21020
|
async (notification) => {
|
|
20224
21021
|
const shouldMarkRead = !notification.is_read;
|
|
20225
21022
|
const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
|
|
@@ -20240,7 +21037,7 @@ var NotificationsScreen = () => {
|
|
|
20240
21037
|
},
|
|
20241
21038
|
[hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
|
|
20242
21039
|
);
|
|
20243
|
-
const onRowPress = (0,
|
|
21040
|
+
const onRowPress = (0, import_react44.useCallback)(
|
|
20244
21041
|
async (notification) => {
|
|
20245
21042
|
var _a3;
|
|
20246
21043
|
const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
|
|
@@ -20258,7 +21055,7 @@ var NotificationsScreen = () => {
|
|
|
20258
21055
|
},
|
|
20259
21056
|
[handleCTAClick, onNotificationClick]
|
|
20260
21057
|
);
|
|
20261
|
-
const onMarkReadRow = (0,
|
|
21058
|
+
const onMarkReadRow = (0, import_react44.useCallback)(
|
|
20262
21059
|
async (notification) => {
|
|
20263
21060
|
if (notification.is_read) return;
|
|
20264
21061
|
const ok = await handleMarkRead(notification.uuid);
|
|
@@ -20268,7 +21065,7 @@ var NotificationsScreen = () => {
|
|
|
20268
21065
|
},
|
|
20269
21066
|
[handleMarkRead]
|
|
20270
21067
|
);
|
|
20271
|
-
const onAcknowledgeRow = (0,
|
|
21068
|
+
const onAcknowledgeRow = (0, import_react44.useCallback)(
|
|
20272
21069
|
async (notification) => {
|
|
20273
21070
|
if (notification.is_acknowledged) return;
|
|
20274
21071
|
const ok = await handleAcknowledge(notification.uuid);
|
|
@@ -20285,22 +21082,29 @@ var NotificationsScreen = () => {
|
|
|
20285
21082
|
},
|
|
20286
21083
|
[handleAcknowledge]
|
|
20287
21084
|
);
|
|
20288
|
-
const
|
|
21085
|
+
const onMarkAllRead = (0, import_react44.useCallback)(async () => {
|
|
21086
|
+
const ok = await handleMarkAllRead();
|
|
21087
|
+
if (!ok) return;
|
|
21088
|
+
setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
|
|
21089
|
+
setSummary((prev) => ({ ...prev, unread: 0 }));
|
|
21090
|
+
if (readFilter !== "all") loadNotifications(true, true);
|
|
21091
|
+
}, [handleMarkAllRead, readFilter, loadNotifications]);
|
|
21092
|
+
const onRefresh = (0, import_react44.useCallback)(() => {
|
|
20289
21093
|
setIsRefreshing(true);
|
|
20290
21094
|
loadNotifications(true, true);
|
|
20291
21095
|
}, [loadNotifications]);
|
|
20292
|
-
const sections = (0,
|
|
21096
|
+
const sections = (0, import_react44.useMemo)(
|
|
20293
21097
|
() => groupByTime(notifications, (item) => item.created_at, classifyTime),
|
|
20294
21098
|
[notifications, classifyTime]
|
|
20295
21099
|
);
|
|
20296
|
-
const header = /* @__PURE__ */ (0,
|
|
20297
|
-
/* @__PURE__ */ (0,
|
|
20298
|
-
/* @__PURE__ */ (0,
|
|
20299
|
-
/* @__PURE__ */ (0,
|
|
20300
|
-
|
|
21100
|
+
const header = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.header, children: [
|
|
21101
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.titleRow, children: [
|
|
21102
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
|
|
21103
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21104
|
+
import_react_native65.TouchableOpacity,
|
|
20301
21105
|
{
|
|
20302
21106
|
style: [
|
|
20303
|
-
|
|
21107
|
+
styles53.filterBtn,
|
|
20304
21108
|
{
|
|
20305
21109
|
backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
|
|
20306
21110
|
borderColor: isFiltered ? colors.primary : colors.border
|
|
@@ -20309,30 +21113,30 @@ var NotificationsScreen = () => {
|
|
|
20309
21113
|
onPress: () => setFilterOpen(true),
|
|
20310
21114
|
accessibilityRole: "button",
|
|
20311
21115
|
accessibilityLabel: t("filter") || "Filter",
|
|
20312
|
-
children: /* @__PURE__ */ (0,
|
|
21116
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
|
|
20313
21117
|
}
|
|
20314
21118
|
)
|
|
20315
21119
|
] }),
|
|
20316
|
-
summary.unread > 0 ? /* @__PURE__ */ (0,
|
|
20317
|
-
/* @__PURE__ */ (0,
|
|
20318
|
-
/* @__PURE__ */ (0,
|
|
21120
|
+
summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.TouchableOpacity, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
|
|
21121
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
|
|
21122
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
|
|
20319
21123
|
] }) : null
|
|
20320
21124
|
] });
|
|
20321
|
-
return /* @__PURE__ */ (0,
|
|
20322
|
-
/* @__PURE__ */ (0,
|
|
20323
|
-
|
|
21125
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
21126
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21127
|
+
import_react_native65.FlatList,
|
|
20324
21128
|
{
|
|
20325
21129
|
data: sections,
|
|
20326
21130
|
keyExtractor: (section2) => section2.key,
|
|
20327
|
-
style: [
|
|
20328
|
-
contentContainerStyle: [
|
|
21131
|
+
style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
|
|
21132
|
+
contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
|
|
20329
21133
|
ListHeaderComponent: header,
|
|
20330
21134
|
showsVerticalScrollIndicator: false,
|
|
20331
|
-
refreshControl: /* @__PURE__ */ (0,
|
|
20332
|
-
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0,
|
|
20333
|
-
/* @__PURE__ */ (0,
|
|
20334
|
-
/* @__PURE__ */ (0,
|
|
20335
|
-
/* @__PURE__ */ (0,
|
|
21135
|
+
refreshControl: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
|
|
21136
|
+
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.section, children: [
|
|
21137
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
|
|
21138
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardShadow, elevation.card], children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { children: [
|
|
21139
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20336
21140
|
NotificationRow,
|
|
20337
21141
|
{
|
|
20338
21142
|
notification: item,
|
|
@@ -20341,19 +21145,19 @@ var NotificationsScreen = () => {
|
|
|
20341
21145
|
onAcknowledge: () => onAcknowledgeRow(item)
|
|
20342
21146
|
}
|
|
20343
21147
|
),
|
|
20344
|
-
index < section2.data.length - 1 ? /* @__PURE__ */ (0,
|
|
21148
|
+
index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
20345
21149
|
] }, item.uuid)) }) })
|
|
20346
21150
|
] }),
|
|
20347
|
-
ListEmptyComponent: isLoading ? /* @__PURE__ */ (0,
|
|
20348
|
-
/* @__PURE__ */ (0,
|
|
20349
|
-
/* @__PURE__ */ (0,
|
|
20350
|
-
/* @__PURE__ */ (0,
|
|
20351
|
-
/* @__PURE__ */ (0,
|
|
20352
|
-
/* @__PURE__ */ (0,
|
|
21151
|
+
ListEmptyComponent: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.skeletonWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { children: [
|
|
21152
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonRow, children: [
|
|
21153
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
|
|
21154
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonLines, children: [
|
|
21155
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "70%", height: 13 }),
|
|
21156
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "40%", height: 10 })
|
|
20353
21157
|
] })
|
|
20354
21158
|
] }),
|
|
20355
|
-
i < 3 ? /* @__PURE__ */ (0,
|
|
20356
|
-
] }, i)) }) }) : /* @__PURE__ */ (0,
|
|
21159
|
+
i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
21160
|
+
] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20357
21161
|
PCEmpty,
|
|
20358
21162
|
{
|
|
20359
21163
|
iconName: "circle-check",
|
|
@@ -20362,14 +21166,14 @@ var NotificationsScreen = () => {
|
|
|
20362
21166
|
}
|
|
20363
21167
|
) }),
|
|
20364
21168
|
ListFooterComponentStyle: { marginTop: "auto" },
|
|
20365
|
-
ListFooterComponent: /* @__PURE__ */ (0,
|
|
21169
|
+
ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Footer, {})
|
|
20366
21170
|
}
|
|
20367
21171
|
),
|
|
20368
|
-
/* @__PURE__ */ (0,
|
|
20369
|
-
/* @__PURE__ */ (0,
|
|
20370
|
-
/* @__PURE__ */ (0,
|
|
21172
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.filterSheet, children: [
|
|
21173
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
|
|
21174
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
|
|
20371
21175
|
const selected = tab.key === activeTab;
|
|
20372
|
-
return /* @__PURE__ */ (0,
|
|
21176
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20373
21177
|
FilterChip,
|
|
20374
21178
|
{
|
|
20375
21179
|
label: tab.label,
|
|
@@ -20379,12 +21183,12 @@ var NotificationsScreen = () => {
|
|
|
20379
21183
|
tab.key
|
|
20380
21184
|
);
|
|
20381
21185
|
}) }),
|
|
20382
|
-
/* @__PURE__ */ (0,
|
|
20383
|
-
/* @__PURE__ */ (0,
|
|
21186
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
|
|
21187
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: [
|
|
20384
21188
|
{ key: "all", label: t("all") || "All" },
|
|
20385
21189
|
{ key: "unread", label: t("unread") || "Unread" },
|
|
20386
21190
|
{ key: "read", label: t("read", { defaultValue: "Read" }) }
|
|
20387
|
-
].map((opt) => /* @__PURE__ */ (0,
|
|
21191
|
+
].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20388
21192
|
FilterChip,
|
|
20389
21193
|
{
|
|
20390
21194
|
label: opt.label,
|
|
@@ -20393,13 +21197,13 @@ var NotificationsScreen = () => {
|
|
|
20393
21197
|
},
|
|
20394
21198
|
opt.key
|
|
20395
21199
|
)) }),
|
|
20396
|
-
/* @__PURE__ */ (0,
|
|
20397
|
-
|
|
21200
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21201
|
+
import_react_native65.TouchableOpacity,
|
|
20398
21202
|
{
|
|
20399
|
-
style: [
|
|
21203
|
+
style: [styles53.applyBtn, { backgroundColor: colors.primary }],
|
|
20400
21204
|
onPress: () => setFilterOpen(false),
|
|
20401
21205
|
accessibilityRole: "button",
|
|
20402
|
-
children: /* @__PURE__ */ (0,
|
|
21206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
|
|
20403
21207
|
}
|
|
20404
21208
|
)
|
|
20405
21209
|
] }) })
|
|
@@ -20407,25 +21211,25 @@ var NotificationsScreen = () => {
|
|
|
20407
21211
|
};
|
|
20408
21212
|
var FilterChip = ({ label, selected, onPress }) => {
|
|
20409
21213
|
const { colors } = useTheme();
|
|
20410
|
-
return /* @__PURE__ */ (0,
|
|
20411
|
-
|
|
21214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21215
|
+
import_react_native65.TouchableOpacity,
|
|
20412
21216
|
{
|
|
20413
21217
|
onPress,
|
|
20414
21218
|
activeOpacity: 0.7,
|
|
20415
21219
|
accessibilityRole: "button",
|
|
20416
21220
|
accessibilityState: { selected },
|
|
20417
21221
|
style: [
|
|
20418
|
-
|
|
21222
|
+
styles53.chip,
|
|
20419
21223
|
{
|
|
20420
21224
|
backgroundColor: selected ? colors.primary : colors.surfaceAlt,
|
|
20421
21225
|
borderColor: selected ? colors.primary : colors.border
|
|
20422
21226
|
}
|
|
20423
21227
|
],
|
|
20424
|
-
children: /* @__PURE__ */ (0,
|
|
21228
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
|
|
20425
21229
|
}
|
|
20426
21230
|
);
|
|
20427
21231
|
};
|
|
20428
|
-
var
|
|
21232
|
+
var styles53 = import_react_native65.StyleSheet.create({
|
|
20429
21233
|
list: {
|
|
20430
21234
|
flex: 1
|
|
20431
21235
|
},
|
|
@@ -20459,7 +21263,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20459
21263
|
filterBtn: {
|
|
20460
21264
|
width: 40,
|
|
20461
21265
|
height: 40,
|
|
20462
|
-
borderWidth:
|
|
21266
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth,
|
|
20463
21267
|
borderRadius: radii.md,
|
|
20464
21268
|
justifyContent: "center",
|
|
20465
21269
|
alignItems: "center"
|
|
@@ -20480,7 +21284,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20480
21284
|
overflow: "hidden"
|
|
20481
21285
|
},
|
|
20482
21286
|
separator: {
|
|
20483
|
-
height:
|
|
21287
|
+
height: import_react_native65.StyleSheet.hairlineWidth,
|
|
20484
21288
|
marginLeft: spacing.lg + 36 + spacing.md
|
|
20485
21289
|
},
|
|
20486
21290
|
emptyWrap: {
|
|
@@ -20518,7 +21322,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20518
21322
|
justifyContent: "center",
|
|
20519
21323
|
paddingHorizontal: spacing.lg,
|
|
20520
21324
|
borderRadius: radii.pill,
|
|
20521
|
-
borderWidth:
|
|
21325
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth
|
|
20522
21326
|
},
|
|
20523
21327
|
chipLabel: {
|
|
20524
21328
|
...typography.label
|
|
@@ -20537,7 +21341,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20537
21341
|
});
|
|
20538
21342
|
|
|
20539
21343
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
20540
|
-
var
|
|
21344
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
20541
21345
|
var privacyCenterQueryClient = new import_react_query2.QueryClient();
|
|
20542
21346
|
function PrivacyCenterContent({ onBack }) {
|
|
20543
21347
|
const { currentPage } = useInternalNavigation();
|
|
@@ -20547,24 +21351,24 @@ function PrivacyCenterContent({ onBack }) {
|
|
|
20547
21351
|
const chromeMode = getPageChromeMode(currentPage);
|
|
20548
21352
|
const canvasIsLight = isLightColor(colors.canvasSubtle);
|
|
20549
21353
|
const barStyle = canvasIsLight ? "dark-content" : "light-content";
|
|
20550
|
-
(0,
|
|
20551
|
-
|
|
20552
|
-
if (
|
|
21354
|
+
(0, import_react45.useEffect)(() => {
|
|
21355
|
+
import_react_native66.StatusBar.setBarStyle(barStyle, true);
|
|
21356
|
+
if (import_react_native66.Platform.OS === "android") {
|
|
20553
21357
|
setNavBarIconStyle(canvasIsLight ? "dark" : "light");
|
|
20554
21358
|
}
|
|
20555
21359
|
}, [barStyle, canvasIsLight]);
|
|
20556
|
-
return /* @__PURE__ */ (0,
|
|
20557
|
-
/* @__PURE__ */ (0,
|
|
20558
|
-
/* @__PURE__ */ (0,
|
|
20559
|
-
/* @__PURE__ */ (0,
|
|
20560
|
-
/* @__PURE__ */ (0,
|
|
20561
|
-
currentPage === "home" && /* @__PURE__ */ (0,
|
|
20562
|
-
currentPage === "consent-manager" && /* @__PURE__ */ (0,
|
|
20563
|
-
currentPage === "form" && /* @__PURE__ */ (0,
|
|
20564
|
-
currentPage === "activity" && /* @__PURE__ */ (0,
|
|
20565
|
-
currentPage === "receipts" && /* @__PURE__ */ (0,
|
|
20566
|
-
currentPage === "case-details" && /* @__PURE__ */ (0,
|
|
20567
|
-
currentPage === "notifications" && /* @__PURE__ */ (0,
|
|
21360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native66.View, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
21361
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.StatusBar, { barStyle, translucent: true }),
|
|
21362
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.View, { style: styles54.mainColumn, children: brandingLoading ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
21363
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
|
|
21364
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.View, { style: [styles54.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PCLoader, {}) : status === "session-expired" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterSessionExpired, {}) : status === "empty" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
21365
|
+
currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HomeHub, {}),
|
|
21366
|
+
currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ConsentManager, {}),
|
|
21367
|
+
currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FormPage, {}),
|
|
21368
|
+
currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ActivitiesList, {}),
|
|
21369
|
+
currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ReceiptsList, {}),
|
|
21370
|
+
currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CaseDetailsPage, {}),
|
|
21371
|
+
currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NotificationsScreen, {})
|
|
20568
21372
|
] }) })
|
|
20569
21373
|
] }) })
|
|
20570
21374
|
] });
|
|
@@ -20578,22 +21382,34 @@ function RedactoPrivacyCenter({
|
|
|
20578
21382
|
theme: _theme,
|
|
20579
21383
|
accessToken,
|
|
20580
21384
|
refreshToken,
|
|
21385
|
+
token,
|
|
21386
|
+
email,
|
|
21387
|
+
mobile,
|
|
21388
|
+
ucic,
|
|
21389
|
+
organisationUuid,
|
|
21390
|
+
workspaceUuid,
|
|
20581
21391
|
onError,
|
|
20582
21392
|
initialPage = "home",
|
|
20583
21393
|
initialCaseUuid,
|
|
20584
21394
|
onBack
|
|
20585
21395
|
}) {
|
|
20586
|
-
return /* @__PURE__ */ (0,
|
|
21396
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SafeAreaBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(KeyboardProviderCompat, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_query2.QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_i18next31.I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
20587
21397
|
AuthProvider,
|
|
20588
21398
|
{
|
|
20589
|
-
accessToken,
|
|
20590
|
-
refreshToken,
|
|
21399
|
+
accessToken: accessToken != null ? accessToken : "",
|
|
21400
|
+
refreshToken: refreshToken != null ? refreshToken : "",
|
|
21401
|
+
token,
|
|
21402
|
+
sandboxUcic: ucic,
|
|
21403
|
+
sandboxSubject: email || mobile,
|
|
21404
|
+
organisationUuid,
|
|
21405
|
+
workspaceUuid,
|
|
21406
|
+
slug,
|
|
20591
21407
|
onError,
|
|
20592
|
-
children: /* @__PURE__ */ (0,
|
|
21408
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SelectUserGate, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(DataAvailabilityProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PageStatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterContent, { onBack }) }) }) }) })
|
|
20593
21409
|
}
|
|
20594
21410
|
) }) }) }) }) }) });
|
|
20595
21411
|
}
|
|
20596
|
-
var
|
|
21412
|
+
var styles54 = import_react_native66.StyleSheet.create({
|
|
20597
21413
|
container: {
|
|
20598
21414
|
flex: 1
|
|
20599
21415
|
},
|
|
@@ -20607,74 +21423,74 @@ var styles52 = import_react_native64.StyleSheet.create({
|
|
|
20607
21423
|
});
|
|
20608
21424
|
|
|
20609
21425
|
// src/RedactoPrivacyCenter/components/SideMenu.tsx
|
|
20610
|
-
var
|
|
20611
|
-
var
|
|
21426
|
+
var import_react_native67 = require("react-native");
|
|
21427
|
+
var import_react_i18next32 = require("react-i18next");
|
|
20612
21428
|
var import_react_native_svg4 = __toESM(require("react-native-svg"));
|
|
20613
|
-
var
|
|
21429
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
20614
21430
|
var MENU_ITEMS = [
|
|
20615
21431
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
|
|
20616
21432
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
|
|
20617
21433
|
{ page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
|
|
20618
21434
|
];
|
|
20619
21435
|
function SideMenu({ onBack } = {}) {
|
|
20620
|
-
const { t } = (0,
|
|
21436
|
+
const { t } = (0, import_react_i18next32.useTranslation)();
|
|
20621
21437
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20622
21438
|
const { organizationName, email } = useAuth();
|
|
20623
21439
|
const { colors } = useTheme();
|
|
20624
21440
|
const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
|
|
20625
21441
|
const displayName = organizationName || "Organization";
|
|
20626
|
-
return /* @__PURE__ */ (0,
|
|
20627
|
-
/* @__PURE__ */ (0,
|
|
20628
|
-
/* @__PURE__ */ (0,
|
|
20629
|
-
/* @__PURE__ */ (0,
|
|
20630
|
-
/* @__PURE__ */ (0,
|
|
20631
|
-
email ? /* @__PURE__ */ (0,
|
|
21442
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
|
|
21443
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgSection, children: [
|
|
21444
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
|
|
21445
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgInfo, children: [
|
|
21446
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
|
|
21447
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20632
21448
|
] })
|
|
20633
21449
|
] }),
|
|
20634
|
-
/* @__PURE__ */ (0,
|
|
20635
|
-
/* @__PURE__ */ (0,
|
|
21450
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21451
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
|
|
20636
21452
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
20637
|
-
return /* @__PURE__ */ (0,
|
|
20638
|
-
|
|
21453
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21454
|
+
import_react_native67.TouchableOpacity,
|
|
20639
21455
|
{
|
|
20640
21456
|
style: [
|
|
20641
|
-
|
|
20642
|
-
isActive && [
|
|
21457
|
+
styles55.menuItem,
|
|
21458
|
+
isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
|
|
20643
21459
|
],
|
|
20644
21460
|
onPress: () => navigateTo(item.page),
|
|
20645
21461
|
activeOpacity: 0.7,
|
|
20646
21462
|
accessibilityRole: "button",
|
|
20647
21463
|
accessibilityState: { selected: isActive },
|
|
20648
21464
|
children: [
|
|
20649
|
-
/* @__PURE__ */ (0,
|
|
20650
|
-
/* @__PURE__ */ (0,
|
|
20651
|
-
|
|
21465
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuIconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
|
|
21466
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
21467
|
+
import_react_native67.Text,
|
|
20652
21468
|
{
|
|
20653
21469
|
style: [
|
|
20654
|
-
|
|
21470
|
+
styles55.menuLabel,
|
|
20655
21471
|
{ color: isActive ? colors.primary : colors.text },
|
|
20656
|
-
isActive &&
|
|
21472
|
+
isActive && styles55.menuLabelActive
|
|
20657
21473
|
],
|
|
20658
21474
|
children: t(item.labelKey) || item.fallback
|
|
20659
21475
|
}
|
|
20660
21476
|
),
|
|
20661
|
-
isActive ? /* @__PURE__ */ (0,
|
|
21477
|
+
isActive ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
|
|
20662
21478
|
]
|
|
20663
21479
|
},
|
|
20664
21480
|
item.page
|
|
20665
21481
|
);
|
|
20666
21482
|
}) }),
|
|
20667
|
-
onBack ? /* @__PURE__ */ (0,
|
|
20668
|
-
/* @__PURE__ */ (0,
|
|
20669
|
-
/* @__PURE__ */ (0,
|
|
20670
|
-
/* @__PURE__ */ (0,
|
|
20671
|
-
|
|
21483
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
|
|
21484
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: { flex: 1 } }),
|
|
21485
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21486
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21487
|
+
import_react_native67.TouchableOpacity,
|
|
20672
21488
|
{
|
|
20673
|
-
style:
|
|
21489
|
+
style: styles55.backBtn,
|
|
20674
21490
|
onPress: () => navigateBack(onBack),
|
|
20675
21491
|
activeOpacity: 0.7,
|
|
20676
21492
|
children: [
|
|
20677
|
-
/* @__PURE__ */ (0,
|
|
21493
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native_svg4.default, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
20678
21494
|
import_react_native_svg4.Path,
|
|
20679
21495
|
{
|
|
20680
21496
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20683,7 +21499,7 @@ function SideMenu({ onBack } = {}) {
|
|
|
20683
21499
|
strokeLinecap: "round",
|
|
20684
21500
|
strokeLinejoin: "round"
|
|
20685
21501
|
}
|
|
20686
|
-
) : /* @__PURE__ */ (0,
|
|
21502
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
20687
21503
|
import_react_native_svg4.Path,
|
|
20688
21504
|
{
|
|
20689
21505
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20693,14 +21509,14 @@ function SideMenu({ onBack } = {}) {
|
|
|
20693
21509
|
strokeLinejoin: "round"
|
|
20694
21510
|
}
|
|
20695
21511
|
) }),
|
|
20696
|
-
/* @__PURE__ */ (0,
|
|
21512
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
|
|
20697
21513
|
]
|
|
20698
21514
|
}
|
|
20699
21515
|
)
|
|
20700
21516
|
] }) : null
|
|
20701
21517
|
] });
|
|
20702
21518
|
}
|
|
20703
|
-
var
|
|
21519
|
+
var styles55 = import_react_native67.StyleSheet.create({
|
|
20704
21520
|
container: {
|
|
20705
21521
|
flex: 1,
|
|
20706
21522
|
paddingTop: 12
|
|
@@ -20786,42 +21602,68 @@ var styles53 = import_react_native65.StyleSheet.create({
|
|
|
20786
21602
|
});
|
|
20787
21603
|
|
|
20788
21604
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20789
|
-
var
|
|
20790
|
-
var
|
|
20791
|
-
var
|
|
21605
|
+
var import_react46 = require("react");
|
|
21606
|
+
var import_react_native69 = require("react-native");
|
|
21607
|
+
var import_react_i18next34 = require("react-i18next");
|
|
20792
21608
|
var import_react_native_svg6 = __toESM(require("react-native-svg"));
|
|
20793
21609
|
|
|
20794
21610
|
// src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
|
|
20795
|
-
var
|
|
20796
|
-
var
|
|
21611
|
+
var import_react_native68 = require("react-native");
|
|
21612
|
+
var import_react_i18next33 = require("react-i18next");
|
|
20797
21613
|
var import_react_native_svg5 = __toESM(require("react-native-svg"));
|
|
20798
|
-
var
|
|
21614
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
20799
21615
|
var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
20800
|
-
const { t } = (0,
|
|
21616
|
+
const { t } = (0, import_react_i18next33.useTranslation)();
|
|
20801
21617
|
const { organizationName, email } = useAuth();
|
|
20802
21618
|
const { colors, branding } = useTheme();
|
|
21619
|
+
const { switchProfile } = useProfileSwitch();
|
|
20803
21620
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20804
21621
|
const handleAction = () => {
|
|
20805
21622
|
onClose();
|
|
20806
21623
|
navigateBack(onBack);
|
|
20807
21624
|
};
|
|
20808
|
-
return /* @__PURE__ */ (0,
|
|
20809
|
-
/* @__PURE__ */ (0,
|
|
20810
|
-
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0,
|
|
20811
|
-
/* @__PURE__ */ (0,
|
|
20812
|
-
/* @__PURE__ */ (0,
|
|
20813
|
-
email ? /* @__PURE__ */ (0,
|
|
21625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
|
|
21626
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identity, children: [
|
|
21627
|
+
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Image, { source: { uri: branding.logo_url }, style: styles56.logo, resizeMode: "contain" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
|
|
21628
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identityText, children: [
|
|
21629
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
|
|
21630
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20814
21631
|
] })
|
|
20815
21632
|
] }),
|
|
20816
|
-
|
|
20817
|
-
|
|
21633
|
+
switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21634
|
+
import_react_native68.TouchableOpacity,
|
|
21635
|
+
{
|
|
21636
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
|
|
21637
|
+
onPress: () => {
|
|
21638
|
+
onClose();
|
|
21639
|
+
switchProfile();
|
|
21640
|
+
},
|
|
21641
|
+
activeOpacity: 0.7,
|
|
21642
|
+
accessibilityRole: "button",
|
|
21643
|
+
children: [
|
|
21644
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native_svg5.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
21645
|
+
import_react_native_svg5.Path,
|
|
21646
|
+
{
|
|
21647
|
+
d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
|
|
21648
|
+
stroke: colors.primary,
|
|
21649
|
+
strokeWidth: 2,
|
|
21650
|
+
strokeLinecap: "round",
|
|
21651
|
+
strokeLinejoin: "round"
|
|
21652
|
+
}
|
|
21653
|
+
) }),
|
|
21654
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
|
|
21655
|
+
]
|
|
21656
|
+
}
|
|
21657
|
+
) : null,
|
|
21658
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21659
|
+
import_react_native68.TouchableOpacity,
|
|
20818
21660
|
{
|
|
20819
|
-
style: [
|
|
21661
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
|
|
20820
21662
|
onPress: handleAction,
|
|
20821
21663
|
activeOpacity: 0.7,
|
|
20822
21664
|
accessibilityRole: "button",
|
|
20823
21665
|
children: [
|
|
20824
|
-
/* @__PURE__ */ (0,
|
|
21666
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native_svg5.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
20825
21667
|
import_react_native_svg5.Path,
|
|
20826
21668
|
{
|
|
20827
21669
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20830,7 +21672,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20830
21672
|
strokeLinecap: "round",
|
|
20831
21673
|
strokeLinejoin: "round"
|
|
20832
21674
|
}
|
|
20833
|
-
) : /* @__PURE__ */ (0,
|
|
21675
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
20834
21676
|
import_react_native_svg5.Path,
|
|
20835
21677
|
{
|
|
20836
21678
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20840,13 +21682,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20840
21682
|
strokeLinejoin: "round"
|
|
20841
21683
|
}
|
|
20842
21684
|
) }),
|
|
20843
|
-
/* @__PURE__ */ (0,
|
|
21685
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
|
|
20844
21686
|
]
|
|
20845
21687
|
}
|
|
20846
21688
|
) : null
|
|
20847
21689
|
] });
|
|
20848
21690
|
};
|
|
20849
|
-
var
|
|
21691
|
+
var styles56 = import_react_native68.StyleSheet.create({
|
|
20850
21692
|
identity: {
|
|
20851
21693
|
flexDirection: "row",
|
|
20852
21694
|
alignItems: "center",
|
|
@@ -20887,33 +21729,33 @@ var styles54 = import_react_native66.StyleSheet.create({
|
|
|
20887
21729
|
});
|
|
20888
21730
|
|
|
20889
21731
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20890
|
-
var
|
|
21732
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
20891
21733
|
function Navbar({ mode = "primary", onBack }) {
|
|
20892
|
-
const { t } = (0,
|
|
21734
|
+
const { t } = (0, import_react_i18next34.useTranslation)();
|
|
20893
21735
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20894
21736
|
const { organizationName, email } = useAuth();
|
|
20895
21737
|
const { colors, branding } = useTheme();
|
|
20896
|
-
const [locale, setLocale] = (0,
|
|
20897
|
-
const [menuOpen, setMenuOpen] = (0,
|
|
21738
|
+
const [locale, setLocale] = (0, import_react46.useState)(i18n_default.language || "en");
|
|
21739
|
+
const [menuOpen, setMenuOpen] = (0, import_react46.useState)(false);
|
|
20898
21740
|
const unreadCount = useUnreadCount();
|
|
20899
21741
|
const { status: pageStatus } = usePageStatus();
|
|
20900
21742
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
|
|
20901
21743
|
const isDetail = mode === "detail";
|
|
20902
|
-
(0,
|
|
21744
|
+
(0, import_react46.useEffect)(() => {
|
|
20903
21745
|
const handleLanguageChanged = () => setLocale(i18n_default.language);
|
|
20904
21746
|
i18n_default.on("languageChanged", handleLanguageChanged);
|
|
20905
21747
|
return () => {
|
|
20906
21748
|
i18n_default.off("languageChanged", handleLanguageChanged);
|
|
20907
21749
|
};
|
|
20908
21750
|
}, []);
|
|
20909
|
-
const handleLanguageChange = (0,
|
|
21751
|
+
const handleLanguageChange = (0, import_react46.useCallback)((value) => {
|
|
20910
21752
|
i18n_default.changeLanguage(value);
|
|
20911
21753
|
}, []);
|
|
20912
21754
|
const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20913
21755
|
const accountLabel = brandLabel || email || t("account") || "Account";
|
|
20914
|
-
const brandLockup = /* @__PURE__ */ (0,
|
|
20915
|
-
/* @__PURE__ */ (0,
|
|
20916
|
-
/* @__PURE__ */ (0,
|
|
21756
|
+
const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.brandRow, children: [
|
|
21757
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
|
|
21758
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
|
|
20917
21759
|
] });
|
|
20918
21760
|
const handleDetailBack = () => {
|
|
20919
21761
|
if (currentPage === "case-details") {
|
|
@@ -20925,26 +21767,26 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20925
21767
|
}
|
|
20926
21768
|
};
|
|
20927
21769
|
if (isDetail) {
|
|
20928
|
-
return /* @__PURE__ */ (0,
|
|
20929
|
-
/* @__PURE__ */ (0,
|
|
20930
|
-
|
|
21770
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21771
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21772
|
+
import_react_native69.View,
|
|
20931
21773
|
{
|
|
20932
21774
|
style: [
|
|
20933
|
-
|
|
20934
|
-
|
|
21775
|
+
styles57.container,
|
|
21776
|
+
styles57.detailContainer,
|
|
20935
21777
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20936
21778
|
],
|
|
20937
|
-
children: /* @__PURE__ */ (0,
|
|
20938
|
-
/* @__PURE__ */ (0,
|
|
20939
|
-
|
|
21779
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailRow, children: [
|
|
21780
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21781
|
+
import_react_native69.TouchableOpacity,
|
|
20940
21782
|
{
|
|
20941
|
-
style:
|
|
21783
|
+
style: styles57.backButton,
|
|
20942
21784
|
onPress: handleDetailBack,
|
|
20943
21785
|
activeOpacity: 0.7,
|
|
20944
21786
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20945
21787
|
accessibilityRole: "button",
|
|
20946
21788
|
accessibilityLabel: t("back") || "Back",
|
|
20947
|
-
children: /* @__PURE__ */ (0,
|
|
21789
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
20948
21790
|
import_react_native_svg6.Path,
|
|
20949
21791
|
{
|
|
20950
21792
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20956,36 +21798,36 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20956
21798
|
) })
|
|
20957
21799
|
}
|
|
20958
21800
|
),
|
|
20959
|
-
/* @__PURE__ */ (0,
|
|
20960
|
-
/* @__PURE__ */ (0,
|
|
20961
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21801
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailTitleWrap, children: [
|
|
21802
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21803
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
20962
21804
|
] })
|
|
20963
21805
|
] })
|
|
20964
21806
|
}
|
|
20965
21807
|
),
|
|
20966
|
-
/* @__PURE__ */ (0,
|
|
21808
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
20967
21809
|
] });
|
|
20968
21810
|
}
|
|
20969
|
-
return /* @__PURE__ */ (0,
|
|
20970
|
-
/* @__PURE__ */ (0,
|
|
20971
|
-
|
|
21811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21812
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
21813
|
+
import_react_native69.View,
|
|
20972
21814
|
{
|
|
20973
21815
|
style: [
|
|
20974
|
-
|
|
21816
|
+
styles57.container,
|
|
20975
21817
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20976
21818
|
],
|
|
20977
21819
|
children: [
|
|
20978
|
-
/* @__PURE__ */ (0,
|
|
20979
|
-
onBack ? /* @__PURE__ */ (0,
|
|
20980
|
-
|
|
21820
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.appBar, children: [
|
|
21821
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21822
|
+
import_react_native69.TouchableOpacity,
|
|
20981
21823
|
{
|
|
20982
|
-
style:
|
|
21824
|
+
style: styles57.backButton,
|
|
20983
21825
|
onPress: () => navigateBack(onBack),
|
|
20984
21826
|
activeOpacity: 0.7,
|
|
20985
21827
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20986
21828
|
accessibilityRole: "button",
|
|
20987
21829
|
accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
|
|
20988
|
-
children: /* @__PURE__ */ (0,
|
|
21830
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
20989
21831
|
import_react_native_svg6.Path,
|
|
20990
21832
|
{
|
|
20991
21833
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20997,39 +21839,39 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20997
21839
|
) })
|
|
20998
21840
|
}
|
|
20999
21841
|
) : null,
|
|
21000
|
-
/* @__PURE__ */ (0,
|
|
21001
|
-
/* @__PURE__ */ (0,
|
|
21002
|
-
/* @__PURE__ */ (0,
|
|
21003
|
-
/* @__PURE__ */ (0,
|
|
21004
|
-
/* @__PURE__ */ (0,
|
|
21005
|
-
|
|
21842
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.View, { style: styles57.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
|
|
21843
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.actions, children: [
|
|
21844
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
|
|
21845
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
|
|
21846
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21847
|
+
import_react_native69.TouchableOpacity,
|
|
21006
21848
|
{
|
|
21007
|
-
style:
|
|
21849
|
+
style: styles57.avatarButton,
|
|
21008
21850
|
onPress: () => setMenuOpen(true),
|
|
21009
21851
|
activeOpacity: 0.7,
|
|
21010
21852
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21011
21853
|
accessibilityRole: "button",
|
|
21012
21854
|
accessibilityLabel: accountLabel,
|
|
21013
|
-
children: /* @__PURE__ */ (0,
|
|
21855
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
|
|
21014
21856
|
}
|
|
21015
21857
|
)
|
|
21016
21858
|
] })
|
|
21017
21859
|
] }),
|
|
21018
|
-
/* @__PURE__ */ (0,
|
|
21019
|
-
/* @__PURE__ */ (0,
|
|
21020
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21860
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.View, { style: styles57.pageHeader, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.titleRow, children: [
|
|
21861
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21862
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
21021
21863
|
] }) })
|
|
21022
21864
|
]
|
|
21023
21865
|
}
|
|
21024
21866
|
),
|
|
21025
|
-
/* @__PURE__ */ (0,
|
|
21867
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21026
21868
|
] });
|
|
21027
21869
|
}
|
|
21028
|
-
var
|
|
21870
|
+
var styles57 = import_react_native69.StyleSheet.create({
|
|
21029
21871
|
container: {
|
|
21030
21872
|
paddingHorizontal: spacing.lg,
|
|
21031
21873
|
paddingBottom: spacing.md,
|
|
21032
|
-
borderBottomWidth:
|
|
21874
|
+
borderBottomWidth: import_react_native69.StyleSheet.hairlineWidth
|
|
21033
21875
|
},
|
|
21034
21876
|
detailContainer: {
|
|
21035
21877
|
paddingBottom: spacing.sm
|
|
@@ -21109,10 +21951,10 @@ var styles55 = import_react_native67.StyleSheet.create({
|
|
|
21109
21951
|
});
|
|
21110
21952
|
|
|
21111
21953
|
// src/RedactoPrivacyCenter/components/BottomTabBar.tsx
|
|
21112
|
-
var
|
|
21113
|
-
var
|
|
21114
|
-
var
|
|
21115
|
-
var
|
|
21954
|
+
var import_react47 = require("react");
|
|
21955
|
+
var import_react_native70 = require("react-native");
|
|
21956
|
+
var import_react_i18next35 = require("react-i18next");
|
|
21957
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
21116
21958
|
var TAB_ITEMS = [
|
|
21117
21959
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
|
|
21118
21960
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
|
|
@@ -21123,10 +21965,10 @@ var PAD_H = spacing.lg;
|
|
|
21123
21965
|
var PILL_WIDTH = 56;
|
|
21124
21966
|
var PILL_HEIGHT = 34;
|
|
21125
21967
|
function BottomTabBar({ showFooter = true }) {
|
|
21126
|
-
const { t } = (0,
|
|
21968
|
+
const { t } = (0, import_react_i18next35.useTranslation)();
|
|
21127
21969
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
21128
21970
|
const { colors } = useTheme();
|
|
21129
|
-
const [rowWidth, setRowWidth] = (0,
|
|
21971
|
+
const [rowWidth, setRowWidth] = (0, import_react47.useState)(0);
|
|
21130
21972
|
const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
|
|
21131
21973
|
const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
|
|
21132
21974
|
const activeIndex = TAB_ITEMS.findIndex(
|
|
@@ -21134,13 +21976,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21134
21976
|
);
|
|
21135
21977
|
const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
|
|
21136
21978
|
const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
|
|
21137
|
-
return /* @__PURE__ */ (0,
|
|
21138
|
-
/* @__PURE__ */ (0,
|
|
21139
|
-
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0,
|
|
21140
|
-
|
|
21979
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
|
|
21980
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: styles58.container, onLayout, children: [
|
|
21981
|
+
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21982
|
+
import_react_native70.Animated.View,
|
|
21141
21983
|
{
|
|
21142
21984
|
style: [
|
|
21143
|
-
|
|
21985
|
+
styles58.pill,
|
|
21144
21986
|
{
|
|
21145
21987
|
width: PILL_WIDTH,
|
|
21146
21988
|
left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
|
|
@@ -21153,17 +21995,17 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21153
21995
|
TAB_ITEMS.map((item) => {
|
|
21154
21996
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
21155
21997
|
const label = t(item.labelKey) || item.fallback;
|
|
21156
|
-
return /* @__PURE__ */ (0,
|
|
21157
|
-
|
|
21998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
21999
|
+
import_react_native70.TouchableOpacity,
|
|
21158
22000
|
{
|
|
21159
|
-
style:
|
|
22001
|
+
style: styles58.tab,
|
|
21160
22002
|
onPress: () => navigateTo(item.page),
|
|
21161
22003
|
activeOpacity: 0.7,
|
|
21162
22004
|
accessibilityRole: "tab",
|
|
21163
22005
|
accessibilityState: { selected: isActive },
|
|
21164
22006
|
accessibilityLabel: label,
|
|
21165
22007
|
children: [
|
|
21166
|
-
/* @__PURE__ */ (0,
|
|
22008
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: styles58.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21167
22009
|
Icon,
|
|
21168
22010
|
{
|
|
21169
22011
|
name: item.icon,
|
|
@@ -21172,10 +22014,10 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21172
22014
|
strokeWidth: isActive ? 2.1 : 1.85
|
|
21173
22015
|
}
|
|
21174
22016
|
) }),
|
|
21175
|
-
/* @__PURE__ */ (0,
|
|
21176
|
-
|
|
22017
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
22018
|
+
import_react_native70.Text,
|
|
21177
22019
|
{
|
|
21178
|
-
style: [
|
|
22020
|
+
style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
|
|
21179
22021
|
numberOfLines: 1,
|
|
21180
22022
|
children: label
|
|
21181
22023
|
}
|
|
@@ -21186,13 +22028,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21186
22028
|
);
|
|
21187
22029
|
})
|
|
21188
22030
|
] }),
|
|
21189
|
-
showFooter ? /* @__PURE__ */ (0,
|
|
21190
|
-
/* @__PURE__ */ (0,
|
|
22031
|
+
showFooter ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Footer, { inline: true }) : null,
|
|
22032
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: { height: BOTTOM_INSET } })
|
|
21191
22033
|
] });
|
|
21192
22034
|
}
|
|
21193
|
-
var
|
|
22035
|
+
var styles58 = import_react_native70.StyleSheet.create({
|
|
21194
22036
|
wrapper: {
|
|
21195
|
-
borderTopWidth:
|
|
22037
|
+
borderTopWidth: import_react_native70.StyleSheet.hairlineWidth
|
|
21196
22038
|
},
|
|
21197
22039
|
container: {
|
|
21198
22040
|
flexDirection: "row",
|