@redacto.io/consent-sdk-react-native 5.0.0-beta.1 → 5.0.0-beta.11
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 +239 -190
- package/dist/index.mjs +196 -191
- package/dist/privacy-center.d.mts +147 -63
- package/dist/privacy-center.d.ts +147 -63
- package/dist/privacy-center.js +1614 -713
- package/dist/privacy-center.mjs +1551 -687
- package/package.json +10 -9
- package/LICENSE +0 -176
- 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: [
|
|
@@ -17978,10 +18530,26 @@ var styles35 = import_react_native46.StyleSheet.create({
|
|
|
17978
18530
|
});
|
|
17979
18531
|
|
|
17980
18532
|
// src/RedactoPrivacyCenter/components/SlimTopBar.tsx
|
|
17981
|
-
var
|
|
18533
|
+
var import_react35 = require("react");
|
|
17982
18534
|
var import_react_native49 = require("react-native");
|
|
17983
18535
|
var import_react_i18next19 = require("react-i18next");
|
|
17984
18536
|
|
|
18537
|
+
// src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
|
|
18538
|
+
var import_react32 = require("react");
|
|
18539
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
18540
|
+
var ProfileSwitchContext = (0, import_react32.createContext)({
|
|
18541
|
+
switchProfile: null
|
|
18542
|
+
});
|
|
18543
|
+
function ProfileSwitchProvider({
|
|
18544
|
+
switchProfile,
|
|
18545
|
+
children
|
|
18546
|
+
}) {
|
|
18547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
|
|
18548
|
+
}
|
|
18549
|
+
function useProfileSwitch() {
|
|
18550
|
+
return (0, import_react32.useContext)(ProfileSwitchContext);
|
|
18551
|
+
}
|
|
18552
|
+
|
|
17985
18553
|
// src/RedactoPrivacyCenter/lib/navigation.ts
|
|
17986
18554
|
function navigateBack(onBack) {
|
|
17987
18555
|
var _a3, _b;
|
|
@@ -18005,12 +18573,12 @@ function navigateBack(onBack) {
|
|
|
18005
18573
|
|
|
18006
18574
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx
|
|
18007
18575
|
var import_react_native47 = require("react-native");
|
|
18008
|
-
var
|
|
18576
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
18009
18577
|
var NotificationBell = ({ count, onPress }) => {
|
|
18010
18578
|
const { colors } = useTheme();
|
|
18011
18579
|
const showBadge = count > 0;
|
|
18012
18580
|
const badgeLabel = count > 99 ? "99+" : String(count);
|
|
18013
|
-
return /* @__PURE__ */ (0,
|
|
18581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
18014
18582
|
import_react_native47.TouchableOpacity,
|
|
18015
18583
|
{
|
|
18016
18584
|
onPress,
|
|
@@ -18020,8 +18588,8 @@ var NotificationBell = ({ count, onPress }) => {
|
|
|
18020
18588
|
accessibilityRole: "button",
|
|
18021
18589
|
accessibilityLabel: showBadge ? `Notifications, ${count} unread` : "Notifications",
|
|
18022
18590
|
children: [
|
|
18023
|
-
/* @__PURE__ */ (0,
|
|
18024
|
-
showBadge ? /* @__PURE__ */ (0,
|
|
18591
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { name: "bell", size: 22, color: colors.text }),
|
|
18592
|
+
showBadge ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react_native47.View, { style: [styles36.badge, { backgroundColor: colors.error, borderColor: colors.canvasSubtle }], children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react_native47.Text, { style: styles36.badgeText, numberOfLines: 1, children: badgeLabel }) }) : null
|
|
18025
18593
|
]
|
|
18026
18594
|
}
|
|
18027
18595
|
);
|
|
@@ -18053,26 +18621,27 @@ var styles36 = import_react_native47.StyleSheet.create({
|
|
|
18053
18621
|
});
|
|
18054
18622
|
|
|
18055
18623
|
// src/RedactoPrivacyCenter/components/NotificationHub/useUnreadCount.ts
|
|
18056
|
-
var
|
|
18624
|
+
var import_react33 = require("react");
|
|
18057
18625
|
function useUnreadCount() {
|
|
18058
18626
|
const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId } = useAuth();
|
|
18059
18627
|
const { consentClient } = useBaseUrl();
|
|
18060
|
-
const [count, setCount] = (0,
|
|
18061
|
-
const authContext = (0,
|
|
18628
|
+
const [count, setCount] = (0, import_react33.useState)(0);
|
|
18629
|
+
const authContext = (0, import_react33.useMemo)(
|
|
18062
18630
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
18063
18631
|
[accessToken, refreshToken, onError, updateTokens]
|
|
18064
18632
|
);
|
|
18065
|
-
const loadRef = (0,
|
|
18633
|
+
const loadRef = (0, import_react33.useRef)();
|
|
18066
18634
|
loadRef.current = async () => {
|
|
18067
18635
|
if (!organizationId || !workspaceId) return;
|
|
18636
|
+
if (isRefreshBlocked(authContext)) return;
|
|
18068
18637
|
const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
|
|
18069
18638
|
if (res && typeof res.count === "number") setCount(res.count);
|
|
18070
18639
|
};
|
|
18071
|
-
(0,
|
|
18640
|
+
(0, import_react33.useEffect)(() => {
|
|
18072
18641
|
var _a3;
|
|
18073
18642
|
(_a3 = loadRef.current) == null ? void 0 : _a3.call(loadRef);
|
|
18074
18643
|
}, [organizationId, workspaceId]);
|
|
18075
|
-
(0,
|
|
18644
|
+
(0, import_react33.useEffect)(() => {
|
|
18076
18645
|
const id = setInterval(() => {
|
|
18077
18646
|
var _a3;
|
|
18078
18647
|
(_a3 = loadRef.current) == null ? void 0 : _a3.call(loadRef);
|
|
@@ -18083,17 +18652,17 @@ function useUnreadCount() {
|
|
|
18083
18652
|
}
|
|
18084
18653
|
|
|
18085
18654
|
// src/RedactoPrivacyCenter/components/NavDrawer.tsx
|
|
18086
|
-
var
|
|
18655
|
+
var import_react34 = require("react");
|
|
18087
18656
|
var import_react_native48 = require("react-native");
|
|
18088
18657
|
var import_react_i18next18 = require("react-i18next");
|
|
18089
|
-
var
|
|
18658
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
18090
18659
|
var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
18091
18660
|
const { t } = (0, import_react_i18next18.useTranslation)();
|
|
18092
18661
|
const { colors, branding } = useTheme();
|
|
18093
18662
|
const { organizationName, email } = useAuth();
|
|
18094
18663
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
18095
|
-
const [locale, setLocale] = (0,
|
|
18096
|
-
const items = (0,
|
|
18664
|
+
const [locale, setLocale] = (0, import_react34.useState)(i18n_default.language || "en");
|
|
18665
|
+
const items = (0, import_react34.useMemo)(
|
|
18097
18666
|
() => [
|
|
18098
18667
|
{ page: "home", label: t("privacyCenter") || "Home", icon: "shield", tone: "primary" },
|
|
18099
18668
|
{ page: "consent-manager", label: t("manageConsent") || "Consents", icon: "shield-check", tone: "primary" },
|
|
@@ -18108,18 +18677,18 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18108
18677
|
i18n_default.changeLanguage(value);
|
|
18109
18678
|
};
|
|
18110
18679
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
18111
|
-
return /* @__PURE__ */ (0,
|
|
18112
|
-
/* @__PURE__ */ (0,
|
|
18113
|
-
/* @__PURE__ */ (0,
|
|
18114
|
-
/* @__PURE__ */ (0,
|
|
18115
|
-
/* @__PURE__ */ (0,
|
|
18116
|
-
email ? /* @__PURE__ */ (0,
|
|
18680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(BottomSheet, { visible, onClose, title: t("menu") || "Menu", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_react_native48.View, { style: styles37.body, children: [
|
|
18681
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_react_native48.View, { style: [styles37.identity, { backgroundColor: colors.surfaceAlt }], children: [
|
|
18682
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(PCAvatar, { name: brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 40 }),
|
|
18683
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_react_native48.View, { style: styles37.identityText, children: [
|
|
18684
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_native48.Text, { style: [styles37.brandName, { color: colors.text }], numberOfLines: 1, children: brandName }),
|
|
18685
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_native48.Text, { style: [styles37.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
18117
18686
|
] })
|
|
18118
18687
|
] }),
|
|
18119
|
-
/* @__PURE__ */ (0,
|
|
18688
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_native48.View, { style: [styles37.menuGroup, { borderColor: colors.border, backgroundColor: colors.surface }], children: items.map((item, index) => {
|
|
18120
18689
|
const isActive = currentPage === item.page;
|
|
18121
|
-
return /* @__PURE__ */ (0,
|
|
18122
|
-
/* @__PURE__ */ (0,
|
|
18690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(import_react_native48.View, { children: [
|
|
18691
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
18123
18692
|
import_react_native48.TouchableOpacity,
|
|
18124
18693
|
{
|
|
18125
18694
|
style: styles37.menuItem,
|
|
@@ -18132,8 +18701,8 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18132
18701
|
accessibilityState: { selected: isActive },
|
|
18133
18702
|
accessibilityLabel: item.label,
|
|
18134
18703
|
children: [
|
|
18135
|
-
/* @__PURE__ */ (0,
|
|
18136
|
-
/* @__PURE__ */ (0,
|
|
18704
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(IconTile, { name: item.icon, tone: item.tone, size: "sm" }),
|
|
18705
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
18137
18706
|
import_react_native48.Text,
|
|
18138
18707
|
{
|
|
18139
18708
|
style: [styles37.menuLabel, { color: isActive ? colors.primary : colors.text }],
|
|
@@ -18141,14 +18710,14 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18141
18710
|
children: item.label
|
|
18142
18711
|
}
|
|
18143
18712
|
),
|
|
18144
|
-
/* @__PURE__ */ (0,
|
|
18713
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary })
|
|
18145
18714
|
]
|
|
18146
18715
|
}
|
|
18147
18716
|
),
|
|
18148
|
-
index < items.length - 1 ? /* @__PURE__ */ (0,
|
|
18717
|
+
index < items.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_native48.View, { style: [styles37.separator, { backgroundColor: colors.hairline }] }) : null
|
|
18149
18718
|
] }, item.page);
|
|
18150
18719
|
}) }),
|
|
18151
|
-
/* @__PURE__ */ (0,
|
|
18720
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
18152
18721
|
PCSelect,
|
|
18153
18722
|
{
|
|
18154
18723
|
label: t("language"),
|
|
@@ -18158,7 +18727,7 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18158
18727
|
placeholder: t("language")
|
|
18159
18728
|
}
|
|
18160
18729
|
),
|
|
18161
|
-
onBack ? /* @__PURE__ */ (0,
|
|
18730
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
18162
18731
|
import_react_native48.TouchableOpacity,
|
|
18163
18732
|
{
|
|
18164
18733
|
style: [styles37.actionButton, { borderColor: colors.border, backgroundColor: colors.surface }],
|
|
@@ -18169,7 +18738,7 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18169
18738
|
activeOpacity: 0.7,
|
|
18170
18739
|
accessibilityRole: "button",
|
|
18171
18740
|
children: [
|
|
18172
|
-
/* @__PURE__ */ (0,
|
|
18741
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
18173
18742
|
Icon,
|
|
18174
18743
|
{
|
|
18175
18744
|
name: onBack === "signout" ? "log-out" : "arrow-left",
|
|
@@ -18177,11 +18746,11 @@ var NavDrawer = ({ visible, onClose, onBack }) => {
|
|
|
18177
18746
|
color: onBack === "signout" ? colors.error : colors.text
|
|
18178
18747
|
}
|
|
18179
18748
|
),
|
|
18180
|
-
/* @__PURE__ */ (0,
|
|
18749
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_native48.Text, { style: [styles37.actionLabel, { color: onBack === "signout" ? colors.error : colors.text }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
|
|
18181
18750
|
]
|
|
18182
18751
|
}
|
|
18183
18752
|
) : null,
|
|
18184
|
-
/* @__PURE__ */ (0,
|
|
18753
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Footer, { inline: true })
|
|
18185
18754
|
] }) });
|
|
18186
18755
|
};
|
|
18187
18756
|
var styles37 = import_react_native48.StyleSheet.create({
|
|
@@ -18243,7 +18812,7 @@ var styles37 = import_react_native48.StyleSheet.create({
|
|
|
18243
18812
|
});
|
|
18244
18813
|
|
|
18245
18814
|
// src/RedactoPrivacyCenter/components/SlimTopBar.tsx
|
|
18246
|
-
var
|
|
18815
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
18247
18816
|
var SlimTopBar = ({ mode = "primary", onBack }) => {
|
|
18248
18817
|
const { t } = (0, import_react_i18next19.useTranslation)();
|
|
18249
18818
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
@@ -18251,10 +18820,11 @@ var SlimTopBar = ({ mode = "primary", onBack }) => {
|
|
|
18251
18820
|
const { organizationName } = useAuth();
|
|
18252
18821
|
const unreadCount = useUnreadCount();
|
|
18253
18822
|
const insets = useSafeInsets();
|
|
18254
|
-
const [menuOpen, setMenuOpen] = (0,
|
|
18823
|
+
const [menuOpen, setMenuOpen] = (0, import_react35.useState)(false);
|
|
18824
|
+
const { switchProfile } = useProfileSwitch();
|
|
18255
18825
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage];
|
|
18256
18826
|
const isDetail = mode === "detail";
|
|
18257
|
-
const brandLabel = (0,
|
|
18827
|
+
const brandLabel = (0, import_react35.useMemo)(
|
|
18258
18828
|
() => (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center",
|
|
18259
18829
|
[branding == null ? void 0 : branding.brand_name, organizationName, t]
|
|
18260
18830
|
);
|
|
@@ -18269,16 +18839,16 @@ var SlimTopBar = ({ mode = "primary", onBack }) => {
|
|
|
18269
18839
|
}
|
|
18270
18840
|
navigateBack(onBack);
|
|
18271
18841
|
};
|
|
18272
|
-
return /* @__PURE__ */ (0,
|
|
18273
|
-
/* @__PURE__ */ (0,
|
|
18842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
|
|
18843
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
18274
18844
|
import_react_native49.View,
|
|
18275
18845
|
{
|
|
18276
18846
|
style: [
|
|
18277
18847
|
styles38.container,
|
|
18278
18848
|
{ backgroundColor: colors.canvasSubtle, borderBottomColor: colors.hairline, paddingTop: insets.top + spacing.xs }
|
|
18279
18849
|
],
|
|
18280
|
-
children: isDetail ? /* @__PURE__ */ (0,
|
|
18281
|
-
/* @__PURE__ */ (0,
|
|
18850
|
+
children: isDetail ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_react_native49.View, { style: styles38.detailRow, children: [
|
|
18851
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
18282
18852
|
import_react_native49.TouchableOpacity,
|
|
18283
18853
|
{
|
|
18284
18854
|
style: styles38.iconButton,
|
|
@@ -18287,27 +18857,39 @@ var SlimTopBar = ({ mode = "primary", onBack }) => {
|
|
|
18287
18857
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
18288
18858
|
accessibilityRole: "button",
|
|
18289
18859
|
accessibilityLabel: t("back") || "Back",
|
|
18290
|
-
children: /* @__PURE__ */ (0,
|
|
18860
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { name: "arrow-left", size: 22, color: colors.text })
|
|
18291
18861
|
}
|
|
18292
18862
|
),
|
|
18293
|
-
/* @__PURE__ */ (0,
|
|
18294
|
-
/* @__PURE__ */ (0,
|
|
18295
|
-
] }) : /* @__PURE__ */ (0,
|
|
18296
|
-
/* @__PURE__ */ (0,
|
|
18863
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_native49.Text, { style: [styles38.detailTitle, { color: colors.text }], numberOfLines: 1, children: t((pageChrome == null ? void 0 : pageChrome.titleKey) || "privacyCenter") }),
|
|
18864
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_native49.View, { style: styles38.placeholder })
|
|
18865
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_react_native49.View, { style: styles38.row, children: [
|
|
18866
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_native49.View, { style: styles38.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
18297
18867
|
BrandImage,
|
|
18298
18868
|
{
|
|
18299
18869
|
uri: branding.logo_url,
|
|
18300
18870
|
height: 24,
|
|
18301
18871
|
maxWidth: 124,
|
|
18302
|
-
fallback: /* @__PURE__ */ (0,
|
|
18872
|
+
fallback: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCAvatar, { name: brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 24 })
|
|
18303
18873
|
}
|
|
18304
|
-
) : /* @__PURE__ */ (0,
|
|
18305
|
-
/* @__PURE__ */ (0,
|
|
18306
|
-
/* @__PURE__ */ (0,
|
|
18874
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_react_native49.View, { style: styles38.brandLockup, children: [
|
|
18875
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCAvatar, { name: brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 24 }),
|
|
18876
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_native49.Text, { style: [styles38.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
|
|
18307
18877
|
] }) }),
|
|
18308
|
-
/* @__PURE__ */ (0,
|
|
18309
|
-
/* @__PURE__ */ (0,
|
|
18310
|
-
|
|
18878
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_react_native49.View, { style: styles38.actions, children: [
|
|
18879
|
+
switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
18880
|
+
import_react_native49.TouchableOpacity,
|
|
18881
|
+
{
|
|
18882
|
+
style: styles38.iconButton,
|
|
18883
|
+
onPress: switchProfile,
|
|
18884
|
+
activeOpacity: 0.7,
|
|
18885
|
+
hitSlop: DEFAULT_HIT_SLOP,
|
|
18886
|
+
accessibilityRole: "button",
|
|
18887
|
+
accessibilityLabel: t("switchProfile"),
|
|
18888
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { name: "users", size: 22, color: colors.text })
|
|
18889
|
+
}
|
|
18890
|
+
) : null,
|
|
18891
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
|
|
18892
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
18311
18893
|
import_react_native49.TouchableOpacity,
|
|
18312
18894
|
{
|
|
18313
18895
|
style: styles38.iconButton,
|
|
@@ -18316,14 +18898,14 @@ var SlimTopBar = ({ mode = "primary", onBack }) => {
|
|
|
18316
18898
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
18317
18899
|
accessibilityRole: "button",
|
|
18318
18900
|
accessibilityLabel: t("menu") || "Menu",
|
|
18319
|
-
children: /* @__PURE__ */ (0,
|
|
18901
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Icon, { name: "menu", size: 22, color: colors.text })
|
|
18320
18902
|
}
|
|
18321
18903
|
)
|
|
18322
18904
|
] })
|
|
18323
18905
|
] })
|
|
18324
18906
|
}
|
|
18325
18907
|
),
|
|
18326
|
-
/* @__PURE__ */ (0,
|
|
18908
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(NavDrawer, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
18327
18909
|
] });
|
|
18328
18910
|
};
|
|
18329
18911
|
var styles38 = import_react_native49.StyleSheet.create({
|
|
@@ -18384,23 +18966,245 @@ var styles38 = import_react_native49.StyleSheet.create({
|
|
|
18384
18966
|
|
|
18385
18967
|
// src/RedactoPrivacyCenter/components/PrivacyCenterEmptyState.tsx
|
|
18386
18968
|
var import_react_i18next20 = require("react-i18next");
|
|
18387
|
-
var
|
|
18969
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
18388
18970
|
function PrivacyCenterEmptyState() {
|
|
18389
18971
|
const { t } = (0, import_react_i18next20.useTranslation)();
|
|
18390
|
-
return /* @__PURE__ */ (0,
|
|
18972
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
|
|
18973
|
+
}
|
|
18974
|
+
|
|
18975
|
+
// src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
|
|
18976
|
+
var import_react_i18next21 = require("react-i18next");
|
|
18977
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
18978
|
+
function PrivacyCenterSessionExpired() {
|
|
18979
|
+
const { t } = (0, import_react_i18next21.useTranslation)();
|
|
18980
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
18981
|
+
PCEmpty,
|
|
18982
|
+
{
|
|
18983
|
+
iconName: "shield",
|
|
18984
|
+
title: t("sessionExpiredTitle"),
|
|
18985
|
+
description: t("sessionExpiredDescription")
|
|
18986
|
+
}
|
|
18987
|
+
);
|
|
18988
|
+
}
|
|
18989
|
+
|
|
18990
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
18991
|
+
var import_react36 = require("react");
|
|
18992
|
+
var import_react_native51 = require("react-native");
|
|
18993
|
+
|
|
18994
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18995
|
+
var import_react_native50 = require("react-native");
|
|
18996
|
+
var import_react_i18next22 = require("react-i18next");
|
|
18997
|
+
|
|
18998
|
+
// src/RedactoPrivacyCenter/lib/identityLabels.ts
|
|
18999
|
+
var identityPrimaryValue = (candidate) => {
|
|
19000
|
+
const orgUserId = candidate.org_user_id || "";
|
|
19001
|
+
const email = candidate.primary_email || "";
|
|
19002
|
+
const mobile = candidate.primary_mobile || "";
|
|
19003
|
+
return { orgUserId, fallback: email || mobile || candidate.uuid };
|
|
19004
|
+
};
|
|
19005
|
+
var identitySecondaryLabels = (candidate, primaryLabel) => {
|
|
19006
|
+
const email = candidate.primary_email || "";
|
|
19007
|
+
const mobile = candidate.primary_mobile || "";
|
|
19008
|
+
return [email, mobile].filter(
|
|
19009
|
+
(value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
|
|
19010
|
+
);
|
|
19011
|
+
};
|
|
19012
|
+
var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
|
|
19013
|
+
|
|
19014
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
19015
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
19016
|
+
var SelectUser = ({
|
|
19017
|
+
candidates,
|
|
19018
|
+
onSelect,
|
|
19019
|
+
busyUuid,
|
|
19020
|
+
error
|
|
19021
|
+
}) => {
|
|
19022
|
+
const { t } = (0, import_react_i18next22.useTranslation)();
|
|
19023
|
+
const { colors } = useTheme();
|
|
19024
|
+
const selectable = selectableIdentities(candidates);
|
|
19025
|
+
const busy = busyUuid !== null;
|
|
19026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.ScrollView, { contentContainerStyle: styles39.container, children: [
|
|
19027
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
|
|
19028
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
|
|
19029
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
|
|
19030
|
+
selectable.map((candidate) => {
|
|
19031
|
+
const { orgUserId, fallback } = identityPrimaryValue(candidate);
|
|
19032
|
+
const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
|
|
19033
|
+
const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
|
|
19034
|
+
const isBusy = busyUuid === candidate.uuid;
|
|
19035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
19036
|
+
import_react_native50.TouchableOpacity,
|
|
19037
|
+
{
|
|
19038
|
+
accessibilityRole: "button",
|
|
19039
|
+
disabled: busy,
|
|
19040
|
+
onPress: () => onSelect(candidate.uuid),
|
|
19041
|
+
style: [
|
|
19042
|
+
styles39.row,
|
|
19043
|
+
{
|
|
19044
|
+
backgroundColor: colors.surface,
|
|
19045
|
+
borderColor: isBusy ? colors.primary : colors.border
|
|
19046
|
+
}
|
|
19047
|
+
],
|
|
19048
|
+
children: [
|
|
19049
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.View, { style: styles39.rowText, children: [
|
|
19050
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
|
|
19051
|
+
secondaryLabels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
19052
|
+
import_react_native50.Text,
|
|
19053
|
+
{
|
|
19054
|
+
style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
|
|
19055
|
+
children: label
|
|
19056
|
+
},
|
|
19057
|
+
label
|
|
19058
|
+
))
|
|
19059
|
+
] }),
|
|
19060
|
+
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 })
|
|
19061
|
+
]
|
|
19062
|
+
},
|
|
19063
|
+
candidate.uuid
|
|
19064
|
+
);
|
|
19065
|
+
})
|
|
19066
|
+
] });
|
|
19067
|
+
};
|
|
19068
|
+
var styles39 = import_react_native50.StyleSheet.create({
|
|
19069
|
+
container: { padding: spacing.lg },
|
|
19070
|
+
heading: { textAlign: "center" },
|
|
19071
|
+
subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
|
|
19072
|
+
error: { textAlign: "center", marginBottom: spacing.md },
|
|
19073
|
+
row: {
|
|
19074
|
+
flexDirection: "row",
|
|
19075
|
+
alignItems: "center",
|
|
19076
|
+
borderWidth: 1,
|
|
19077
|
+
borderRadius: radii.md,
|
|
19078
|
+
padding: spacing.md,
|
|
19079
|
+
marginBottom: spacing.sm
|
|
19080
|
+
},
|
|
19081
|
+
rowText: { flex: 1 },
|
|
19082
|
+
secondary: { marginTop: 2 }
|
|
19083
|
+
});
|
|
19084
|
+
|
|
19085
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
19086
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
19087
|
+
function SelectUserGate({ children }) {
|
|
19088
|
+
var _a3, _b;
|
|
19089
|
+
const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
|
|
19090
|
+
const { consentClient } = useBaseUrl();
|
|
19091
|
+
const { colors } = useTheme();
|
|
19092
|
+
const insets = useSafeInsets();
|
|
19093
|
+
const [phase, setPhase] = (0, import_react36.useState)("checking");
|
|
19094
|
+
const [candidates, setCandidates] = (0, import_react36.useState)([]);
|
|
19095
|
+
const [busyUuid, setBusyUuid] = (0, import_react36.useState)(null);
|
|
19096
|
+
const [selectError, setSelectError] = (0, import_react36.useState)(null);
|
|
19097
|
+
const [pinnedOrgUserId, setPinnedOrgUserId] = (0, import_react36.useState)(null);
|
|
19098
|
+
const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
|
|
19099
|
+
(0, import_react36.useEffect)(() => {
|
|
19100
|
+
let cancelled = false;
|
|
19101
|
+
if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
|
|
19102
|
+
setPhase("resolved");
|
|
19103
|
+
return;
|
|
19104
|
+
}
|
|
19105
|
+
const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
|
|
19106
|
+
setPhase(isPinned ? "resolved" : "checking");
|
|
19107
|
+
(async () => {
|
|
19108
|
+
var _a4;
|
|
19109
|
+
try {
|
|
19110
|
+
const res = await consentClient.listIdentities({
|
|
19111
|
+
organisationUuid: organizationId,
|
|
19112
|
+
workspaceUuid: workspaceId,
|
|
19113
|
+
authToken: accessToken
|
|
19114
|
+
});
|
|
19115
|
+
if (cancelled) return;
|
|
19116
|
+
const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
|
|
19117
|
+
setCandidates(list);
|
|
19118
|
+
setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
|
|
19119
|
+
} catch {
|
|
19120
|
+
if (cancelled) return;
|
|
19121
|
+
setCandidates([]);
|
|
19122
|
+
setPhase("resolved");
|
|
19123
|
+
}
|
|
19124
|
+
})();
|
|
19125
|
+
return () => {
|
|
19126
|
+
cancelled = true;
|
|
19127
|
+
};
|
|
19128
|
+
}, [organizationId, workspaceId, tokenOrgUserId]);
|
|
19129
|
+
const handleSelect = (0, import_react36.useCallback)(
|
|
19130
|
+
async (principalUuid) => {
|
|
19131
|
+
var _a4, _b2;
|
|
19132
|
+
if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
|
|
19133
|
+
setBusyUuid(principalUuid);
|
|
19134
|
+
setSelectError(null);
|
|
19135
|
+
try {
|
|
19136
|
+
const res = await consentClient.selectPrincipal(
|
|
19137
|
+
{
|
|
19138
|
+
organisationUuid: organizationId,
|
|
19139
|
+
workspaceUuid: workspaceId,
|
|
19140
|
+
authToken: accessToken
|
|
19141
|
+
},
|
|
19142
|
+
principalUuid
|
|
19143
|
+
);
|
|
19144
|
+
if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
|
|
19145
|
+
throw new Error("select-principal returned no tokens");
|
|
19146
|
+
}
|
|
19147
|
+
const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
|
|
19148
|
+
setPinnedOrgUserId(pinned);
|
|
19149
|
+
setPhase("resolved");
|
|
19150
|
+
updateTokens(res.token, res.refresh_token);
|
|
19151
|
+
} catch (error) {
|
|
19152
|
+
setSelectError(
|
|
19153
|
+
error instanceof Error ? error.message : "Failed to switch profile"
|
|
19154
|
+
);
|
|
19155
|
+
} finally {
|
|
19156
|
+
setBusyUuid(null);
|
|
19157
|
+
}
|
|
19158
|
+
},
|
|
19159
|
+
[accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
|
|
19160
|
+
);
|
|
19161
|
+
const canSwitch = candidates.length > 1;
|
|
19162
|
+
const switchProfile = (0, import_react36.useCallback)(() => {
|
|
19163
|
+
if (!canSwitch) return;
|
|
19164
|
+
setSelectError(null);
|
|
19165
|
+
setPhase("picking");
|
|
19166
|
+
}, [canSwitch]);
|
|
19167
|
+
if (phase === "checking" || phase === "picking") {
|
|
19168
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19169
|
+
import_react_native51.View,
|
|
19170
|
+
{
|
|
19171
|
+
style: [
|
|
19172
|
+
styles40.screen,
|
|
19173
|
+
{
|
|
19174
|
+
backgroundColor: colors.canvasSubtle,
|
|
19175
|
+
paddingTop: insets.top,
|
|
19176
|
+
paddingBottom: insets.bottom
|
|
19177
|
+
}
|
|
19178
|
+
],
|
|
19179
|
+
children: phase === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19180
|
+
SelectUser,
|
|
19181
|
+
{
|
|
19182
|
+
candidates,
|
|
19183
|
+
onSelect: handleSelect,
|
|
19184
|
+
busyUuid,
|
|
19185
|
+
error: selectError
|
|
19186
|
+
}
|
|
19187
|
+
)
|
|
19188
|
+
}
|
|
19189
|
+
);
|
|
19190
|
+
}
|
|
19191
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
|
|
18391
19192
|
}
|
|
19193
|
+
var styles40 = import_react_native51.StyleSheet.create({
|
|
19194
|
+
screen: { flex: 1 }
|
|
19195
|
+
});
|
|
18392
19196
|
|
|
18393
19197
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
18394
|
-
var
|
|
18395
|
-
var
|
|
18396
|
-
var
|
|
19198
|
+
var import_react41 = require("react");
|
|
19199
|
+
var import_react_native59 = require("react-native");
|
|
19200
|
+
var import_react_i18next28 = require("react-i18next");
|
|
18397
19201
|
|
|
18398
19202
|
// src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
|
|
18399
|
-
var
|
|
18400
|
-
var
|
|
18401
|
-
var
|
|
19203
|
+
var import_react_native52 = require("react-native");
|
|
19204
|
+
var import_react_i18next23 = require("react-i18next");
|
|
19205
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
18402
19206
|
function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
18403
|
-
const { t } = (0,
|
|
19207
|
+
const { t } = (0, import_react_i18next23.useTranslation)();
|
|
18404
19208
|
const { colors } = useTheme();
|
|
18405
19209
|
const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
|
|
18406
19210
|
const details = selectedCase.request_details;
|
|
@@ -18432,36 +19236,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18432
19236
|
}
|
|
18433
19237
|
const description = selectedCase.description_display || selectedCase.description;
|
|
18434
19238
|
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,
|
|
19239
|
+
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: [
|
|
19240
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.timeline, children: steps.map((step, i) => {
|
|
18437
19241
|
const isLast = i === steps.length - 1;
|
|
18438
|
-
return /* @__PURE__ */ (0,
|
|
18439
|
-
/* @__PURE__ */ (0,
|
|
18440
|
-
/* @__PURE__ */ (0,
|
|
18441
|
-
|
|
19242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.stepRow, children: [
|
|
19243
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.gutter, children: [
|
|
19244
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
19245
|
+
import_react_native52.View,
|
|
18442
19246
|
{
|
|
18443
19247
|
style: [
|
|
18444
|
-
|
|
19248
|
+
styles41.dot,
|
|
18445
19249
|
step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
|
|
18446
19250
|
],
|
|
18447
|
-
children: step.state === "done" ? /* @__PURE__ */ (0,
|
|
19251
|
+
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
19252
|
}
|
|
18449
19253
|
),
|
|
18450
|
-
!isLast ? /* @__PURE__ */ (0,
|
|
19254
|
+
!isLast ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
|
|
18451
19255
|
] }),
|
|
18452
|
-
/* @__PURE__ */ (0,
|
|
18453
|
-
/* @__PURE__ */ (0,
|
|
18454
|
-
step.date ? /* @__PURE__ */ (0,
|
|
19256
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
|
|
19257
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
|
|
19258
|
+
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
19259
|
] })
|
|
18456
19260
|
] }, `${step.label}-${i}`);
|
|
18457
19261
|
}) }),
|
|
18458
|
-
hasDetails ? /* @__PURE__ */ (0,
|
|
18459
|
-
description ? /* @__PURE__ */ (0,
|
|
18460
|
-
/* @__PURE__ */ (0,
|
|
18461
|
-
/* @__PURE__ */ (0,
|
|
19262
|
+
hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
19263
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19264
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
|
|
19265
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.descriptionText, { color: colors.text }], children: description })
|
|
18462
19266
|
] }) : null,
|
|
18463
|
-
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0,
|
|
18464
|
-
/* @__PURE__ */ (0,
|
|
19267
|
+
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19268
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
|
|
18465
19269
|
details.purposes.map((rawP, idx) => {
|
|
18466
19270
|
const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
|
|
18467
19271
|
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 +19273,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18469
19273
|
const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
|
|
18470
19274
|
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
19275
|
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,
|
|
19276
|
+
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: [
|
|
19277
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
|
|
19278
|
+
purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
|
|
19279
|
+
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
19280
|
dataElementUuids.length,
|
|
18477
19281
|
" ",
|
|
18478
19282
|
t("dataElements") || "data elements"
|
|
@@ -18480,44 +19284,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18480
19284
|
] }, purposeId);
|
|
18481
19285
|
})
|
|
18482
19286
|
] }) : 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,
|
|
19287
|
+
(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: [
|
|
19288
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
|
|
19289
|
+
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: [
|
|
19290
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
|
|
19291
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValues, children: [
|
|
19292
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19293
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
|
|
19294
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
|
|
18491
19295
|
] }),
|
|
18492
|
-
/* @__PURE__ */ (0,
|
|
18493
|
-
/* @__PURE__ */ (0,
|
|
18494
|
-
/* @__PURE__ */ (0,
|
|
18495
|
-
/* @__PURE__ */ (0,
|
|
19296
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
19297
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19298
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
|
|
19299
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
|
|
18496
19300
|
] })
|
|
18497
19301
|
] })
|
|
18498
19302
|
] }, idx))
|
|
18499
19303
|
] }) : null,
|
|
18500
|
-
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0,
|
|
18501
|
-
/* @__PURE__ */ (0,
|
|
18502
|
-
/* @__PURE__ */ (0,
|
|
19304
|
+
(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: [
|
|
19305
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
|
|
19306
|
+
/* @__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
19307
|
] }) : 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,
|
|
19308
|
+
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19309
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
|
|
19310
|
+
details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19311
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
|
|
19312
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
|
|
18509
19313
|
] }) : null,
|
|
18510
|
-
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0,
|
|
18511
|
-
/* @__PURE__ */ (0,
|
|
18512
|
-
/* @__PURE__ */ (0,
|
|
19314
|
+
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19315
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
|
|
19316
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
|
|
18513
19317
|
] }) : null
|
|
18514
19318
|
] }) : null
|
|
18515
19319
|
] }) : null,
|
|
18516
|
-
/* @__PURE__ */ (0,
|
|
19320
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Footer, {}) })
|
|
18517
19321
|
] });
|
|
18518
19322
|
}
|
|
18519
19323
|
var DOT = 22;
|
|
18520
|
-
var
|
|
19324
|
+
var styles41 = import_react_native52.StyleSheet.create({
|
|
18521
19325
|
container: {
|
|
18522
19326
|
flex: 1
|
|
18523
19327
|
},
|
|
@@ -18638,51 +19442,51 @@ var styles39 = import_react_native50.StyleSheet.create({
|
|
|
18638
19442
|
});
|
|
18639
19443
|
|
|
18640
19444
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
18641
|
-
var
|
|
18642
|
-
var
|
|
18643
|
-
var
|
|
19445
|
+
var import_react40 = require("react");
|
|
19446
|
+
var import_react_native58 = require("react-native");
|
|
19447
|
+
var import_react_i18next27 = require("react-i18next");
|
|
18644
19448
|
|
|
18645
19449
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18646
|
-
var
|
|
18647
|
-
var
|
|
19450
|
+
var import_react38 = __toESM(require("react"));
|
|
19451
|
+
var import_react_i18next25 = require("react-i18next");
|
|
18648
19452
|
|
|
18649
19453
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18650
|
-
var
|
|
18651
|
-
var
|
|
19454
|
+
var import_react37 = __toESM(require("react"));
|
|
19455
|
+
var import_react_native54 = require("react-native");
|
|
18652
19456
|
|
|
18653
19457
|
// src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
|
|
18654
|
-
var
|
|
18655
|
-
var
|
|
19458
|
+
var import_react_native53 = require("react-native");
|
|
19459
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
18656
19460
|
function AttachmentCard({ doc }) {
|
|
18657
19461
|
const { colors } = useTheme();
|
|
18658
19462
|
const downloadUrl = getDownloadUrl(doc.file_url);
|
|
18659
19463
|
const handlePress = () => {
|
|
18660
19464
|
if (downloadUrl) {
|
|
18661
|
-
|
|
19465
|
+
import_react_native53.Linking.openURL(downloadUrl);
|
|
18662
19466
|
}
|
|
18663
19467
|
};
|
|
18664
|
-
return /* @__PURE__ */ (0,
|
|
18665
|
-
|
|
19468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
19469
|
+
import_react_native53.TouchableOpacity,
|
|
18666
19470
|
{
|
|
18667
|
-
style: [
|
|
19471
|
+
style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
|
|
18668
19472
|
onPress: handlePress,
|
|
18669
19473
|
disabled: !downloadUrl,
|
|
18670
19474
|
activeOpacity: 0.7,
|
|
18671
19475
|
children: [
|
|
18672
|
-
/* @__PURE__ */ (0,
|
|
18673
|
-
/* @__PURE__ */ (0,
|
|
18674
|
-
/* @__PURE__ */ (0,
|
|
18675
|
-
doc.file_size ? /* @__PURE__ */ (0,
|
|
19476
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
|
|
19477
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react_native53.View, { style: styles42.info, children: [
|
|
19478
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
|
|
19479
|
+
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
19480
|
] })
|
|
18677
19481
|
]
|
|
18678
19482
|
}
|
|
18679
19483
|
);
|
|
18680
19484
|
}
|
|
18681
|
-
var
|
|
19485
|
+
var styles42 = import_react_native53.StyleSheet.create({
|
|
18682
19486
|
container: {
|
|
18683
19487
|
flexDirection: "row",
|
|
18684
19488
|
alignItems: "center",
|
|
18685
|
-
borderWidth:
|
|
19489
|
+
borderWidth: import_react_native53.StyleSheet.hairlineWidth,
|
|
18686
19490
|
borderRadius: radii.md,
|
|
18687
19491
|
paddingHorizontal: spacing.sm + 2,
|
|
18688
19492
|
paddingVertical: spacing.sm,
|
|
@@ -18702,11 +19506,11 @@ var styles40 = import_react_native51.StyleSheet.create({
|
|
|
18702
19506
|
});
|
|
18703
19507
|
|
|
18704
19508
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18705
|
-
var
|
|
19509
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
18706
19510
|
var AVATAR_SIZE = 28;
|
|
18707
19511
|
var AVATAR_GUTTER = 36;
|
|
18708
19512
|
function TeamAvatar({ tint }) {
|
|
18709
|
-
return /* @__PURE__ */ (0,
|
|
19513
|
+
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
19514
|
}
|
|
18711
19515
|
function ChatBubbleImpl({
|
|
18712
19516
|
message,
|
|
@@ -18733,28 +19537,28 @@ function ChatBubbleImpl({
|
|
|
18733
19537
|
borderBottomRightRadius: BUBBLE_RADIUS,
|
|
18734
19538
|
borderBottomLeftRadius: tailRadius
|
|
18735
19539
|
};
|
|
18736
|
-
const bubble = /* @__PURE__ */ (0,
|
|
18737
|
-
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0,
|
|
18738
|
-
message.body ? /* @__PURE__ */ (0,
|
|
18739
|
-
message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0,
|
|
19540
|
+
const bubble = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.bubble, bubbleStyle], children: [
|
|
19541
|
+
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
|
|
19542
|
+
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,
|
|
19543
|
+
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
19544
|
] });
|
|
18741
|
-
return /* @__PURE__ */ (0,
|
|
18742
|
-
|
|
19545
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
19546
|
+
import_react_native54.View,
|
|
18743
19547
|
{
|
|
18744
19548
|
style: [
|
|
18745
|
-
|
|
18746
|
-
isPrincipal ?
|
|
19549
|
+
styles43.row,
|
|
19550
|
+
isPrincipal ? styles43.rowRight : styles43.rowLeft,
|
|
18747
19551
|
{ marginTop: isFirstInGroup ? spacing.md : 2 }
|
|
18748
19552
|
],
|
|
18749
19553
|
children: [
|
|
18750
|
-
!isPrincipal ? /* @__PURE__ */ (0,
|
|
18751
|
-
/* @__PURE__ */ (0,
|
|
19554
|
+
!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,
|
|
19555
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
|
|
18752
19556
|
bubble,
|
|
18753
|
-
isLastInGroup ? /* @__PURE__ */ (0,
|
|
18754
|
-
|
|
19557
|
+
isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
19558
|
+
import_react_native54.Text,
|
|
18755
19559
|
{
|
|
18756
19560
|
style: [
|
|
18757
|
-
|
|
19561
|
+
styles43.timestamp,
|
|
18758
19562
|
{ color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
|
|
18759
19563
|
],
|
|
18760
19564
|
children: formatMessageTime(timestamp)
|
|
@@ -18765,8 +19569,8 @@ function ChatBubbleImpl({
|
|
|
18765
19569
|
}
|
|
18766
19570
|
);
|
|
18767
19571
|
}
|
|
18768
|
-
var ChatBubble =
|
|
18769
|
-
var
|
|
19572
|
+
var ChatBubble = import_react37.default.memo(ChatBubbleImpl);
|
|
19573
|
+
var styles43 = import_react_native54.StyleSheet.create({
|
|
18770
19574
|
row: {
|
|
18771
19575
|
flexDirection: "row",
|
|
18772
19576
|
paddingHorizontal: spacing.md,
|
|
@@ -18826,9 +19630,9 @@ var styles41 = import_react_native52.StyleSheet.create({
|
|
|
18826
19630
|
});
|
|
18827
19631
|
|
|
18828
19632
|
// src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
|
|
18829
|
-
var
|
|
18830
|
-
var
|
|
18831
|
-
var
|
|
19633
|
+
var import_react_native55 = require("react-native");
|
|
19634
|
+
var import_react_i18next24 = require("react-i18next");
|
|
19635
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
18832
19636
|
var STATUS_BADGE_MAP = {
|
|
18833
19637
|
pending: "warning",
|
|
18834
19638
|
under_review: "info",
|
|
@@ -18848,20 +19652,20 @@ function humanize(value) {
|
|
|
18848
19652
|
}
|
|
18849
19653
|
function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
|
|
18850
19654
|
var _a3;
|
|
18851
|
-
const { t } = (0,
|
|
19655
|
+
const { t } = (0, import_react_i18next24.useTranslation)();
|
|
18852
19656
|
const { colors } = useTheme();
|
|
18853
19657
|
const meta = message.document_request_metadata;
|
|
18854
19658
|
if (!meta) return null;
|
|
18855
19659
|
const status = meta.document_request_status;
|
|
18856
19660
|
const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
|
|
18857
19661
|
const requestEventUuid = meta.document_request_uuid;
|
|
18858
|
-
return /* @__PURE__ */ (0,
|
|
18859
|
-
/* @__PURE__ */ (0,
|
|
18860
|
-
/* @__PURE__ */ (0,
|
|
18861
|
-
/* @__PURE__ */ (0,
|
|
18862
|
-
/* @__PURE__ */ (0,
|
|
19662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
|
|
19663
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.header, children: [
|
|
19664
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.titleRow, children: [
|
|
19665
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
|
|
19666
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
|
|
18863
19667
|
] }),
|
|
18864
|
-
/* @__PURE__ */ (0,
|
|
19668
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
18865
19669
|
PCBadge,
|
|
18866
19670
|
{
|
|
18867
19671
|
status: STATUS_BADGE_MAP[status] || "info",
|
|
@@ -18869,30 +19673,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
|
|
|
18869
19673
|
}
|
|
18870
19674
|
)
|
|
18871
19675
|
] }),
|
|
18872
|
-
meta.accepted_document ? /* @__PURE__ */ (0,
|
|
19676
|
+
meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
|
|
18873
19677
|
accepted: meta.accepted_document,
|
|
18874
19678
|
defaultValue: `Accepted: ${meta.accepted_document}`
|
|
18875
19679
|
}) }) : null,
|
|
18876
|
-
meta.rejection_reason ? /* @__PURE__ */ (0,
|
|
18877
|
-
/* @__PURE__ */ (0,
|
|
19680
|
+
meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
|
|
19681
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.Text, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
|
|
18878
19682
|
t("rejectionReasonLabel") || "Rejection reason",
|
|
18879
19683
|
":"
|
|
18880
19684
|
] }),
|
|
18881
|
-
/* @__PURE__ */ (0,
|
|
19685
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
|
|
18882
19686
|
] }) : null,
|
|
18883
|
-
canUpload && requestEventUuid ? /* @__PURE__ */ (0,
|
|
18884
|
-
|
|
19687
|
+
canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
19688
|
+
import_react_native55.TouchableOpacity,
|
|
18885
19689
|
{
|
|
18886
|
-
style: [
|
|
19690
|
+
style: [styles44.uploadButton, { backgroundColor: colors.primary }],
|
|
18887
19691
|
onPress: () => onUpload(requestEventUuid),
|
|
18888
19692
|
disabled: isSubmitting,
|
|
18889
19693
|
activeOpacity: 0.7,
|
|
18890
|
-
children: /* @__PURE__ */ (0,
|
|
19694
|
+
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
19695
|
}
|
|
18892
19696
|
) : null
|
|
18893
19697
|
] });
|
|
18894
19698
|
}
|
|
18895
|
-
var
|
|
19699
|
+
var styles44 = import_react_native55.StyleSheet.create({
|
|
18896
19700
|
container: {
|
|
18897
19701
|
borderWidth: 1.5,
|
|
18898
19702
|
borderStyle: "dashed",
|
|
@@ -18945,20 +19749,20 @@ var styles42 = import_react_native53.StyleSheet.create({
|
|
|
18945
19749
|
});
|
|
18946
19750
|
|
|
18947
19751
|
// src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
|
|
18948
|
-
var
|
|
18949
|
-
var
|
|
19752
|
+
var import_react_native56 = require("react-native");
|
|
19753
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
18950
19754
|
function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
|
|
18951
19755
|
const { colors } = useTheme();
|
|
18952
|
-
return /* @__PURE__ */ (0,
|
|
18953
|
-
/* @__PURE__ */ (0,
|
|
18954
|
-
/* @__PURE__ */ (0,
|
|
18955
|
-
/* @__PURE__ */ (0,
|
|
18956
|
-
subText ? /* @__PURE__ */ (0,
|
|
19756
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: bgColor }], children: [
|
|
19757
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.View, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
|
|
19758
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: styles45.textContainer, children: [
|
|
19759
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.text, { color }], children: text }),
|
|
19760
|
+
subText ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
|
|
18957
19761
|
] }),
|
|
18958
|
-
/* @__PURE__ */ (0,
|
|
19762
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
|
|
18959
19763
|
] });
|
|
18960
19764
|
}
|
|
18961
|
-
var
|
|
19765
|
+
var styles45 = import_react_native56.StyleSheet.create({
|
|
18962
19766
|
container: {
|
|
18963
19767
|
flexDirection: "row",
|
|
18964
19768
|
alignItems: "center",
|
|
@@ -18997,10 +19801,10 @@ var styles43 = import_react_native54.StyleSheet.create({
|
|
|
18997
19801
|
});
|
|
18998
19802
|
|
|
18999
19803
|
// 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,
|
|
19804
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
19805
|
+
var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
|
|
19806
|
+
var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
|
|
19807
|
+
var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
|
|
19004
19808
|
function MessageItemImpl({
|
|
19005
19809
|
message,
|
|
19006
19810
|
onUploadForRequest,
|
|
@@ -19010,14 +19814,14 @@ function MessageItemImpl({
|
|
|
19010
19814
|
isLastInGroup = true
|
|
19011
19815
|
}) {
|
|
19012
19816
|
var _a3, _b;
|
|
19013
|
-
const { t } = (0,
|
|
19817
|
+
const { t } = (0, import_react_i18next25.useTranslation)();
|
|
19014
19818
|
const isPrincipal = message.sender_role === "data_principal";
|
|
19015
19819
|
const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
|
|
19016
19820
|
switch (message.message_type) {
|
|
19017
19821
|
case "message_sent":
|
|
19018
19822
|
case "document_submitted":
|
|
19019
19823
|
case "document_replaced":
|
|
19020
|
-
return /* @__PURE__ */ (0,
|
|
19824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19021
19825
|
ChatBubble,
|
|
19022
19826
|
{
|
|
19023
19827
|
message,
|
|
@@ -19029,8 +19833,8 @@ function MessageItemImpl({
|
|
|
19029
19833
|
}
|
|
19030
19834
|
);
|
|
19031
19835
|
case "document_requested":
|
|
19032
|
-
return /* @__PURE__ */ (0,
|
|
19033
|
-
/* @__PURE__ */ (0,
|
|
19836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
|
|
19837
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19034
19838
|
ChatBubble,
|
|
19035
19839
|
{
|
|
19036
19840
|
message,
|
|
@@ -19041,7 +19845,7 @@ function MessageItemImpl({
|
|
|
19041
19845
|
isLastInGroup
|
|
19042
19846
|
}
|
|
19043
19847
|
),
|
|
19044
|
-
/* @__PURE__ */ (0,
|
|
19848
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19045
19849
|
DocumentRequestCard,
|
|
19046
19850
|
{
|
|
19047
19851
|
message,
|
|
@@ -19052,10 +19856,10 @@ function MessageItemImpl({
|
|
|
19052
19856
|
)
|
|
19053
19857
|
] });
|
|
19054
19858
|
case "document_approved":
|
|
19055
|
-
return /* @__PURE__ */ (0,
|
|
19859
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19056
19860
|
StatusEvent,
|
|
19057
19861
|
{
|
|
19058
|
-
icon: /* @__PURE__ */ (0,
|
|
19862
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { color: "#059669" }),
|
|
19059
19863
|
color: "#059669",
|
|
19060
19864
|
bgColor: "rgba(16, 185, 129, 0.08)",
|
|
19061
19865
|
borderColor: "rgba(16, 185, 129, 0.2)",
|
|
@@ -19064,10 +19868,10 @@ function MessageItemImpl({
|
|
|
19064
19868
|
}
|
|
19065
19869
|
);
|
|
19066
19870
|
case "document_rejected":
|
|
19067
|
-
return /* @__PURE__ */ (0,
|
|
19871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19068
19872
|
StatusEvent,
|
|
19069
19873
|
{
|
|
19070
|
-
icon: /* @__PURE__ */ (0,
|
|
19874
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(XIcon, { color: "#DC2626" }),
|
|
19071
19875
|
color: "#DC2626",
|
|
19072
19876
|
bgColor: "rgba(220, 38, 38, 0.08)",
|
|
19073
19877
|
borderColor: "rgba(220, 38, 38, 0.2)",
|
|
@@ -19077,10 +19881,10 @@ function MessageItemImpl({
|
|
|
19077
19881
|
}
|
|
19078
19882
|
);
|
|
19079
19883
|
case "document_replacement_requested":
|
|
19080
|
-
return /* @__PURE__ */ (0,
|
|
19884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19081
19885
|
StatusEvent,
|
|
19082
19886
|
{
|
|
19083
|
-
icon: /* @__PURE__ */ (0,
|
|
19887
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RefreshIcon, { color: "#D97706" }),
|
|
19084
19888
|
color: "#D97706",
|
|
19085
19889
|
bgColor: "rgba(245, 158, 11, 0.08)",
|
|
19086
19890
|
borderColor: "rgba(245, 158, 11, 0.2)",
|
|
@@ -19090,7 +19894,7 @@ function MessageItemImpl({
|
|
|
19090
19894
|
}
|
|
19091
19895
|
);
|
|
19092
19896
|
default:
|
|
19093
|
-
return /* @__PURE__ */ (0,
|
|
19897
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19094
19898
|
ChatBubble,
|
|
19095
19899
|
{
|
|
19096
19900
|
message,
|
|
@@ -19103,13 +19907,13 @@ function MessageItemImpl({
|
|
|
19103
19907
|
);
|
|
19104
19908
|
}
|
|
19105
19909
|
}
|
|
19106
|
-
var MessageItem =
|
|
19910
|
+
var MessageItem = import_react38.default.memo(MessageItemImpl);
|
|
19107
19911
|
|
|
19108
19912
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
|
|
19109
|
-
var
|
|
19110
|
-
var
|
|
19111
|
-
var
|
|
19112
|
-
var
|
|
19913
|
+
var import_react39 = require("react");
|
|
19914
|
+
var import_react_native57 = require("react-native");
|
|
19915
|
+
var import_react_i18next26 = require("react-i18next");
|
|
19916
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
19113
19917
|
function MessageComposer({
|
|
19114
19918
|
messageText,
|
|
19115
19919
|
onMessageTextChange,
|
|
@@ -19121,15 +19925,15 @@ function MessageComposer({
|
|
|
19121
19925
|
isUploading,
|
|
19122
19926
|
isCaseFinalized = false
|
|
19123
19927
|
}) {
|
|
19124
|
-
const { t } = (0,
|
|
19928
|
+
const { t } = (0, import_react_i18next26.useTranslation)();
|
|
19125
19929
|
const { colors } = useTheme();
|
|
19126
19930
|
const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
|
|
19127
|
-
const activate = (0,
|
|
19128
|
-
(0,
|
|
19129
|
-
|
|
19931
|
+
const activate = (0, import_react39.useRef)(new import_react_native57.Animated.Value(canSend ? 1 : 0)).current;
|
|
19932
|
+
(0, import_react39.useEffect)(() => {
|
|
19933
|
+
import_react_native57.Animated.timing(activate, {
|
|
19130
19934
|
toValue: canSend ? 1 : 0,
|
|
19131
19935
|
duration: 180,
|
|
19132
|
-
easing:
|
|
19936
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.quad),
|
|
19133
19937
|
useNativeDriver: false
|
|
19134
19938
|
}).start();
|
|
19135
19939
|
}, [canSend, activate]);
|
|
@@ -19137,30 +19941,30 @@ function MessageComposer({
|
|
|
19137
19941
|
inputRange: [0, 1],
|
|
19138
19942
|
outputRange: [colors.border, colors.primary]
|
|
19139
19943
|
});
|
|
19140
|
-
const pressScale = (0,
|
|
19944
|
+
const pressScale = (0, import_react39.useRef)(new import_react_native57.Animated.Value(1)).current;
|
|
19141
19945
|
const handlePressIn = () => {
|
|
19142
|
-
|
|
19946
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
|
|
19143
19947
|
};
|
|
19144
19948
|
const handlePressOut = () => {
|
|
19145
|
-
|
|
19949
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
|
|
19146
19950
|
};
|
|
19147
|
-
const pillIn = (0,
|
|
19148
|
-
(0,
|
|
19149
|
-
|
|
19951
|
+
const pillIn = (0, import_react39.useRef)(new import_react_native57.Animated.Value(0)).current;
|
|
19952
|
+
(0, import_react39.useEffect)(() => {
|
|
19953
|
+
import_react_native57.Animated.timing(pillIn, {
|
|
19150
19954
|
toValue: pendingUpload ? 1 : 0,
|
|
19151
19955
|
duration: 220,
|
|
19152
|
-
easing:
|
|
19956
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.cubic),
|
|
19153
19957
|
useNativeDriver: true
|
|
19154
19958
|
}).start();
|
|
19155
19959
|
}, [pendingUpload, pillIn]);
|
|
19156
19960
|
const pillOpacity = pillIn;
|
|
19157
19961
|
const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
|
|
19158
|
-
return /* @__PURE__ */ (0,
|
|
19159
|
-
pendingUpload && /* @__PURE__ */ (0,
|
|
19160
|
-
|
|
19962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
|
|
19963
|
+
pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
19964
|
+
import_react_native57.Animated.View,
|
|
19161
19965
|
{
|
|
19162
19966
|
style: [
|
|
19163
|
-
|
|
19967
|
+
styles46.uploadPill,
|
|
19164
19968
|
{
|
|
19165
19969
|
backgroundColor: colors.primarySoft,
|
|
19166
19970
|
opacity: pillOpacity,
|
|
@@ -19168,34 +19972,34 @@ function MessageComposer({
|
|
|
19168
19972
|
}
|
|
19169
19973
|
],
|
|
19170
19974
|
children: [
|
|
19171
|
-
/* @__PURE__ */ (0,
|
|
19172
|
-
/* @__PURE__ */ (0,
|
|
19975
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
|
|
19976
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.Text, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
|
|
19173
19977
|
pendingUpload.file_name,
|
|
19174
19978
|
" (",
|
|
19175
19979
|
formatFileSize(pendingUpload.file_size),
|
|
19176
19980
|
")"
|
|
19177
19981
|
] }),
|
|
19178
|
-
/* @__PURE__ */ (0,
|
|
19982
|
+
/* @__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
19983
|
]
|
|
19180
19984
|
}
|
|
19181
19985
|
),
|
|
19182
|
-
/* @__PURE__ */ (0,
|
|
19183
|
-
/* @__PURE__ */ (0,
|
|
19184
|
-
|
|
19986
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
|
|
19987
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19988
|
+
import_react_native57.TouchableOpacity,
|
|
19185
19989
|
{
|
|
19186
|
-
style:
|
|
19990
|
+
style: styles46.attachButton,
|
|
19187
19991
|
onPress: onAttachClick,
|
|
19188
19992
|
disabled: isUploading || isCaseFinalized,
|
|
19189
19993
|
activeOpacity: 0.6,
|
|
19190
19994
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
19191
19995
|
accessibilityLabel: t("uploadFile") || "Attach file",
|
|
19192
|
-
children: isUploading ? /* @__PURE__ */ (0,
|
|
19996
|
+
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
19997
|
}
|
|
19194
19998
|
),
|
|
19195
|
-
/* @__PURE__ */ (0,
|
|
19196
|
-
|
|
19999
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
20000
|
+
import_react_native57.TextInput,
|
|
19197
20001
|
{
|
|
19198
|
-
style: [
|
|
20002
|
+
style: [styles46.input, { color: colors.text }],
|
|
19199
20003
|
value: messageText,
|
|
19200
20004
|
onChangeText: onMessageTextChange,
|
|
19201
20005
|
placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
|
|
@@ -19205,8 +20009,8 @@ function MessageComposer({
|
|
|
19205
20009
|
editable: !isSending && !isCaseFinalized
|
|
19206
20010
|
}
|
|
19207
20011
|
),
|
|
19208
|
-
/* @__PURE__ */ (0,
|
|
19209
|
-
|
|
20012
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
20013
|
+
import_react_native57.TouchableOpacity,
|
|
19210
20014
|
{
|
|
19211
20015
|
onPress: onSend,
|
|
19212
20016
|
onPressIn: handlePressIn,
|
|
@@ -19214,15 +20018,15 @@ function MessageComposer({
|
|
|
19214
20018
|
disabled: !canSend,
|
|
19215
20019
|
activeOpacity: 0.85,
|
|
19216
20020
|
accessibilityLabel: t("send") || "Send",
|
|
19217
|
-
children: /* @__PURE__ */ (0,
|
|
20021
|
+
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
20022
|
}
|
|
19219
20023
|
) })
|
|
19220
20024
|
] })
|
|
19221
20025
|
] });
|
|
19222
20026
|
}
|
|
19223
|
-
var
|
|
20027
|
+
var styles46 = import_react_native57.StyleSheet.create({
|
|
19224
20028
|
container: {
|
|
19225
|
-
borderTopWidth:
|
|
20029
|
+
borderTopWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19226
20030
|
paddingHorizontal: spacing.md,
|
|
19227
20031
|
paddingVertical: spacing.sm
|
|
19228
20032
|
},
|
|
@@ -19245,7 +20049,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19245
20049
|
pill: {
|
|
19246
20050
|
flexDirection: "row",
|
|
19247
20051
|
alignItems: "center",
|
|
19248
|
-
borderWidth:
|
|
20052
|
+
borderWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19249
20053
|
borderRadius: radii.xxl + 4,
|
|
19250
20054
|
paddingHorizontal: spacing.xs + 2,
|
|
19251
20055
|
paddingVertical: spacing.xs,
|
|
@@ -19284,7 +20088,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19284
20088
|
});
|
|
19285
20089
|
|
|
19286
20090
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
19287
|
-
var
|
|
20091
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
19288
20092
|
var STREAK_GAP_MS = 5 * 60 * 1e3;
|
|
19289
20093
|
function isStreakBoundary(a, b) {
|
|
19290
20094
|
if (!a || !b) return true;
|
|
@@ -19314,11 +20118,11 @@ function sameDay(a, b) {
|
|
|
19314
20118
|
}
|
|
19315
20119
|
var MESSAGE_POLL_INTERVAL = 3e4;
|
|
19316
20120
|
function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
19317
|
-
const { t } = (0,
|
|
20121
|
+
const { t } = (0, import_react_i18next27.useTranslation)();
|
|
19318
20122
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19319
20123
|
const { consentClient } = useBaseUrl();
|
|
19320
20124
|
const { colors } = useTheme();
|
|
19321
|
-
const authContext = (0,
|
|
20125
|
+
const authContext = (0, import_react40.useMemo)(() => ({
|
|
19322
20126
|
accessToken,
|
|
19323
20127
|
refreshToken,
|
|
19324
20128
|
onError,
|
|
@@ -19330,13 +20134,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19330
20134
|
caseUuid,
|
|
19331
20135
|
authContext
|
|
19332
20136
|
);
|
|
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,
|
|
20137
|
+
const [messageText, setMessageText] = (0, import_react40.useState)("");
|
|
20138
|
+
const [pendingUpload, setPendingUpload] = (0, import_react40.useState)(null);
|
|
20139
|
+
const [isSending, setIsSending] = (0, import_react40.useState)(false);
|
|
20140
|
+
const [isUploading, setIsUploading] = (0, import_react40.useState)(false);
|
|
20141
|
+
const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react40.useState)(false);
|
|
20142
|
+
const flatListRef = (0, import_react40.useRef)(null);
|
|
20143
|
+
(0, import_react40.useEffect)(() => {
|
|
19340
20144
|
if (messages && messages.length > 0) {
|
|
19341
20145
|
setTimeout(() => {
|
|
19342
20146
|
var _a3;
|
|
@@ -19344,16 +20148,19 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19344
20148
|
}, 100);
|
|
19345
20149
|
}
|
|
19346
20150
|
}, [messages == null ? void 0 : messages.length]);
|
|
19347
|
-
const refetchRef = (0,
|
|
20151
|
+
const refetchRef = (0, import_react40.useRef)(refetch);
|
|
19348
20152
|
refetchRef.current = refetch;
|
|
19349
|
-
(0,
|
|
20153
|
+
const authContextRef = (0, import_react40.useRef)(authContext);
|
|
20154
|
+
authContextRef.current = authContext;
|
|
20155
|
+
(0, import_react40.useEffect)(() => {
|
|
19350
20156
|
if (isCaseFinalized) return;
|
|
19351
20157
|
const id = setInterval(() => {
|
|
20158
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
19352
20159
|
refetchRef.current();
|
|
19353
20160
|
}, MESSAGE_POLL_INTERVAL);
|
|
19354
20161
|
return () => clearInterval(id);
|
|
19355
20162
|
}, [isCaseFinalized]);
|
|
19356
|
-
const handleSend = (0,
|
|
20163
|
+
const handleSend = (0, import_react40.useCallback)(async () => {
|
|
19357
20164
|
if (isCaseFinalized) return;
|
|
19358
20165
|
if (!messageText.trim() && !pendingUpload) return;
|
|
19359
20166
|
if (!organizationId || !workspaceId) return;
|
|
@@ -19378,7 +20185,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19378
20185
|
setIsSending(false);
|
|
19379
20186
|
}
|
|
19380
20187
|
}, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
|
|
19381
|
-
const handleAttach = (0,
|
|
20188
|
+
const handleAttach = (0, import_react40.useCallback)(async () => {
|
|
19382
20189
|
if (isCaseFinalized) return;
|
|
19383
20190
|
if (!organizationId || !workspaceId) return;
|
|
19384
20191
|
try {
|
|
@@ -19413,10 +20220,10 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19413
20220
|
setIsUploading(false);
|
|
19414
20221
|
}
|
|
19415
20222
|
}, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
|
|
19416
|
-
const handleUploadForRequest = (0,
|
|
20223
|
+
const handleUploadForRequest = (0, import_react40.useCallback)((_requestEventUuid) => {
|
|
19417
20224
|
handleAttach();
|
|
19418
20225
|
}, [handleAttach]);
|
|
19419
|
-
const messagesList = (0,
|
|
20226
|
+
const messagesList = (0, import_react40.useMemo)(() => {
|
|
19420
20227
|
const list = messages ? [...messages] : [];
|
|
19421
20228
|
list.sort((a, b) => {
|
|
19422
20229
|
const ta = new Date(a.created_at).getTime();
|
|
@@ -19425,17 +20232,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19425
20232
|
});
|
|
19426
20233
|
return list;
|
|
19427
20234
|
}, [messages]);
|
|
19428
|
-
const keyExtractor = (0,
|
|
19429
|
-
const renderMessage = (0,
|
|
20235
|
+
const keyExtractor = (0, import_react40.useCallback)((item) => item.uuid, []);
|
|
20236
|
+
const renderMessage = (0, import_react40.useCallback)(
|
|
19430
20237
|
({ item, index }) => {
|
|
19431
20238
|
const prev = index > 0 ? messagesList[index - 1] : void 0;
|
|
19432
20239
|
const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
|
|
19433
20240
|
const isFirstInGroup = isStreakBoundary(prev, item);
|
|
19434
20241
|
const isLastInGroup = isStreakBoundary(item, next);
|
|
19435
20242
|
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,
|
|
20243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
20244
|
+
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,
|
|
20245
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19439
20246
|
MessageItem,
|
|
19440
20247
|
{
|
|
19441
20248
|
message: item,
|
|
@@ -19451,32 +20258,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19451
20258
|
[messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
|
|
19452
20259
|
);
|
|
19453
20260
|
if (isLoading) {
|
|
19454
|
-
return /* @__PURE__ */ (0,
|
|
20261
|
+
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
20262
|
}
|
|
19456
20263
|
if (error) {
|
|
19457
|
-
return /* @__PURE__ */ (0,
|
|
20264
|
+
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
20265
|
}
|
|
19459
|
-
return /* @__PURE__ */ (0,
|
|
19460
|
-
/* @__PURE__ */ (0,
|
|
19461
|
-
/* @__PURE__ */ (0,
|
|
19462
|
-
/* @__PURE__ */ (0,
|
|
20266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
20267
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.secureRow, children: [
|
|
20268
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
20269
|
+
/* @__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
20270
|
] }),
|
|
19464
|
-
/* @__PURE__ */ (0,
|
|
19465
|
-
|
|
20271
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
20272
|
+
import_react_native58.FlatList,
|
|
19466
20273
|
{
|
|
19467
20274
|
ref: flatListRef,
|
|
19468
|
-
style:
|
|
20275
|
+
style: styles47.list,
|
|
19469
20276
|
data: messagesList,
|
|
19470
20277
|
keyExtractor,
|
|
19471
20278
|
renderItem: renderMessage,
|
|
19472
20279
|
contentContainerStyle: [
|
|
19473
|
-
|
|
19474
|
-
messagesList.length ?
|
|
20280
|
+
styles47.messagesList,
|
|
20281
|
+
messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
|
|
19475
20282
|
],
|
|
19476
|
-
ListEmptyComponent: /* @__PURE__ */ (0,
|
|
19477
|
-
/* @__PURE__ */ (0,
|
|
19478
|
-
/* @__PURE__ */ (0,
|
|
19479
|
-
/* @__PURE__ */ (0,
|
|
20283
|
+
ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.emptyContainer, children: [
|
|
20284
|
+
/* @__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 }) }),
|
|
20285
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
|
|
20286
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
|
|
19480
20287
|
] }),
|
|
19481
20288
|
onContentSizeChange: () => {
|
|
19482
20289
|
var _a3;
|
|
@@ -19488,7 +20295,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19488
20295
|
removeClippedSubviews: true
|
|
19489
20296
|
}
|
|
19490
20297
|
),
|
|
19491
|
-
/* @__PURE__ */ (0,
|
|
20298
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19492
20299
|
MessageComposer,
|
|
19493
20300
|
{
|
|
19494
20301
|
messageText,
|
|
@@ -19504,7 +20311,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19504
20311
|
)
|
|
19505
20312
|
] });
|
|
19506
20313
|
}
|
|
19507
|
-
var
|
|
20314
|
+
var styles47 = import_react_native58.StyleSheet.create({
|
|
19508
20315
|
container: {
|
|
19509
20316
|
flex: 1
|
|
19510
20317
|
},
|
|
@@ -19587,17 +20394,17 @@ var styles45 = import_react_native56.StyleSheet.create({
|
|
|
19587
20394
|
});
|
|
19588
20395
|
|
|
19589
20396
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
19590
|
-
var
|
|
20397
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
19591
20398
|
function CaseDetailsPage() {
|
|
19592
20399
|
var _a3, _b;
|
|
19593
|
-
const { t } = (0,
|
|
20400
|
+
const { t } = (0, import_react_i18next28.useTranslation)();
|
|
19594
20401
|
const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
|
|
19595
20402
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19596
20403
|
const { colors } = useTheme();
|
|
19597
20404
|
const { keyboardOffset } = usePrivacyCenterInsets();
|
|
19598
20405
|
const requestTypeLabels = useRequestTypeLabels();
|
|
19599
|
-
const [activeTab, setActiveTab] = (0,
|
|
19600
|
-
const authContext = (0,
|
|
20406
|
+
const [activeTab, setActiveTab] = (0, import_react41.useState)("request-details");
|
|
20407
|
+
const authContext = (0, import_react41.useMemo)(() => ({
|
|
19601
20408
|
accessToken,
|
|
19602
20409
|
refreshToken,
|
|
19603
20410
|
onError,
|
|
@@ -19610,7 +20417,7 @@ function CaseDetailsPage() {
|
|
|
19610
20417
|
email != null ? email : void 0,
|
|
19611
20418
|
authContext
|
|
19612
20419
|
);
|
|
19613
|
-
(0,
|
|
20420
|
+
(0, import_react41.useEffect)(() => {
|
|
19614
20421
|
if (!cases) return;
|
|
19615
20422
|
if (cases.length === 0) {
|
|
19616
20423
|
navigateTo("form");
|
|
@@ -19624,33 +20431,33 @@ function CaseDetailsPage() {
|
|
|
19624
20431
|
navigateTo("form");
|
|
19625
20432
|
}
|
|
19626
20433
|
}, [cases, targetUuid, setSelectedCase, navigateTo]);
|
|
19627
|
-
(0,
|
|
20434
|
+
(0, import_react41.useEffect)(() => {
|
|
19628
20435
|
if (!selectedCase && !targetUuid && !isLoading) {
|
|
19629
20436
|
navigateTo("form");
|
|
19630
20437
|
}
|
|
19631
20438
|
}, [selectedCase, targetUuid, isLoading, navigateTo]);
|
|
19632
20439
|
if (!selectedCase) {
|
|
19633
|
-
return /* @__PURE__ */ (0,
|
|
20440
|
+
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
20441
|
}
|
|
19635
20442
|
const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
|
|
19636
20443
|
const tabs = [
|
|
19637
20444
|
{ id: "request-details", label: t("requestDetails") || "Request Details" },
|
|
19638
20445
|
{ id: "messages", label: t("messages") || "Messages" }
|
|
19639
20446
|
];
|
|
19640
|
-
return /* @__PURE__ */ (0,
|
|
20447
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
19641
20448
|
KeyboardAvoidingViewCompat,
|
|
19642
20449
|
{
|
|
19643
|
-
style: [
|
|
20450
|
+
style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
|
|
19644
20451
|
behavior: "padding",
|
|
19645
|
-
keyboardVerticalOffset:
|
|
20452
|
+
keyboardVerticalOffset: import_react_native59.Platform.OS === "ios" ? keyboardOffset : 0,
|
|
19646
20453
|
children: [
|
|
19647
|
-
/* @__PURE__ */ (0,
|
|
19648
|
-
/* @__PURE__ */ (0,
|
|
19649
|
-
/* @__PURE__ */ (0,
|
|
19650
|
-
/* @__PURE__ */ (0,
|
|
19651
|
-
/* @__PURE__ */ (0,
|
|
19652
|
-
/* @__PURE__ */ (0,
|
|
19653
|
-
/* @__PURE__ */ (0,
|
|
20454
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.headerWrap, children: [
|
|
20455
|
+
/* @__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: [
|
|
20456
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
|
|
20457
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroBody, children: [
|
|
20458
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroTopRow, children: [
|
|
20459
|
+
/* @__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 }) }),
|
|
20460
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19654
20461
|
PCBadge,
|
|
19655
20462
|
{
|
|
19656
20463
|
status: getCaseStatusVariant(selectedCase.status),
|
|
@@ -19659,10 +20466,10 @@ function CaseDetailsPage() {
|
|
|
19659
20466
|
}
|
|
19660
20467
|
)
|
|
19661
20468
|
] }),
|
|
19662
|
-
/* @__PURE__ */ (0,
|
|
20469
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
|
|
19663
20470
|
] })
|
|
19664
20471
|
] }) }),
|
|
19665
|
-
/* @__PURE__ */ (0,
|
|
20472
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19666
20473
|
Segmented,
|
|
19667
20474
|
{
|
|
19668
20475
|
options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
|
|
@@ -19671,18 +20478,18 @@ function CaseDetailsPage() {
|
|
|
19671
20478
|
}
|
|
19672
20479
|
)
|
|
19673
20480
|
] }),
|
|
19674
|
-
/* @__PURE__ */ (0,
|
|
20481
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19675
20482
|
RequestDetailsTab,
|
|
19676
20483
|
{
|
|
19677
20484
|
selectedCase,
|
|
19678
20485
|
requestTypeLabel
|
|
19679
20486
|
}
|
|
19680
|
-
) : /* @__PURE__ */ (0,
|
|
20487
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
|
|
19681
20488
|
]
|
|
19682
20489
|
}
|
|
19683
20490
|
);
|
|
19684
20491
|
}
|
|
19685
|
-
var
|
|
20492
|
+
var styles48 = import_react_native59.StyleSheet.create({
|
|
19686
20493
|
container: {
|
|
19687
20494
|
flex: 1
|
|
19688
20495
|
},
|
|
@@ -19747,36 +20554,36 @@ var styles46 = import_react_native57.StyleSheet.create({
|
|
|
19747
20554
|
});
|
|
19748
20555
|
|
|
19749
20556
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
19750
|
-
var
|
|
19751
|
-
var
|
|
19752
|
-
var
|
|
20557
|
+
var import_react44 = require("react");
|
|
20558
|
+
var import_react_native65 = require("react-native");
|
|
20559
|
+
var import_react_i18next30 = require("react-i18next");
|
|
19753
20560
|
|
|
19754
20561
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19755
|
-
var
|
|
19756
|
-
var
|
|
20562
|
+
var import_react_native63 = require("react-native");
|
|
20563
|
+
var import_react_i18next29 = require("react-i18next");
|
|
19757
20564
|
|
|
19758
20565
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
|
|
19759
|
-
var
|
|
19760
|
-
var
|
|
20566
|
+
var import_react_native60 = require("react-native");
|
|
20567
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
19761
20568
|
var NotificationCTAButton = ({ cta, onPress }) => {
|
|
19762
20569
|
const { colors } = useTheme();
|
|
19763
20570
|
const tone = cta.style === "danger" ? colors.error : colors.primary;
|
|
19764
20571
|
const isPrimary = cta.style === "primary" || cta.style === "danger";
|
|
19765
|
-
return /* @__PURE__ */ (0,
|
|
19766
|
-
|
|
20572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
20573
|
+
import_react_native60.TouchableOpacity,
|
|
19767
20574
|
{
|
|
19768
20575
|
onPress,
|
|
19769
20576
|
activeOpacity: 0.7,
|
|
19770
20577
|
style: [
|
|
19771
|
-
|
|
20578
|
+
styles49.button,
|
|
19772
20579
|
isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
|
|
19773
20580
|
],
|
|
19774
20581
|
accessibilityRole: "button",
|
|
19775
|
-
children: /* @__PURE__ */ (0,
|
|
20582
|
+
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
20583
|
}
|
|
19777
20584
|
);
|
|
19778
20585
|
};
|
|
19779
|
-
var
|
|
20586
|
+
var styles49 = import_react_native60.StyleSheet.create({
|
|
19780
20587
|
button: {
|
|
19781
20588
|
paddingHorizontal: spacing.lg,
|
|
19782
20589
|
paddingVertical: spacing.sm,
|
|
@@ -19791,8 +20598,8 @@ var styles47 = import_react_native58.StyleSheet.create({
|
|
|
19791
20598
|
});
|
|
19792
20599
|
|
|
19793
20600
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
|
|
19794
|
-
var
|
|
19795
|
-
var
|
|
20601
|
+
var import_react_native61 = require("react-native");
|
|
20602
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
19796
20603
|
var CATEGORY_ICON = {
|
|
19797
20604
|
guardian: "user-round",
|
|
19798
20605
|
consent: "clock",
|
|
@@ -19805,18 +20612,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
|
|
|
19805
20612
|
var _a3;
|
|
19806
20613
|
const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
|
|
19807
20614
|
const color = ICON_COLORS[category];
|
|
19808
|
-
return /* @__PURE__ */ (0,
|
|
19809
|
-
|
|
20615
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
20616
|
+
import_react_native61.View,
|
|
19810
20617
|
{
|
|
19811
20618
|
style: [
|
|
19812
|
-
|
|
20619
|
+
styles50.wrap,
|
|
19813
20620
|
{ width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
|
|
19814
20621
|
],
|
|
19815
|
-
children: /* @__PURE__ */ (0,
|
|
20622
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
|
|
19816
20623
|
}
|
|
19817
20624
|
);
|
|
19818
20625
|
};
|
|
19819
|
-
var
|
|
20626
|
+
var styles50 = import_react_native61.StyleSheet.create({
|
|
19820
20627
|
wrap: {
|
|
19821
20628
|
alignItems: "center",
|
|
19822
20629
|
justifyContent: "center"
|
|
@@ -19824,15 +20631,15 @@ var styles48 = import_react_native59.StyleSheet.create({
|
|
|
19824
20631
|
});
|
|
19825
20632
|
|
|
19826
20633
|
// src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
|
|
19827
|
-
var
|
|
19828
|
-
var
|
|
19829
|
-
var
|
|
20634
|
+
var import_react42 = require("react");
|
|
20635
|
+
var import_react_native62 = require("react-native");
|
|
20636
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
19830
20637
|
var ACTION_WIDTH = 80;
|
|
19831
20638
|
var CLAIM_THRESHOLD = 8;
|
|
19832
20639
|
var SwipeableRow = ({ actions, background, children }) => {
|
|
19833
20640
|
const { colors } = useTheme();
|
|
19834
|
-
const translateX = (0,
|
|
19835
|
-
const baseX = (0,
|
|
20641
|
+
const translateX = (0, import_react42.useRef)(new import_react_native62.Animated.Value(0)).current;
|
|
20642
|
+
const baseX = (0, import_react42.useRef)(0);
|
|
19836
20643
|
const maxOpen = actions.length * ACTION_WIDTH;
|
|
19837
20644
|
const toneColor2 = {
|
|
19838
20645
|
primary: colors.primary,
|
|
@@ -19841,10 +20648,10 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19841
20648
|
};
|
|
19842
20649
|
const settle = (to) => {
|
|
19843
20650
|
baseX.current = to;
|
|
19844
|
-
|
|
20651
|
+
import_react_native62.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
|
|
19845
20652
|
};
|
|
19846
|
-
const panResponder = (0,
|
|
19847
|
-
() =>
|
|
20653
|
+
const panResponder = (0, import_react42.useMemo)(
|
|
20654
|
+
() => import_react_native62.PanResponder.create({
|
|
19848
20655
|
onMoveShouldSetPanResponder: (_, g) => {
|
|
19849
20656
|
const horizontal = Math.abs(g.dx) > Math.abs(g.dy) * 1.5;
|
|
19850
20657
|
if (!horizontal) return false;
|
|
@@ -19865,37 +20672,37 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19865
20672
|
[maxOpen]
|
|
19866
20673
|
);
|
|
19867
20674
|
if (actions.length === 0) {
|
|
19868
|
-
return /* @__PURE__ */ (0,
|
|
20675
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children });
|
|
19869
20676
|
}
|
|
19870
20677
|
const runAction = (action) => {
|
|
19871
20678
|
settle(0);
|
|
19872
20679
|
action.onPress();
|
|
19873
20680
|
};
|
|
19874
|
-
return /* @__PURE__ */ (0,
|
|
19875
|
-
/* @__PURE__ */ (0,
|
|
19876
|
-
|
|
20681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native62.View, { style: styles51.root, children: [
|
|
20682
|
+
/* @__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)(
|
|
20683
|
+
import_react_native62.TouchableOpacity,
|
|
19877
20684
|
{
|
|
19878
|
-
style: [
|
|
20685
|
+
style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
|
|
19879
20686
|
onPress: () => runAction(action),
|
|
19880
20687
|
activeOpacity: 0.85,
|
|
19881
20688
|
accessibilityRole: "button",
|
|
19882
20689
|
accessibilityLabel: action.label,
|
|
19883
20690
|
children: [
|
|
19884
|
-
/* @__PURE__ */ (0,
|
|
19885
|
-
/* @__PURE__ */ (0,
|
|
20691
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
|
|
20692
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Text, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
|
|
19886
20693
|
]
|
|
19887
20694
|
},
|
|
19888
20695
|
action.key
|
|
19889
20696
|
)) }),
|
|
19890
|
-
/* @__PURE__ */ (0,
|
|
20697
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
|
|
19891
20698
|
] });
|
|
19892
20699
|
};
|
|
19893
|
-
var
|
|
20700
|
+
var styles51 = import_react_native62.StyleSheet.create({
|
|
19894
20701
|
root: {
|
|
19895
20702
|
position: "relative"
|
|
19896
20703
|
},
|
|
19897
20704
|
actionsLayer: {
|
|
19898
|
-
...
|
|
20705
|
+
...import_react_native62.StyleSheet.absoluteFillObject,
|
|
19899
20706
|
flexDirection: "row",
|
|
19900
20707
|
justifyContent: "flex-end"
|
|
19901
20708
|
},
|
|
@@ -19928,10 +20735,10 @@ var formatTimeAgo = (dateString, t) => {
|
|
|
19928
20735
|
};
|
|
19929
20736
|
|
|
19930
20737
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19931
|
-
var
|
|
20738
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
19932
20739
|
var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
|
|
19933
20740
|
var _a3, _b;
|
|
19934
|
-
const { t } = (0,
|
|
20741
|
+
const { t } = (0, import_react_i18next29.useTranslation)();
|
|
19935
20742
|
const { colors } = useTheme();
|
|
19936
20743
|
const isUnread = !notification.is_read;
|
|
19937
20744
|
const statusLabel = notification.status_label_display || notification.status_label;
|
|
@@ -19958,35 +20765,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
|
|
|
19958
20765
|
onPress: onAcknowledge
|
|
19959
20766
|
});
|
|
19960
20767
|
}
|
|
19961
|
-
return /* @__PURE__ */ (0,
|
|
19962
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
19963
|
-
/* @__PURE__ */ (0,
|
|
19964
|
-
/* @__PURE__ */ (0,
|
|
19965
|
-
/* @__PURE__ */ (0,
|
|
19966
|
-
/* @__PURE__ */ (0,
|
|
19967
|
-
|
|
20768
|
+
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: [
|
|
20769
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
|
|
20770
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
|
|
20771
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.content, children: [
|
|
20772
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.titleRow, children: [
|
|
20773
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
20774
|
+
import_react_native63.Text,
|
|
19968
20775
|
{
|
|
19969
|
-
style: [
|
|
20776
|
+
style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
|
|
19970
20777
|
numberOfLines: 2,
|
|
19971
20778
|
children: notification.title
|
|
19972
20779
|
}
|
|
19973
20780
|
),
|
|
19974
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
20781
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
|
|
19975
20782
|
] }),
|
|
19976
|
-
/* @__PURE__ */ (0,
|
|
19977
|
-
statusLabel ? /* @__PURE__ */ (0,
|
|
19978
|
-
/* @__PURE__ */ (0,
|
|
19979
|
-
/* @__PURE__ */ (0,
|
|
19980
|
-
/* @__PURE__ */ (0,
|
|
20783
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.metaRow, children: [
|
|
20784
|
+
statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
|
|
20785
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.statusDot, { backgroundColor: accent }] }),
|
|
20786
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
|
|
20787
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
|
|
19981
20788
|
] }) : null,
|
|
19982
|
-
/* @__PURE__ */ (0,
|
|
20789
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
|
|
19983
20790
|
] }),
|
|
19984
|
-
showAcknowledge && ackCta ? /* @__PURE__ */ (0,
|
|
20791
|
+
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
20792
|
] }),
|
|
19986
|
-
/* @__PURE__ */ (0,
|
|
20793
|
+
/* @__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
20794
|
] }) });
|
|
19988
20795
|
};
|
|
19989
|
-
var
|
|
20796
|
+
var styles52 = import_react_native63.StyleSheet.create({
|
|
19990
20797
|
row: {
|
|
19991
20798
|
flexDirection: "row",
|
|
19992
20799
|
alignItems: "center",
|
|
@@ -20049,25 +20856,25 @@ var styles50 = import_react_native61.StyleSheet.create({
|
|
|
20049
20856
|
});
|
|
20050
20857
|
|
|
20051
20858
|
// src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
|
|
20052
|
-
var
|
|
20053
|
-
var
|
|
20859
|
+
var import_react43 = require("react");
|
|
20860
|
+
var import_react_native64 = require("react-native");
|
|
20054
20861
|
var useNotificationActions = () => {
|
|
20055
20862
|
const { navigateTo, setSelectedCase } = useInternalNavigation();
|
|
20056
20863
|
const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId, email } = useAuth();
|
|
20057
20864
|
const { consentClient } = useBaseUrl();
|
|
20058
20865
|
const { langParam } = useCurrentLanguage();
|
|
20059
|
-
const authContext = (0,
|
|
20866
|
+
const authContext = (0, import_react43.useMemo)(
|
|
20060
20867
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
20061
20868
|
[accessToken, refreshToken, onError, updateTokens]
|
|
20062
20869
|
);
|
|
20063
|
-
const hasAcknowledgeCTA = (0,
|
|
20870
|
+
const hasAcknowledgeCTA = (0, import_react43.useCallback)(
|
|
20064
20871
|
(notification) => {
|
|
20065
20872
|
var _a3, _b;
|
|
20066
20873
|
return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
|
|
20067
20874
|
},
|
|
20068
20875
|
[]
|
|
20069
20876
|
);
|
|
20070
|
-
const handleMarkRead = (0,
|
|
20877
|
+
const handleMarkRead = (0, import_react43.useCallback)(
|
|
20071
20878
|
async (notificationUuid) => {
|
|
20072
20879
|
if (!organizationId || !workspaceId) return false;
|
|
20073
20880
|
const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20075,12 +20882,12 @@ var useNotificationActions = () => {
|
|
|
20075
20882
|
},
|
|
20076
20883
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20077
20884
|
);
|
|
20078
|
-
const handleMarkAllRead = (0,
|
|
20885
|
+
const handleMarkAllRead = (0, import_react43.useCallback)(async () => {
|
|
20079
20886
|
if (!organizationId || !workspaceId) return false;
|
|
20080
20887
|
const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
|
|
20081
20888
|
return result !== null;
|
|
20082
20889
|
}, [organizationId, workspaceId, authContext, consentClient]);
|
|
20083
|
-
const handleAcknowledge = (0,
|
|
20890
|
+
const handleAcknowledge = (0, import_react43.useCallback)(
|
|
20084
20891
|
async (notificationUuid) => {
|
|
20085
20892
|
if (!organizationId || !workspaceId) return false;
|
|
20086
20893
|
const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20088,7 +20895,7 @@ var useNotificationActions = () => {
|
|
|
20088
20895
|
},
|
|
20089
20896
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20090
20897
|
);
|
|
20091
|
-
const handleCTAClick = (0,
|
|
20898
|
+
const handleCTAClick = (0, import_react43.useCallback)(
|
|
20092
20899
|
async (notification, cta) => {
|
|
20093
20900
|
var _a3;
|
|
20094
20901
|
if (cta.action_type === "acknowledge") {
|
|
@@ -20122,7 +20929,7 @@ var useNotificationActions = () => {
|
|
|
20122
20929
|
const url = cta.url;
|
|
20123
20930
|
if (!/^https?:\/\//i.test(url)) return null;
|
|
20124
20931
|
try {
|
|
20125
|
-
await
|
|
20932
|
+
await import_react_native64.Linking.openURL(url);
|
|
20126
20933
|
return "opened";
|
|
20127
20934
|
} catch {
|
|
20128
20935
|
return null;
|
|
@@ -20145,7 +20952,7 @@ var useNotificationActions = () => {
|
|
|
20145
20952
|
};
|
|
20146
20953
|
|
|
20147
20954
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
20148
|
-
var
|
|
20955
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
20149
20956
|
var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
|
|
20150
20957
|
var READ_FILTER_TO_PARAM = {
|
|
20151
20958
|
all: void 0,
|
|
@@ -20153,7 +20960,7 @@ var READ_FILTER_TO_PARAM = {
|
|
|
20153
20960
|
read: true
|
|
20154
20961
|
};
|
|
20155
20962
|
var NotificationsScreen = () => {
|
|
20156
|
-
const { t } = (0,
|
|
20963
|
+
const { t } = (0, import_react_i18next30.useTranslation)();
|
|
20157
20964
|
const { colors } = useTheme();
|
|
20158
20965
|
const { langParam } = useCurrentLanguage();
|
|
20159
20966
|
const { listBottom } = usePrivacyCenterInsets();
|
|
@@ -20170,15 +20977,15 @@ var NotificationsScreen = () => {
|
|
|
20170
20977
|
handleAcknowledge,
|
|
20171
20978
|
handleCTAClick
|
|
20172
20979
|
} = 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,
|
|
20980
|
+
const [notifications, setNotifications] = (0, import_react44.useState)([]);
|
|
20981
|
+
const [summary, setSummary] = (0, import_react44.useState)(EMPTY_SUMMARY);
|
|
20982
|
+
const [activeTab, setActiveTab] = (0, import_react44.useState)("all");
|
|
20983
|
+
const [readFilter, setReadFilter] = (0, import_react44.useState)("all");
|
|
20984
|
+
const [isLoading, setIsLoading] = (0, import_react44.useState)(true);
|
|
20985
|
+
const [isRefreshing2, setIsRefreshing] = (0, import_react44.useState)(false);
|
|
20986
|
+
const [filterOpen, setFilterOpen] = (0, import_react44.useState)(false);
|
|
20180
20987
|
const isFiltered = activeTab !== "all" || readFilter !== "all";
|
|
20181
|
-
const loadNotifications = (0,
|
|
20988
|
+
const loadNotifications = (0, import_react44.useCallback)(
|
|
20182
20989
|
async (includeSummary = false, silent = false) => {
|
|
20183
20990
|
if (!organizationId || !workspaceId) return;
|
|
20184
20991
|
if (!silent) setIsLoading(true);
|
|
@@ -20208,18 +21015,21 @@ var NotificationsScreen = () => {
|
|
|
20208
21015
|
},
|
|
20209
21016
|
[organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
|
|
20210
21017
|
);
|
|
20211
|
-
(0,
|
|
21018
|
+
(0, import_react44.useEffect)(() => {
|
|
20212
21019
|
loadNotifications(true);
|
|
20213
21020
|
}, [loadNotifications]);
|
|
20214
|
-
const loadRef = (0,
|
|
21021
|
+
const loadRef = (0, import_react44.useRef)(loadNotifications);
|
|
20215
21022
|
loadRef.current = loadNotifications;
|
|
20216
|
-
(0,
|
|
21023
|
+
const authContextRef = (0, import_react44.useRef)(authContext);
|
|
21024
|
+
authContextRef.current = authContext;
|
|
21025
|
+
(0, import_react44.useEffect)(() => {
|
|
20217
21026
|
const id = setInterval(() => {
|
|
21027
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
20218
21028
|
loadRef.current(false, true);
|
|
20219
21029
|
}, POLL_INTERVAL);
|
|
20220
21030
|
return () => clearInterval(id);
|
|
20221
21031
|
}, []);
|
|
20222
|
-
const onNotificationClick = (0,
|
|
21032
|
+
const onNotificationClick = (0, import_react44.useCallback)(
|
|
20223
21033
|
async (notification) => {
|
|
20224
21034
|
const shouldMarkRead = !notification.is_read;
|
|
20225
21035
|
const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
|
|
@@ -20240,7 +21050,7 @@ var NotificationsScreen = () => {
|
|
|
20240
21050
|
},
|
|
20241
21051
|
[hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
|
|
20242
21052
|
);
|
|
20243
|
-
const onRowPress = (0,
|
|
21053
|
+
const onRowPress = (0, import_react44.useCallback)(
|
|
20244
21054
|
async (notification) => {
|
|
20245
21055
|
var _a3;
|
|
20246
21056
|
const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
|
|
@@ -20258,7 +21068,7 @@ var NotificationsScreen = () => {
|
|
|
20258
21068
|
},
|
|
20259
21069
|
[handleCTAClick, onNotificationClick]
|
|
20260
21070
|
);
|
|
20261
|
-
const onMarkReadRow = (0,
|
|
21071
|
+
const onMarkReadRow = (0, import_react44.useCallback)(
|
|
20262
21072
|
async (notification) => {
|
|
20263
21073
|
if (notification.is_read) return;
|
|
20264
21074
|
const ok = await handleMarkRead(notification.uuid);
|
|
@@ -20268,7 +21078,7 @@ var NotificationsScreen = () => {
|
|
|
20268
21078
|
},
|
|
20269
21079
|
[handleMarkRead]
|
|
20270
21080
|
);
|
|
20271
|
-
const onAcknowledgeRow = (0,
|
|
21081
|
+
const onAcknowledgeRow = (0, import_react44.useCallback)(
|
|
20272
21082
|
async (notification) => {
|
|
20273
21083
|
if (notification.is_acknowledged) return;
|
|
20274
21084
|
const ok = await handleAcknowledge(notification.uuid);
|
|
@@ -20285,22 +21095,29 @@ var NotificationsScreen = () => {
|
|
|
20285
21095
|
},
|
|
20286
21096
|
[handleAcknowledge]
|
|
20287
21097
|
);
|
|
20288
|
-
const
|
|
21098
|
+
const onMarkAllRead = (0, import_react44.useCallback)(async () => {
|
|
21099
|
+
const ok = await handleMarkAllRead();
|
|
21100
|
+
if (!ok) return;
|
|
21101
|
+
setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
|
|
21102
|
+
setSummary((prev) => ({ ...prev, unread: 0 }));
|
|
21103
|
+
if (readFilter !== "all") loadNotifications(true, true);
|
|
21104
|
+
}, [handleMarkAllRead, readFilter, loadNotifications]);
|
|
21105
|
+
const onRefresh = (0, import_react44.useCallback)(() => {
|
|
20289
21106
|
setIsRefreshing(true);
|
|
20290
21107
|
loadNotifications(true, true);
|
|
20291
21108
|
}, [loadNotifications]);
|
|
20292
|
-
const sections = (0,
|
|
21109
|
+
const sections = (0, import_react44.useMemo)(
|
|
20293
21110
|
() => groupByTime(notifications, (item) => item.created_at, classifyTime),
|
|
20294
21111
|
[notifications, classifyTime]
|
|
20295
21112
|
);
|
|
20296
|
-
const header = /* @__PURE__ */ (0,
|
|
20297
|
-
/* @__PURE__ */ (0,
|
|
20298
|
-
/* @__PURE__ */ (0,
|
|
20299
|
-
/* @__PURE__ */ (0,
|
|
20300
|
-
|
|
21113
|
+
const header = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.header, children: [
|
|
21114
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.titleRow, children: [
|
|
21115
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
|
|
21116
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21117
|
+
import_react_native65.TouchableOpacity,
|
|
20301
21118
|
{
|
|
20302
21119
|
style: [
|
|
20303
|
-
|
|
21120
|
+
styles53.filterBtn,
|
|
20304
21121
|
{
|
|
20305
21122
|
backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
|
|
20306
21123
|
borderColor: isFiltered ? colors.primary : colors.border
|
|
@@ -20309,30 +21126,30 @@ var NotificationsScreen = () => {
|
|
|
20309
21126
|
onPress: () => setFilterOpen(true),
|
|
20310
21127
|
accessibilityRole: "button",
|
|
20311
21128
|
accessibilityLabel: t("filter") || "Filter",
|
|
20312
|
-
children: /* @__PURE__ */ (0,
|
|
21129
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
|
|
20313
21130
|
}
|
|
20314
21131
|
)
|
|
20315
21132
|
] }),
|
|
20316
|
-
summary.unread > 0 ? /* @__PURE__ */ (0,
|
|
20317
|
-
/* @__PURE__ */ (0,
|
|
20318
|
-
/* @__PURE__ */ (0,
|
|
21133
|
+
summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.TouchableOpacity, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
|
|
21134
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
|
|
21135
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
|
|
20319
21136
|
] }) : null
|
|
20320
21137
|
] });
|
|
20321
|
-
return /* @__PURE__ */ (0,
|
|
20322
|
-
/* @__PURE__ */ (0,
|
|
20323
|
-
|
|
21138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
21139
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21140
|
+
import_react_native65.FlatList,
|
|
20324
21141
|
{
|
|
20325
21142
|
data: sections,
|
|
20326
21143
|
keyExtractor: (section2) => section2.key,
|
|
20327
|
-
style: [
|
|
20328
|
-
contentContainerStyle: [
|
|
21144
|
+
style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
|
|
21145
|
+
contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
|
|
20329
21146
|
ListHeaderComponent: header,
|
|
20330
21147
|
showsVerticalScrollIndicator: false,
|
|
20331
|
-
refreshControl: /* @__PURE__ */ (0,
|
|
20332
|
-
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0,
|
|
20333
|
-
/* @__PURE__ */ (0,
|
|
20334
|
-
/* @__PURE__ */ (0,
|
|
20335
|
-
/* @__PURE__ */ (0,
|
|
21148
|
+
refreshControl: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
|
|
21149
|
+
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.section, children: [
|
|
21150
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
|
|
21151
|
+
/* @__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: [
|
|
21152
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20336
21153
|
NotificationRow,
|
|
20337
21154
|
{
|
|
20338
21155
|
notification: item,
|
|
@@ -20341,19 +21158,19 @@ var NotificationsScreen = () => {
|
|
|
20341
21158
|
onAcknowledge: () => onAcknowledgeRow(item)
|
|
20342
21159
|
}
|
|
20343
21160
|
),
|
|
20344
|
-
index < section2.data.length - 1 ? /* @__PURE__ */ (0,
|
|
21161
|
+
index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
20345
21162
|
] }, item.uuid)) }) })
|
|
20346
21163
|
] }),
|
|
20347
|
-
ListEmptyComponent: isLoading ? /* @__PURE__ */ (0,
|
|
20348
|
-
/* @__PURE__ */ (0,
|
|
20349
|
-
/* @__PURE__ */ (0,
|
|
20350
|
-
/* @__PURE__ */ (0,
|
|
20351
|
-
/* @__PURE__ */ (0,
|
|
20352
|
-
/* @__PURE__ */ (0,
|
|
21164
|
+
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: [
|
|
21165
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonRow, children: [
|
|
21166
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
|
|
21167
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonLines, children: [
|
|
21168
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "70%", height: 13 }),
|
|
21169
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "40%", height: 10 })
|
|
20353
21170
|
] })
|
|
20354
21171
|
] }),
|
|
20355
|
-
i < 3 ? /* @__PURE__ */ (0,
|
|
20356
|
-
] }, i)) }) }) : /* @__PURE__ */ (0,
|
|
21172
|
+
i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
21173
|
+
] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20357
21174
|
PCEmpty,
|
|
20358
21175
|
{
|
|
20359
21176
|
iconName: "circle-check",
|
|
@@ -20362,14 +21179,14 @@ var NotificationsScreen = () => {
|
|
|
20362
21179
|
}
|
|
20363
21180
|
) }),
|
|
20364
21181
|
ListFooterComponentStyle: { marginTop: "auto" },
|
|
20365
|
-
ListFooterComponent: /* @__PURE__ */ (0,
|
|
21182
|
+
ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Footer, {})
|
|
20366
21183
|
}
|
|
20367
21184
|
),
|
|
20368
|
-
/* @__PURE__ */ (0,
|
|
20369
|
-
/* @__PURE__ */ (0,
|
|
20370
|
-
/* @__PURE__ */ (0,
|
|
21185
|
+
/* @__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: [
|
|
21186
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
|
|
21187
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
|
|
20371
21188
|
const selected = tab.key === activeTab;
|
|
20372
|
-
return /* @__PURE__ */ (0,
|
|
21189
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20373
21190
|
FilterChip,
|
|
20374
21191
|
{
|
|
20375
21192
|
label: tab.label,
|
|
@@ -20379,12 +21196,12 @@ var NotificationsScreen = () => {
|
|
|
20379
21196
|
tab.key
|
|
20380
21197
|
);
|
|
20381
21198
|
}) }),
|
|
20382
|
-
/* @__PURE__ */ (0,
|
|
20383
|
-
/* @__PURE__ */ (0,
|
|
21199
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
|
|
21200
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: [
|
|
20384
21201
|
{ key: "all", label: t("all") || "All" },
|
|
20385
21202
|
{ key: "unread", label: t("unread") || "Unread" },
|
|
20386
21203
|
{ key: "read", label: t("read", { defaultValue: "Read" }) }
|
|
20387
|
-
].map((opt) => /* @__PURE__ */ (0,
|
|
21204
|
+
].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20388
21205
|
FilterChip,
|
|
20389
21206
|
{
|
|
20390
21207
|
label: opt.label,
|
|
@@ -20393,13 +21210,13 @@ var NotificationsScreen = () => {
|
|
|
20393
21210
|
},
|
|
20394
21211
|
opt.key
|
|
20395
21212
|
)) }),
|
|
20396
|
-
/* @__PURE__ */ (0,
|
|
20397
|
-
|
|
21213
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21214
|
+
import_react_native65.TouchableOpacity,
|
|
20398
21215
|
{
|
|
20399
|
-
style: [
|
|
21216
|
+
style: [styles53.applyBtn, { backgroundColor: colors.primary }],
|
|
20400
21217
|
onPress: () => setFilterOpen(false),
|
|
20401
21218
|
accessibilityRole: "button",
|
|
20402
|
-
children: /* @__PURE__ */ (0,
|
|
21219
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
|
|
20403
21220
|
}
|
|
20404
21221
|
)
|
|
20405
21222
|
] }) })
|
|
@@ -20407,25 +21224,25 @@ var NotificationsScreen = () => {
|
|
|
20407
21224
|
};
|
|
20408
21225
|
var FilterChip = ({ label, selected, onPress }) => {
|
|
20409
21226
|
const { colors } = useTheme();
|
|
20410
|
-
return /* @__PURE__ */ (0,
|
|
20411
|
-
|
|
21227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21228
|
+
import_react_native65.TouchableOpacity,
|
|
20412
21229
|
{
|
|
20413
21230
|
onPress,
|
|
20414
21231
|
activeOpacity: 0.7,
|
|
20415
21232
|
accessibilityRole: "button",
|
|
20416
21233
|
accessibilityState: { selected },
|
|
20417
21234
|
style: [
|
|
20418
|
-
|
|
21235
|
+
styles53.chip,
|
|
20419
21236
|
{
|
|
20420
21237
|
backgroundColor: selected ? colors.primary : colors.surfaceAlt,
|
|
20421
21238
|
borderColor: selected ? colors.primary : colors.border
|
|
20422
21239
|
}
|
|
20423
21240
|
],
|
|
20424
|
-
children: /* @__PURE__ */ (0,
|
|
21241
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
|
|
20425
21242
|
}
|
|
20426
21243
|
);
|
|
20427
21244
|
};
|
|
20428
|
-
var
|
|
21245
|
+
var styles53 = import_react_native65.StyleSheet.create({
|
|
20429
21246
|
list: {
|
|
20430
21247
|
flex: 1
|
|
20431
21248
|
},
|
|
@@ -20459,7 +21276,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20459
21276
|
filterBtn: {
|
|
20460
21277
|
width: 40,
|
|
20461
21278
|
height: 40,
|
|
20462
|
-
borderWidth:
|
|
21279
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth,
|
|
20463
21280
|
borderRadius: radii.md,
|
|
20464
21281
|
justifyContent: "center",
|
|
20465
21282
|
alignItems: "center"
|
|
@@ -20480,7 +21297,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20480
21297
|
overflow: "hidden"
|
|
20481
21298
|
},
|
|
20482
21299
|
separator: {
|
|
20483
|
-
height:
|
|
21300
|
+
height: import_react_native65.StyleSheet.hairlineWidth,
|
|
20484
21301
|
marginLeft: spacing.lg + 36 + spacing.md
|
|
20485
21302
|
},
|
|
20486
21303
|
emptyWrap: {
|
|
@@ -20518,7 +21335,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20518
21335
|
justifyContent: "center",
|
|
20519
21336
|
paddingHorizontal: spacing.lg,
|
|
20520
21337
|
borderRadius: radii.pill,
|
|
20521
|
-
borderWidth:
|
|
21338
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth
|
|
20522
21339
|
},
|
|
20523
21340
|
chipLabel: {
|
|
20524
21341
|
...typography.label
|
|
@@ -20537,7 +21354,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20537
21354
|
});
|
|
20538
21355
|
|
|
20539
21356
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
20540
|
-
var
|
|
21357
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
20541
21358
|
var privacyCenterQueryClient = new import_react_query2.QueryClient();
|
|
20542
21359
|
function PrivacyCenterContent({ onBack }) {
|
|
20543
21360
|
const { currentPage } = useInternalNavigation();
|
|
@@ -20547,24 +21364,24 @@ function PrivacyCenterContent({ onBack }) {
|
|
|
20547
21364
|
const chromeMode = getPageChromeMode(currentPage);
|
|
20548
21365
|
const canvasIsLight = isLightColor(colors.canvasSubtle);
|
|
20549
21366
|
const barStyle = canvasIsLight ? "dark-content" : "light-content";
|
|
20550
|
-
(0,
|
|
20551
|
-
|
|
20552
|
-
if (
|
|
21367
|
+
(0, import_react45.useEffect)(() => {
|
|
21368
|
+
import_react_native66.StatusBar.setBarStyle(barStyle, true);
|
|
21369
|
+
if (import_react_native66.Platform.OS === "android") {
|
|
20553
21370
|
setNavBarIconStyle(canvasIsLight ? "dark" : "light");
|
|
20554
21371
|
}
|
|
20555
21372
|
}, [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,
|
|
21373
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native66.View, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
21374
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.StatusBar, { barStyle, translucent: true }),
|
|
21375
|
+
/* @__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: [
|
|
21376
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
|
|
21377
|
+
/* @__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: [
|
|
21378
|
+
currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HomeHub, {}),
|
|
21379
|
+
currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ConsentManager, {}),
|
|
21380
|
+
currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FormPage, {}),
|
|
21381
|
+
currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ActivitiesList, {}),
|
|
21382
|
+
currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ReceiptsList, {}),
|
|
21383
|
+
currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CaseDetailsPage, {}),
|
|
21384
|
+
currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NotificationsScreen, {})
|
|
20568
21385
|
] }) })
|
|
20569
21386
|
] }) })
|
|
20570
21387
|
] });
|
|
@@ -20578,22 +21395,34 @@ function RedactoPrivacyCenter({
|
|
|
20578
21395
|
theme: _theme,
|
|
20579
21396
|
accessToken,
|
|
20580
21397
|
refreshToken,
|
|
21398
|
+
token,
|
|
21399
|
+
email,
|
|
21400
|
+
mobile,
|
|
21401
|
+
ucic,
|
|
21402
|
+
organisationUuid,
|
|
21403
|
+
workspaceUuid,
|
|
20581
21404
|
onError,
|
|
20582
21405
|
initialPage = "home",
|
|
20583
21406
|
initialCaseUuid,
|
|
20584
21407
|
onBack
|
|
20585
21408
|
}) {
|
|
20586
|
-
return /* @__PURE__ */ (0,
|
|
21409
|
+
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
21410
|
AuthProvider,
|
|
20588
21411
|
{
|
|
20589
|
-
accessToken,
|
|
20590
|
-
refreshToken,
|
|
21412
|
+
accessToken: accessToken != null ? accessToken : "",
|
|
21413
|
+
refreshToken: refreshToken != null ? refreshToken : "",
|
|
21414
|
+
token,
|
|
21415
|
+
sandboxUcic: ucic,
|
|
21416
|
+
sandboxSubject: email || mobile,
|
|
21417
|
+
organisationUuid,
|
|
21418
|
+
workspaceUuid,
|
|
21419
|
+
slug,
|
|
20591
21420
|
onError,
|
|
20592
|
-
children: /* @__PURE__ */ (0,
|
|
21421
|
+
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
21422
|
}
|
|
20594
21423
|
) }) }) }) }) }) });
|
|
20595
21424
|
}
|
|
20596
|
-
var
|
|
21425
|
+
var styles54 = import_react_native66.StyleSheet.create({
|
|
20597
21426
|
container: {
|
|
20598
21427
|
flex: 1
|
|
20599
21428
|
},
|
|
@@ -20607,74 +21436,74 @@ var styles52 = import_react_native64.StyleSheet.create({
|
|
|
20607
21436
|
});
|
|
20608
21437
|
|
|
20609
21438
|
// src/RedactoPrivacyCenter/components/SideMenu.tsx
|
|
20610
|
-
var
|
|
20611
|
-
var
|
|
21439
|
+
var import_react_native67 = require("react-native");
|
|
21440
|
+
var import_react_i18next32 = require("react-i18next");
|
|
20612
21441
|
var import_react_native_svg4 = __toESM(require("react-native-svg"));
|
|
20613
|
-
var
|
|
21442
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
20614
21443
|
var MENU_ITEMS = [
|
|
20615
21444
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
|
|
20616
21445
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
|
|
20617
21446
|
{ page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
|
|
20618
21447
|
];
|
|
20619
21448
|
function SideMenu({ onBack } = {}) {
|
|
20620
|
-
const { t } = (0,
|
|
21449
|
+
const { t } = (0, import_react_i18next32.useTranslation)();
|
|
20621
21450
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20622
21451
|
const { organizationName, email } = useAuth();
|
|
20623
21452
|
const { colors } = useTheme();
|
|
20624
21453
|
const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
|
|
20625
21454
|
const displayName = organizationName || "Organization";
|
|
20626
|
-
return /* @__PURE__ */ (0,
|
|
20627
|
-
/* @__PURE__ */ (0,
|
|
20628
|
-
/* @__PURE__ */ (0,
|
|
20629
|
-
/* @__PURE__ */ (0,
|
|
20630
|
-
/* @__PURE__ */ (0,
|
|
20631
|
-
email ? /* @__PURE__ */ (0,
|
|
21455
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
|
|
21456
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgSection, children: [
|
|
21457
|
+
/* @__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 }) }),
|
|
21458
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgInfo, children: [
|
|
21459
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
|
|
21460
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20632
21461
|
] })
|
|
20633
21462
|
] }),
|
|
20634
|
-
/* @__PURE__ */ (0,
|
|
20635
|
-
/* @__PURE__ */ (0,
|
|
21463
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21464
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
|
|
20636
21465
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
20637
|
-
return /* @__PURE__ */ (0,
|
|
20638
|
-
|
|
21466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21467
|
+
import_react_native67.TouchableOpacity,
|
|
20639
21468
|
{
|
|
20640
21469
|
style: [
|
|
20641
|
-
|
|
20642
|
-
isActive && [
|
|
21470
|
+
styles55.menuItem,
|
|
21471
|
+
isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
|
|
20643
21472
|
],
|
|
20644
21473
|
onPress: () => navigateTo(item.page),
|
|
20645
21474
|
activeOpacity: 0.7,
|
|
20646
21475
|
accessibilityRole: "button",
|
|
20647
21476
|
accessibilityState: { selected: isActive },
|
|
20648
21477
|
children: [
|
|
20649
|
-
/* @__PURE__ */ (0,
|
|
20650
|
-
/* @__PURE__ */ (0,
|
|
20651
|
-
|
|
21478
|
+
/* @__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 }) }),
|
|
21479
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
21480
|
+
import_react_native67.Text,
|
|
20652
21481
|
{
|
|
20653
21482
|
style: [
|
|
20654
|
-
|
|
21483
|
+
styles55.menuLabel,
|
|
20655
21484
|
{ color: isActive ? colors.primary : colors.text },
|
|
20656
|
-
isActive &&
|
|
21485
|
+
isActive && styles55.menuLabelActive
|
|
20657
21486
|
],
|
|
20658
21487
|
children: t(item.labelKey) || item.fallback
|
|
20659
21488
|
}
|
|
20660
21489
|
),
|
|
20661
|
-
isActive ? /* @__PURE__ */ (0,
|
|
21490
|
+
isActive ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
|
|
20662
21491
|
]
|
|
20663
21492
|
},
|
|
20664
21493
|
item.page
|
|
20665
21494
|
);
|
|
20666
21495
|
}) }),
|
|
20667
|
-
onBack ? /* @__PURE__ */ (0,
|
|
20668
|
-
/* @__PURE__ */ (0,
|
|
20669
|
-
/* @__PURE__ */ (0,
|
|
20670
|
-
/* @__PURE__ */ (0,
|
|
20671
|
-
|
|
21496
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
|
|
21497
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: { flex: 1 } }),
|
|
21498
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21499
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21500
|
+
import_react_native67.TouchableOpacity,
|
|
20672
21501
|
{
|
|
20673
|
-
style:
|
|
21502
|
+
style: styles55.backBtn,
|
|
20674
21503
|
onPress: () => navigateBack(onBack),
|
|
20675
21504
|
activeOpacity: 0.7,
|
|
20676
21505
|
children: [
|
|
20677
|
-
/* @__PURE__ */ (0,
|
|
21506
|
+
/* @__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
21507
|
import_react_native_svg4.Path,
|
|
20679
21508
|
{
|
|
20680
21509
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20683,7 +21512,7 @@ function SideMenu({ onBack } = {}) {
|
|
|
20683
21512
|
strokeLinecap: "round",
|
|
20684
21513
|
strokeLinejoin: "round"
|
|
20685
21514
|
}
|
|
20686
|
-
) : /* @__PURE__ */ (0,
|
|
21515
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
20687
21516
|
import_react_native_svg4.Path,
|
|
20688
21517
|
{
|
|
20689
21518
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20693,14 +21522,14 @@ function SideMenu({ onBack } = {}) {
|
|
|
20693
21522
|
strokeLinejoin: "round"
|
|
20694
21523
|
}
|
|
20695
21524
|
) }),
|
|
20696
|
-
/* @__PURE__ */ (0,
|
|
21525
|
+
/* @__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
21526
|
]
|
|
20698
21527
|
}
|
|
20699
21528
|
)
|
|
20700
21529
|
] }) : null
|
|
20701
21530
|
] });
|
|
20702
21531
|
}
|
|
20703
|
-
var
|
|
21532
|
+
var styles55 = import_react_native67.StyleSheet.create({
|
|
20704
21533
|
container: {
|
|
20705
21534
|
flex: 1,
|
|
20706
21535
|
paddingTop: 12
|
|
@@ -20786,42 +21615,68 @@ var styles53 = import_react_native65.StyleSheet.create({
|
|
|
20786
21615
|
});
|
|
20787
21616
|
|
|
20788
21617
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20789
|
-
var
|
|
20790
|
-
var
|
|
20791
|
-
var
|
|
21618
|
+
var import_react46 = require("react");
|
|
21619
|
+
var import_react_native69 = require("react-native");
|
|
21620
|
+
var import_react_i18next34 = require("react-i18next");
|
|
20792
21621
|
var import_react_native_svg6 = __toESM(require("react-native-svg"));
|
|
20793
21622
|
|
|
20794
21623
|
// src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
|
|
20795
|
-
var
|
|
20796
|
-
var
|
|
21624
|
+
var import_react_native68 = require("react-native");
|
|
21625
|
+
var import_react_i18next33 = require("react-i18next");
|
|
20797
21626
|
var import_react_native_svg5 = __toESM(require("react-native-svg"));
|
|
20798
|
-
var
|
|
21627
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
20799
21628
|
var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
20800
|
-
const { t } = (0,
|
|
21629
|
+
const { t } = (0, import_react_i18next33.useTranslation)();
|
|
20801
21630
|
const { organizationName, email } = useAuth();
|
|
20802
21631
|
const { colors, branding } = useTheme();
|
|
21632
|
+
const { switchProfile } = useProfileSwitch();
|
|
20803
21633
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20804
21634
|
const handleAction = () => {
|
|
20805
21635
|
onClose();
|
|
20806
21636
|
navigateBack(onBack);
|
|
20807
21637
|
};
|
|
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,
|
|
21638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
|
|
21639
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identity, children: [
|
|
21640
|
+
(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 }),
|
|
21641
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identityText, children: [
|
|
21642
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
|
|
21643
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20814
21644
|
] })
|
|
20815
21645
|
] }),
|
|
20816
|
-
|
|
20817
|
-
|
|
21646
|
+
switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21647
|
+
import_react_native68.TouchableOpacity,
|
|
20818
21648
|
{
|
|
20819
|
-
style: [
|
|
21649
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
|
|
21650
|
+
onPress: () => {
|
|
21651
|
+
onClose();
|
|
21652
|
+
switchProfile();
|
|
21653
|
+
},
|
|
21654
|
+
activeOpacity: 0.7,
|
|
21655
|
+
accessibilityRole: "button",
|
|
21656
|
+
children: [
|
|
21657
|
+
/* @__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)(
|
|
21658
|
+
import_react_native_svg5.Path,
|
|
21659
|
+
{
|
|
21660
|
+
d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
|
|
21661
|
+
stroke: colors.primary,
|
|
21662
|
+
strokeWidth: 2,
|
|
21663
|
+
strokeLinecap: "round",
|
|
21664
|
+
strokeLinejoin: "round"
|
|
21665
|
+
}
|
|
21666
|
+
) }),
|
|
21667
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
|
|
21668
|
+
]
|
|
21669
|
+
}
|
|
21670
|
+
) : null,
|
|
21671
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21672
|
+
import_react_native68.TouchableOpacity,
|
|
21673
|
+
{
|
|
21674
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
|
|
20820
21675
|
onPress: handleAction,
|
|
20821
21676
|
activeOpacity: 0.7,
|
|
20822
21677
|
accessibilityRole: "button",
|
|
20823
21678
|
children: [
|
|
20824
|
-
/* @__PURE__ */ (0,
|
|
21679
|
+
/* @__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
21680
|
import_react_native_svg5.Path,
|
|
20826
21681
|
{
|
|
20827
21682
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20830,7 +21685,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20830
21685
|
strokeLinecap: "round",
|
|
20831
21686
|
strokeLinejoin: "round"
|
|
20832
21687
|
}
|
|
20833
|
-
) : /* @__PURE__ */ (0,
|
|
21688
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
20834
21689
|
import_react_native_svg5.Path,
|
|
20835
21690
|
{
|
|
20836
21691
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20840,13 +21695,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20840
21695
|
strokeLinejoin: "round"
|
|
20841
21696
|
}
|
|
20842
21697
|
) }),
|
|
20843
|
-
/* @__PURE__ */ (0,
|
|
21698
|
+
/* @__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
21699
|
]
|
|
20845
21700
|
}
|
|
20846
21701
|
) : null
|
|
20847
21702
|
] });
|
|
20848
21703
|
};
|
|
20849
|
-
var
|
|
21704
|
+
var styles56 = import_react_native68.StyleSheet.create({
|
|
20850
21705
|
identity: {
|
|
20851
21706
|
flexDirection: "row",
|
|
20852
21707
|
alignItems: "center",
|
|
@@ -20887,33 +21742,34 @@ var styles54 = import_react_native66.StyleSheet.create({
|
|
|
20887
21742
|
});
|
|
20888
21743
|
|
|
20889
21744
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20890
|
-
var
|
|
21745
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
20891
21746
|
function Navbar({ mode = "primary", onBack }) {
|
|
20892
|
-
const { t } = (0,
|
|
21747
|
+
const { t } = (0, import_react_i18next34.useTranslation)();
|
|
20893
21748
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20894
21749
|
const { organizationName, email } = useAuth();
|
|
20895
21750
|
const { colors, branding } = useTheme();
|
|
20896
|
-
const [locale, setLocale] = (0,
|
|
20897
|
-
const [menuOpen, setMenuOpen] = (0,
|
|
21751
|
+
const [locale, setLocale] = (0, import_react46.useState)(i18n_default.language || "en");
|
|
21752
|
+
const [menuOpen, setMenuOpen] = (0, import_react46.useState)(false);
|
|
20898
21753
|
const unreadCount = useUnreadCount();
|
|
20899
21754
|
const { status: pageStatus } = usePageStatus();
|
|
21755
|
+
const { switchProfile } = useProfileSwitch();
|
|
20900
21756
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
|
|
20901
21757
|
const isDetail = mode === "detail";
|
|
20902
|
-
(0,
|
|
21758
|
+
(0, import_react46.useEffect)(() => {
|
|
20903
21759
|
const handleLanguageChanged = () => setLocale(i18n_default.language);
|
|
20904
21760
|
i18n_default.on("languageChanged", handleLanguageChanged);
|
|
20905
21761
|
return () => {
|
|
20906
21762
|
i18n_default.off("languageChanged", handleLanguageChanged);
|
|
20907
21763
|
};
|
|
20908
21764
|
}, []);
|
|
20909
|
-
const handleLanguageChange = (0,
|
|
21765
|
+
const handleLanguageChange = (0, import_react46.useCallback)((value) => {
|
|
20910
21766
|
i18n_default.changeLanguage(value);
|
|
20911
21767
|
}, []);
|
|
20912
21768
|
const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20913
21769
|
const accountLabel = brandLabel || email || t("account") || "Account";
|
|
20914
|
-
const brandLockup = /* @__PURE__ */ (0,
|
|
20915
|
-
/* @__PURE__ */ (0,
|
|
20916
|
-
/* @__PURE__ */ (0,
|
|
21770
|
+
const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.brandRow, children: [
|
|
21771
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
|
|
21772
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
|
|
20917
21773
|
] });
|
|
20918
21774
|
const handleDetailBack = () => {
|
|
20919
21775
|
if (currentPage === "case-details") {
|
|
@@ -20925,26 +21781,26 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20925
21781
|
}
|
|
20926
21782
|
};
|
|
20927
21783
|
if (isDetail) {
|
|
20928
|
-
return /* @__PURE__ */ (0,
|
|
20929
|
-
/* @__PURE__ */ (0,
|
|
20930
|
-
|
|
21784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21785
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21786
|
+
import_react_native69.View,
|
|
20931
21787
|
{
|
|
20932
21788
|
style: [
|
|
20933
|
-
|
|
20934
|
-
|
|
21789
|
+
styles57.container,
|
|
21790
|
+
styles57.detailContainer,
|
|
20935
21791
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20936
21792
|
],
|
|
20937
|
-
children: /* @__PURE__ */ (0,
|
|
20938
|
-
/* @__PURE__ */ (0,
|
|
20939
|
-
|
|
21793
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailRow, children: [
|
|
21794
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21795
|
+
import_react_native69.TouchableOpacity,
|
|
20940
21796
|
{
|
|
20941
|
-
style:
|
|
21797
|
+
style: styles57.backButton,
|
|
20942
21798
|
onPress: handleDetailBack,
|
|
20943
21799
|
activeOpacity: 0.7,
|
|
20944
21800
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20945
21801
|
accessibilityRole: "button",
|
|
20946
21802
|
accessibilityLabel: t("back") || "Back",
|
|
20947
|
-
children: /* @__PURE__ */ (0,
|
|
21803
|
+
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
21804
|
import_react_native_svg6.Path,
|
|
20949
21805
|
{
|
|
20950
21806
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20956,36 +21812,36 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20956
21812
|
) })
|
|
20957
21813
|
}
|
|
20958
21814
|
),
|
|
20959
|
-
/* @__PURE__ */ (0,
|
|
20960
|
-
/* @__PURE__ */ (0,
|
|
20961
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21815
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailTitleWrap, children: [
|
|
21816
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21817
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
20962
21818
|
] })
|
|
20963
21819
|
] })
|
|
20964
21820
|
}
|
|
20965
21821
|
),
|
|
20966
|
-
/* @__PURE__ */ (0,
|
|
21822
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
20967
21823
|
] });
|
|
20968
21824
|
}
|
|
20969
|
-
return /* @__PURE__ */ (0,
|
|
20970
|
-
/* @__PURE__ */ (0,
|
|
20971
|
-
|
|
21825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21826
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
21827
|
+
import_react_native69.View,
|
|
20972
21828
|
{
|
|
20973
21829
|
style: [
|
|
20974
|
-
|
|
21830
|
+
styles57.container,
|
|
20975
21831
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20976
21832
|
],
|
|
20977
21833
|
children: [
|
|
20978
|
-
/* @__PURE__ */ (0,
|
|
20979
|
-
onBack ? /* @__PURE__ */ (0,
|
|
20980
|
-
|
|
21834
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.appBar, children: [
|
|
21835
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21836
|
+
import_react_native69.TouchableOpacity,
|
|
20981
21837
|
{
|
|
20982
|
-
style:
|
|
21838
|
+
style: styles57.backButton,
|
|
20983
21839
|
onPress: () => navigateBack(onBack),
|
|
20984
21840
|
activeOpacity: 0.7,
|
|
20985
21841
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20986
21842
|
accessibilityRole: "button",
|
|
20987
21843
|
accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
|
|
20988
|
-
children: /* @__PURE__ */ (0,
|
|
21844
|
+
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
21845
|
import_react_native_svg6.Path,
|
|
20990
21846
|
{
|
|
20991
21847
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20997,39 +21853,69 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20997
21853
|
) })
|
|
20998
21854
|
}
|
|
20999
21855
|
) : null,
|
|
21000
|
-
/* @__PURE__ */ (0,
|
|
21001
|
-
/* @__PURE__ */ (0,
|
|
21002
|
-
/* @__PURE__ */ (0,
|
|
21003
|
-
|
|
21004
|
-
|
|
21005
|
-
|
|
21856
|
+
/* @__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 }),
|
|
21857
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.actions, children: [
|
|
21858
|
+
switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21859
|
+
import_react_native69.TouchableOpacity,
|
|
21860
|
+
{
|
|
21861
|
+
style: styles57.iconButton,
|
|
21862
|
+
onPress: switchProfile,
|
|
21863
|
+
activeOpacity: 0.7,
|
|
21864
|
+
hitSlop: DEFAULT_HIT_SLOP,
|
|
21865
|
+
accessibilityRole: "button",
|
|
21866
|
+
accessibilityLabel: t("switchProfile"),
|
|
21867
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21868
|
+
import_react_native69.View,
|
|
21869
|
+
{
|
|
21870
|
+
style: [
|
|
21871
|
+
styles57.iconCircle,
|
|
21872
|
+
{ backgroundColor: colors.surface, borderColor: colors.border }
|
|
21873
|
+
],
|
|
21874
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native_svg6.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21875
|
+
import_react_native_svg6.Path,
|
|
21876
|
+
{
|
|
21877
|
+
d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
|
|
21878
|
+
stroke: colors.text,
|
|
21879
|
+
strokeWidth: 2,
|
|
21880
|
+
strokeLinecap: "round",
|
|
21881
|
+
strokeLinejoin: "round"
|
|
21882
|
+
}
|
|
21883
|
+
) })
|
|
21884
|
+
}
|
|
21885
|
+
)
|
|
21886
|
+
}
|
|
21887
|
+
) : null,
|
|
21888
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
|
|
21889
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
|
|
21890
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21891
|
+
import_react_native69.TouchableOpacity,
|
|
21006
21892
|
{
|
|
21007
|
-
style:
|
|
21893
|
+
style: styles57.avatarButton,
|
|
21008
21894
|
onPress: () => setMenuOpen(true),
|
|
21009
21895
|
activeOpacity: 0.7,
|
|
21010
21896
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21011
21897
|
accessibilityRole: "button",
|
|
21012
21898
|
accessibilityLabel: accountLabel,
|
|
21013
|
-
children: /* @__PURE__ */ (0,
|
|
21899
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
|
|
21014
21900
|
}
|
|
21015
21901
|
)
|
|
21016
21902
|
] })
|
|
21017
21903
|
] }),
|
|
21018
|
-
/* @__PURE__ */ (0,
|
|
21019
|
-
/* @__PURE__ */ (0,
|
|
21020
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21904
|
+
/* @__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: [
|
|
21905
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21906
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
21021
21907
|
] }) })
|
|
21022
21908
|
]
|
|
21023
21909
|
}
|
|
21024
21910
|
),
|
|
21025
|
-
/* @__PURE__ */ (0,
|
|
21911
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21026
21912
|
] });
|
|
21027
21913
|
}
|
|
21028
|
-
var
|
|
21914
|
+
var styles57 = import_react_native69.StyleSheet.create({
|
|
21029
21915
|
container: {
|
|
21030
21916
|
paddingHorizontal: spacing.lg,
|
|
21031
21917
|
paddingBottom: spacing.md,
|
|
21032
|
-
borderBottomWidth:
|
|
21918
|
+
borderBottomWidth: import_react_native69.StyleSheet.hairlineWidth
|
|
21033
21919
|
},
|
|
21034
21920
|
detailContainer: {
|
|
21035
21921
|
paddingBottom: spacing.sm
|
|
@@ -21075,6 +21961,21 @@ var styles55 = import_react_native67.StyleSheet.create({
|
|
|
21075
21961
|
alignItems: "center",
|
|
21076
21962
|
justifyContent: "center"
|
|
21077
21963
|
},
|
|
21964
|
+
iconButton: {
|
|
21965
|
+
width: MIN_TAP_TARGET,
|
|
21966
|
+
height: MIN_TAP_TARGET,
|
|
21967
|
+
alignItems: "center",
|
|
21968
|
+
justifyContent: "center"
|
|
21969
|
+
},
|
|
21970
|
+
// Matches the Flutter navbar's 34pt bordered circle.
|
|
21971
|
+
iconCircle: {
|
|
21972
|
+
width: 34,
|
|
21973
|
+
height: 34,
|
|
21974
|
+
borderRadius: 17,
|
|
21975
|
+
borderWidth: 1,
|
|
21976
|
+
alignItems: "center",
|
|
21977
|
+
justifyContent: "center"
|
|
21978
|
+
},
|
|
21078
21979
|
pageHeader: {
|
|
21079
21980
|
marginTop: spacing.sm
|
|
21080
21981
|
},
|
|
@@ -21109,10 +22010,10 @@ var styles55 = import_react_native67.StyleSheet.create({
|
|
|
21109
22010
|
});
|
|
21110
22011
|
|
|
21111
22012
|
// src/RedactoPrivacyCenter/components/BottomTabBar.tsx
|
|
21112
|
-
var
|
|
21113
|
-
var
|
|
21114
|
-
var
|
|
21115
|
-
var
|
|
22013
|
+
var import_react47 = require("react");
|
|
22014
|
+
var import_react_native70 = require("react-native");
|
|
22015
|
+
var import_react_i18next35 = require("react-i18next");
|
|
22016
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
21116
22017
|
var TAB_ITEMS = [
|
|
21117
22018
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
|
|
21118
22019
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
|
|
@@ -21123,10 +22024,10 @@ var PAD_H = spacing.lg;
|
|
|
21123
22024
|
var PILL_WIDTH = 56;
|
|
21124
22025
|
var PILL_HEIGHT = 34;
|
|
21125
22026
|
function BottomTabBar({ showFooter = true }) {
|
|
21126
|
-
const { t } = (0,
|
|
22027
|
+
const { t } = (0, import_react_i18next35.useTranslation)();
|
|
21127
22028
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
21128
22029
|
const { colors } = useTheme();
|
|
21129
|
-
const [rowWidth, setRowWidth] = (0,
|
|
22030
|
+
const [rowWidth, setRowWidth] = (0, import_react47.useState)(0);
|
|
21130
22031
|
const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
|
|
21131
22032
|
const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
|
|
21132
22033
|
const activeIndex = TAB_ITEMS.findIndex(
|
|
@@ -21134,13 +22035,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21134
22035
|
);
|
|
21135
22036
|
const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
|
|
21136
22037
|
const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
|
|
21137
|
-
return /* @__PURE__ */ (0,
|
|
21138
|
-
/* @__PURE__ */ (0,
|
|
21139
|
-
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0,
|
|
21140
|
-
|
|
22038
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
|
|
22039
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: styles58.container, onLayout, children: [
|
|
22040
|
+
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
22041
|
+
import_react_native70.Animated.View,
|
|
21141
22042
|
{
|
|
21142
22043
|
style: [
|
|
21143
|
-
|
|
22044
|
+
styles58.pill,
|
|
21144
22045
|
{
|
|
21145
22046
|
width: PILL_WIDTH,
|
|
21146
22047
|
left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
|
|
@@ -21153,17 +22054,17 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21153
22054
|
TAB_ITEMS.map((item) => {
|
|
21154
22055
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
21155
22056
|
const label = t(item.labelKey) || item.fallback;
|
|
21156
|
-
return /* @__PURE__ */ (0,
|
|
21157
|
-
|
|
22057
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
22058
|
+
import_react_native70.TouchableOpacity,
|
|
21158
22059
|
{
|
|
21159
|
-
style:
|
|
22060
|
+
style: styles58.tab,
|
|
21160
22061
|
onPress: () => navigateTo(item.page),
|
|
21161
22062
|
activeOpacity: 0.7,
|
|
21162
22063
|
accessibilityRole: "tab",
|
|
21163
22064
|
accessibilityState: { selected: isActive },
|
|
21164
22065
|
accessibilityLabel: label,
|
|
21165
22066
|
children: [
|
|
21166
|
-
/* @__PURE__ */ (0,
|
|
22067
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: styles58.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21167
22068
|
Icon,
|
|
21168
22069
|
{
|
|
21169
22070
|
name: item.icon,
|
|
@@ -21172,10 +22073,10 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21172
22073
|
strokeWidth: isActive ? 2.1 : 1.85
|
|
21173
22074
|
}
|
|
21174
22075
|
) }),
|
|
21175
|
-
/* @__PURE__ */ (0,
|
|
21176
|
-
|
|
22076
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
22077
|
+
import_react_native70.Text,
|
|
21177
22078
|
{
|
|
21178
|
-
style: [
|
|
22079
|
+
style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
|
|
21179
22080
|
numberOfLines: 1,
|
|
21180
22081
|
children: label
|
|
21181
22082
|
}
|
|
@@ -21186,13 +22087,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21186
22087
|
);
|
|
21187
22088
|
})
|
|
21188
22089
|
] }),
|
|
21189
|
-
showFooter ? /* @__PURE__ */ (0,
|
|
21190
|
-
/* @__PURE__ */ (0,
|
|
22090
|
+
showFooter ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Footer, { inline: true }) : null,
|
|
22091
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: { height: BOTTOM_INSET } })
|
|
21191
22092
|
] });
|
|
21192
22093
|
}
|
|
21193
|
-
var
|
|
22094
|
+
var styles58 = import_react_native70.StyleSheet.create({
|
|
21194
22095
|
wrapper: {
|
|
21195
|
-
borderTopWidth:
|
|
22096
|
+
borderTopWidth: import_react_native70.StyleSheet.hairlineWidth
|
|
21196
22097
|
},
|
|
21197
22098
|
container: {
|
|
21198
22099
|
flexDirection: "row",
|