@redacto.io/consent-sdk-react-native 5.0.0-beta.6 → 5.0.0-beta.8
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-UVRSRLYW.mjs → chunk-B2TXWC2C.mjs} +4 -0
- package/dist/index.d.mts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +141 -51
- package/dist/index.mjs +140 -52
- package/dist/privacy-center.d.mts +81 -4
- package/dist/privacy-center.d.ts +81 -4
- package/dist/privacy-center.js +1277 -572
- package/dist/privacy-center.mjs +1247 -544
- package/package.json +1 -1
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",
|
|
@@ -10236,9 +10480,13 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10236
10480
|
* used with its `{ purpose_uuid, contact, ... }` payload.
|
|
10237
10481
|
*/
|
|
10238
10482
|
async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, noticeUuid, dataElements, language) {
|
|
10239
|
-
if (!useLedger) {
|
|
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
|
}
|
|
@@ -10301,6 +10549,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10301
10549
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10302
10550
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10303
10551
|
if (language) queryParams.append("language", language);
|
|
10552
|
+
appendSandboxIdentity(queryParams);
|
|
10304
10553
|
const queryString = queryParams.toString();
|
|
10305
10554
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/activities${queryString ? `?${queryString}` : ""}`;
|
|
10306
10555
|
return privacyCenterApiFetch(url, {
|
|
@@ -10308,6 +10557,32 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10308
10557
|
authToken: authToken || baseRequest.authToken
|
|
10309
10558
|
});
|
|
10310
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
|
+
},
|
|
10311
10586
|
/**
|
|
10312
10587
|
* Get receipts (privacy center)
|
|
10313
10588
|
*/
|
|
@@ -10321,9 +10596,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10321
10596
|
if (params.created_before) queryParams.append("created_before", params.created_before);
|
|
10322
10597
|
if (params.notice_uuid) queryParams.append("notice_uuid", params.notice_uuid);
|
|
10323
10598
|
if (params.language) queryParams.append("language", params.language);
|
|
10599
|
+
appendSandboxIdentity(queryParams);
|
|
10324
10600
|
const queryString = queryParams.toString();
|
|
10325
10601
|
const receiptsSuffix = `/receipts${queryString ? `?${queryString}` : ""}`;
|
|
10326
|
-
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}`;
|
|
10327
10603
|
return privacyCenterApiFetch(url, {
|
|
10328
10604
|
...options,
|
|
10329
10605
|
method: "GET",
|
|
@@ -10337,11 +10613,16 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10337
10613
|
* the RN UI writes to a temp file to open/share. 404 => not found.
|
|
10338
10614
|
*/
|
|
10339
10615
|
async getReceiptPdf(baseRequest, receiptUuid, authToken) {
|
|
10340
|
-
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`;
|
|
10341
10617
|
const token = authToken || baseRequest.authToken;
|
|
10342
10618
|
const requestHeaders = new Headers();
|
|
10343
10619
|
requestHeaders.set("Accept", "application/pdf");
|
|
10344
|
-
|
|
10620
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10621
|
+
if (sandboxHeaders) {
|
|
10622
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10623
|
+
requestHeaders.set(key, value);
|
|
10624
|
+
});
|
|
10625
|
+
} else if (token) {
|
|
10345
10626
|
const trimmedToken = token.trim();
|
|
10346
10627
|
const bearerToken = trimmedToken.startsWith("Bearer ") ? trimmedToken : `Bearer ${trimmedToken}`;
|
|
10347
10628
|
requestHeaders.set("Authorization", bearerToken);
|
|
@@ -10367,6 +10648,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10367
10648
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10368
10649
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10369
10650
|
if (language) queryParams.append("language", language);
|
|
10651
|
+
appendSandboxIdentity(queryParams);
|
|
10370
10652
|
const queryString = queryParams.toString();
|
|
10371
10653
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases?${queryString}`;
|
|
10372
10654
|
return privacyCenterApiFetch(url, {
|
|
@@ -10378,7 +10660,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10378
10660
|
* Get case messages (privacy center)
|
|
10379
10661
|
*/
|
|
10380
10662
|
async getCaseMessages(baseRequest, caseUuid, authToken, options) {
|
|
10381
|
-
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()}`;
|
|
10382
10664
|
return privacyCenterApiFetch(url, {
|
|
10383
10665
|
...options,
|
|
10384
10666
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10388,7 +10670,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10388
10670
|
* Send a message in a case (privacy center)
|
|
10389
10671
|
*/
|
|
10390
10672
|
async sendCaseMessage(baseRequest, caseUuid, body, documentUuids, authToken, options) {
|
|
10391
|
-
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()}`;
|
|
10392
10674
|
return privacyCenterApiFetch(url, {
|
|
10393
10675
|
...options,
|
|
10394
10676
|
method: "POST",
|
|
@@ -10400,7 +10682,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10400
10682
|
* Upload a document for a case (privacy center)
|
|
10401
10683
|
*/
|
|
10402
10684
|
async uploadCaseDocument(baseRequest, caseUuid, formData, authToken, options) {
|
|
10403
|
-
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()}`;
|
|
10404
10686
|
return privacyCenterApiFetch(url, {
|
|
10405
10687
|
...options,
|
|
10406
10688
|
method: "POST",
|
|
@@ -10433,6 +10715,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10433
10715
|
if ((params == null ? void 0 : params.limit) !== void 0) queryParams.append("limit", params.limit.toString());
|
|
10434
10716
|
if (params == null ? void 0 : params.include_summary) queryParams.append("include_summary", "true");
|
|
10435
10717
|
if (params == null ? void 0 : params.language) queryParams.append("language", params.language);
|
|
10718
|
+
appendSandboxIdentity(queryParams);
|
|
10436
10719
|
const queryString = queryParams.toString();
|
|
10437
10720
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${queryString ? `?${queryString}` : ""}`;
|
|
10438
10721
|
return privacyCenterApiFetch(url, {
|
|
@@ -10444,7 +10727,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10444
10727
|
* Get notification summary (aggregated counts only)
|
|
10445
10728
|
*/
|
|
10446
10729
|
async getNotificationSummary(baseRequest, authToken) {
|
|
10447
|
-
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()}`;
|
|
10448
10731
|
return privacyCenterApiFetch(url, {
|
|
10449
10732
|
method: "GET",
|
|
10450
10733
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10454,7 +10737,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10454
10737
|
* Get unread notification count (lightweight, for the header badge)
|
|
10455
10738
|
*/
|
|
10456
10739
|
async getUnreadCount(baseRequest, authToken) {
|
|
10457
|
-
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()}`;
|
|
10458
10741
|
return privacyCenterApiFetch(url, {
|
|
10459
10742
|
method: "GET",
|
|
10460
10743
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10464,7 +10747,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10464
10747
|
* Mark a single notification as read
|
|
10465
10748
|
*/
|
|
10466
10749
|
async markNotificationRead(baseRequest, notificationUuid, authToken) {
|
|
10467
|
-
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()}`;
|
|
10468
10751
|
return privacyCenterApiFetch(url, {
|
|
10469
10752
|
method: "PATCH",
|
|
10470
10753
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10474,7 +10757,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10474
10757
|
* Mark all notifications as read
|
|
10475
10758
|
*/
|
|
10476
10759
|
async markAllNotificationsRead(baseRequest, authToken) {
|
|
10477
|
-
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()}`;
|
|
10478
10761
|
return privacyCenterApiFetch(url, {
|
|
10479
10762
|
method: "POST",
|
|
10480
10763
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10484,7 +10767,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10484
10767
|
* Acknowledge a notification (sets is_read and is_acknowledged to true)
|
|
10485
10768
|
*/
|
|
10486
10769
|
async acknowledgeNotification(baseRequest, notificationUuid, authToken) {
|
|
10487
|
-
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()}`;
|
|
10488
10771
|
return privacyCenterApiFetch(url, {
|
|
10489
10772
|
method: "POST",
|
|
10490
10773
|
authToken: authToken || baseRequest.authToken
|
|
@@ -11596,6 +11879,40 @@ var acknowledgeNotification = async (organizationId, workspaceId, notificationUu
|
|
|
11596
11879
|
var isRefreshing = false;
|
|
11597
11880
|
var refreshPromise = null;
|
|
11598
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
|
+
};
|
|
11599
11916
|
var tokenStore = {};
|
|
11600
11917
|
var getStoredValue = (key) => {
|
|
11601
11918
|
var _a3;
|
|
@@ -11677,11 +11994,16 @@ var compareEmails = (email1, email2) => {
|
|
|
11677
11994
|
return decodeURIComponent(email1.trim()).toLowerCase() === email2.trim().toLowerCase();
|
|
11678
11995
|
};
|
|
11679
11996
|
var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, consentClient) => {
|
|
11997
|
+
const sandbox = getSandboxConfig();
|
|
11998
|
+
if (sandbox) {
|
|
11999
|
+
return sandbox.token;
|
|
12000
|
+
}
|
|
11680
12001
|
const accessToken = (authContext == null ? void 0 : authContext.accessToken) || getStoredValue("access_token");
|
|
11681
12002
|
if (accessToken && typeof accessToken === "string" && accessToken.trim() !== "" && !isJwtExpired(accessToken, TOKEN_EXPIRY_BUFFER_SECONDS)) {
|
|
11682
12003
|
return accessToken;
|
|
11683
12004
|
}
|
|
11684
12005
|
if (isRefreshing && refreshPromise) return refreshPromise;
|
|
12006
|
+
if (isRefreshBlocked(authContext)) return null;
|
|
11685
12007
|
isRefreshing = true;
|
|
11686
12008
|
refreshPromise = performTokenRefresh(
|
|
11687
12009
|
organizationId,
|
|
@@ -11709,6 +12031,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11709
12031
|
if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
|
|
11710
12032
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11711
12033
|
authContext.onError(new Error("No refresh token available"));
|
|
12034
|
+
notifySessionExpired();
|
|
11712
12035
|
signOutPrivacyCenter();
|
|
11713
12036
|
return null;
|
|
11714
12037
|
}
|
|
@@ -11738,11 +12061,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11738
12061
|
if (newRefreshToken)
|
|
11739
12062
|
setStoredValue("refresh_token", newRefreshToken);
|
|
11740
12063
|
}
|
|
12064
|
+
resetRefreshCircuit();
|
|
11741
12065
|
return newAccessToken;
|
|
11742
12066
|
}
|
|
11743
12067
|
}
|
|
11744
12068
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11745
12069
|
authContext.onError(new Error("Refresh token expired or revoked"));
|
|
12070
|
+
markRefreshTokenDead(refreshToken);
|
|
11746
12071
|
signOutPrivacyCenter();
|
|
11747
12072
|
return null;
|
|
11748
12073
|
} catch (error) {
|
|
@@ -11750,7 +12075,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11750
12075
|
authContext.onError(
|
|
11751
12076
|
error instanceof Error ? error : new Error(String(error))
|
|
11752
12077
|
);
|
|
11753
|
-
|
|
12078
|
+
if (isTerminalRefreshError(error)) {
|
|
12079
|
+
markRefreshTokenDead(refreshToken);
|
|
12080
|
+
signOutPrivacyCenter();
|
|
12081
|
+
} else {
|
|
12082
|
+
noteTransientRefreshFailure();
|
|
12083
|
+
}
|
|
11754
12084
|
return null;
|
|
11755
12085
|
}
|
|
11756
12086
|
};
|
|
@@ -11814,15 +12144,73 @@ function syncJwtDataToStore(token) {
|
|
|
11814
12144
|
if (authData.workspaceId) setStoredValue("pc_workspace_id", authData.workspaceId);
|
|
11815
12145
|
return authData;
|
|
11816
12146
|
}
|
|
11817
|
-
function
|
|
11818
|
-
|
|
12147
|
+
function configureSandbox(props) {
|
|
12148
|
+
var _a3, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
12149
|
+
const token = (_a3 = props.token) == null ? void 0 : _a3.trim();
|
|
12150
|
+
if (!token) {
|
|
12151
|
+
setSandboxConfig(null);
|
|
12152
|
+
return null;
|
|
12153
|
+
}
|
|
12154
|
+
const organisationUuid = (_c = (_b = props.organisationUuid) == null ? void 0 : _b.trim()) != null ? _c : "";
|
|
12155
|
+
const workspaceUuid = (_e = (_d = props.workspaceUuid) == null ? void 0 : _d.trim()) != null ? _e : "";
|
|
12156
|
+
const ucic = (_g = (_f = props.sandboxUcic) == null ? void 0 : _f.trim()) != null ? _g : "";
|
|
12157
|
+
const subject = (_i = (_h = props.sandboxSubject) == null ? void 0 : _h.trim()) != null ? _i : "";
|
|
12158
|
+
const slug = (_k = (_j = props.slug) == null ? void 0 : _j.trim()) != null ? _k : "";
|
|
12159
|
+
if (!organisationUuid || !workspaceUuid) {
|
|
12160
|
+
throw new Error("Sandbox mode requires organisationUuid and workspaceUuid props");
|
|
12161
|
+
}
|
|
12162
|
+
if (!ucic && !subject) {
|
|
12163
|
+
throw new Error("Sandbox mode requires a UCIC, email, or mobile");
|
|
12164
|
+
}
|
|
12165
|
+
setSandboxConfig({
|
|
12166
|
+
token,
|
|
12167
|
+
ucic: ucic || void 0,
|
|
12168
|
+
subject,
|
|
12169
|
+
organisationUuid,
|
|
12170
|
+
workspaceUuid,
|
|
12171
|
+
slug
|
|
12172
|
+
});
|
|
12173
|
+
const contact = ucic || subject;
|
|
12174
|
+
setStoredValue("access_token", token);
|
|
12175
|
+
if (organisationUuid) setStoredValue("pc_org_id", organisationUuid);
|
|
12176
|
+
if (workspaceUuid) setStoredValue("pc_workspace_id", workspaceUuid);
|
|
12177
|
+
if (contact) setStoredValue("email", contact);
|
|
12178
|
+
return {
|
|
12179
|
+
email: contact || null,
|
|
12180
|
+
organizationId: organisationUuid || null,
|
|
12181
|
+
workspaceId: workspaceUuid || null,
|
|
12182
|
+
organizationName: null
|
|
12183
|
+
};
|
|
12184
|
+
}
|
|
12185
|
+
function AuthProvider(props) {
|
|
12186
|
+
const {
|
|
12187
|
+
children,
|
|
12188
|
+
accessToken: initialAccessToken,
|
|
12189
|
+
refreshToken: initialRefreshToken,
|
|
12190
|
+
token: sandboxToken,
|
|
12191
|
+
sandboxUcic,
|
|
12192
|
+
sandboxSubject,
|
|
12193
|
+
organisationUuid,
|
|
12194
|
+
workspaceUuid,
|
|
12195
|
+
slug,
|
|
12196
|
+
onError
|
|
12197
|
+
} = props;
|
|
12198
|
+
const [sandboxAuth] = (0, import_react3.useState)(() => configureSandbox(props));
|
|
12199
|
+
const sandboxActive = sandboxAuth !== null;
|
|
12200
|
+
const initialAuth = sandboxAuth != null ? sandboxAuth : extractJwtAuthData(initialAccessToken);
|
|
11819
12201
|
const [accessToken, setAccessToken] = (0, import_react3.useState)(() => {
|
|
12202
|
+
if (sandboxActive) {
|
|
12203
|
+
return sandboxToken != null ? sandboxToken : "";
|
|
12204
|
+
}
|
|
11820
12205
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11821
12206
|
syncJwtDataToStore(initialAccessToken);
|
|
11822
12207
|
}
|
|
11823
12208
|
return initialAccessToken;
|
|
11824
12209
|
});
|
|
11825
12210
|
const [refreshToken, setRefreshToken] = (0, import_react3.useState)(() => {
|
|
12211
|
+
if (sandboxActive) {
|
|
12212
|
+
return "";
|
|
12213
|
+
}
|
|
11826
12214
|
if (initialRefreshToken && initialRefreshToken.trim() !== "") {
|
|
11827
12215
|
setStoredValue("refresh_token", initialRefreshToken);
|
|
11828
12216
|
}
|
|
@@ -11833,6 +12221,20 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11833
12221
|
const [workspaceId, setWorkspaceId] = (0, import_react3.useState)(initialAuth.workspaceId);
|
|
11834
12222
|
const [organizationName, setOrganizationName] = (0, import_react3.useState)(initialAuth.organizationName);
|
|
11835
12223
|
(0, import_react3.useEffect)(() => {
|
|
12224
|
+
if (!sandboxActive) {
|
|
12225
|
+
return;
|
|
12226
|
+
}
|
|
12227
|
+
const seeded = configureSandbox(props);
|
|
12228
|
+
if (seeded) {
|
|
12229
|
+
setEmail(seeded.email);
|
|
12230
|
+
setOrganizationId(seeded.organizationId);
|
|
12231
|
+
setWorkspaceId(seeded.workspaceId);
|
|
12232
|
+
setOrganizationName(seeded.organizationName);
|
|
12233
|
+
}
|
|
12234
|
+
return () => setSandboxConfig(null);
|
|
12235
|
+
}, [sandboxActive, sandboxToken, sandboxUcic, sandboxSubject, organisationUuid, workspaceUuid, slug]);
|
|
12236
|
+
(0, import_react3.useEffect)(() => {
|
|
12237
|
+
if (sandboxActive) return;
|
|
11836
12238
|
if (accessToken) {
|
|
11837
12239
|
const authData = syncJwtDataToStore(accessToken);
|
|
11838
12240
|
setEmail(authData.email);
|
|
@@ -11840,11 +12242,13 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11840
12242
|
setWorkspaceId(authData.workspaceId);
|
|
11841
12243
|
setOrganizationName(authData.organizationName);
|
|
11842
12244
|
}
|
|
11843
|
-
}, [accessToken]);
|
|
12245
|
+
}, [accessToken, sandboxActive]);
|
|
11844
12246
|
(0, import_react3.useEffect)(() => {
|
|
12247
|
+
if (sandboxActive) return;
|
|
11845
12248
|
if (refreshToken) setStoredValue("refresh_token", refreshToken);
|
|
11846
|
-
}, [refreshToken]);
|
|
12249
|
+
}, [refreshToken, sandboxActive]);
|
|
11847
12250
|
(0, import_react3.useEffect)(() => {
|
|
12251
|
+
if (sandboxActive) return;
|
|
11848
12252
|
setAccessToken(initialAccessToken);
|
|
11849
12253
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11850
12254
|
const authData = syncJwtDataToStore(initialAccessToken);
|
|
@@ -11853,10 +12257,11 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11853
12257
|
setWorkspaceId(authData.workspaceId);
|
|
11854
12258
|
setOrganizationName(authData.organizationName);
|
|
11855
12259
|
}
|
|
11856
|
-
}, [initialAccessToken]);
|
|
12260
|
+
}, [initialAccessToken, sandboxActive]);
|
|
11857
12261
|
(0, import_react3.useEffect)(() => {
|
|
12262
|
+
if (sandboxActive) return;
|
|
11858
12263
|
setRefreshToken(initialRefreshToken);
|
|
11859
|
-
}, [initialRefreshToken]);
|
|
12264
|
+
}, [initialRefreshToken, sandboxActive]);
|
|
11860
12265
|
const updateTokens = (0, import_react3.useCallback)((newAccessToken, newRefreshToken) => {
|
|
11861
12266
|
setAccessToken(newAccessToken);
|
|
11862
12267
|
if (newRefreshToken) setRefreshToken(newRefreshToken);
|
|
@@ -12099,8 +12504,17 @@ function DataAvailabilityProvider({ children }) {
|
|
|
12099
12504
|
mountedRef.current = false;
|
|
12100
12505
|
};
|
|
12101
12506
|
}, []);
|
|
12507
|
+
(0, import_react7.useEffect)(() => {
|
|
12508
|
+
setSessionExpiredListener(() => {
|
|
12509
|
+
if (!mountedRef.current) return;
|
|
12510
|
+
runIdRef.current += 1;
|
|
12511
|
+
setStatus("session-expired");
|
|
12512
|
+
});
|
|
12513
|
+
return () => setSessionExpiredListener(null);
|
|
12514
|
+
}, []);
|
|
12102
12515
|
const runCheck = (0, import_react7.useCallback)(async () => {
|
|
12103
12516
|
if (!organizationId || !workspaceId) return;
|
|
12517
|
+
if (isRefreshBlocked(authContext)) return;
|
|
12104
12518
|
const runId = ++runIdRef.current;
|
|
12105
12519
|
setStatus("checking");
|
|
12106
12520
|
const contact = email;
|
|
@@ -14128,7 +14542,7 @@ var import_react_i18next11 = require("react-i18next");
|
|
|
14128
14542
|
|
|
14129
14543
|
// src/RedactoPrivacyCenter/lib/consentManagerUtils.ts
|
|
14130
14544
|
function purposeItemToUserConsent(purpose, group) {
|
|
14131
|
-
var _a3, _b, _c, _d;
|
|
14545
|
+
var _a3, _b, _c, _d, _e;
|
|
14132
14546
|
return {
|
|
14133
14547
|
purpose_uuid: purpose.purpose_uuid,
|
|
14134
14548
|
purpose: purpose.name,
|
|
@@ -14142,6 +14556,7 @@ function purposeItemToUserConsent(purpose, group) {
|
|
|
14142
14556
|
product_name: group.product_name,
|
|
14143
14557
|
product_description: group.product_description,
|
|
14144
14558
|
nominator_info: (_d = group.nominator) != null ? _d : void 0,
|
|
14559
|
+
revoke_warning_message: (_e = purpose.revoke_warning_message) != null ? _e : null,
|
|
14145
14560
|
notice_uuid: purpose.notice_uuid
|
|
14146
14561
|
};
|
|
14147
14562
|
}
|
|
@@ -14439,7 +14854,7 @@ var ModifyConsentModal = ({
|
|
|
14439
14854
|
action: "revoke",
|
|
14440
14855
|
buttonLabel: t("revokeConsent"),
|
|
14441
14856
|
buttonColor: colors.error,
|
|
14442
|
-
warningMessage: t("revokeConsentWarning"),
|
|
14857
|
+
warningMessage: selectedRecord.revoke_warning_message || t("revokeConsentWarning"),
|
|
14443
14858
|
description: nominatorLabel ? t("aboutToModifyConsentOnBehalf", { nominator: nominatorLabel }) : t("aboutToModifyConsent")
|
|
14444
14859
|
};
|
|
14445
14860
|
}
|
|
@@ -18139,6 +18554,7 @@ function useUnreadCount() {
|
|
|
18139
18554
|
const loadRef = (0, import_react32.useRef)();
|
|
18140
18555
|
loadRef.current = async () => {
|
|
18141
18556
|
if (!organizationId || !workspaceId) return;
|
|
18557
|
+
if (isRefreshBlocked(authContext)) return;
|
|
18142
18558
|
const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
|
|
18143
18559
|
if (res && typeof res.count === "number") setCount(res.count);
|
|
18144
18560
|
};
|
|
@@ -18464,17 +18880,255 @@ function PrivacyCenterEmptyState() {
|
|
|
18464
18880
|
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
|
|
18465
18881
|
}
|
|
18466
18882
|
|
|
18883
|
+
// src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
|
|
18884
|
+
var import_react_i18next21 = require("react-i18next");
|
|
18885
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
18886
|
+
function PrivacyCenterSessionExpired() {
|
|
18887
|
+
const { t } = (0, import_react_i18next21.useTranslation)();
|
|
18888
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
18889
|
+
PCEmpty,
|
|
18890
|
+
{
|
|
18891
|
+
iconName: "shield",
|
|
18892
|
+
title: t("sessionExpiredTitle"),
|
|
18893
|
+
description: t("sessionExpiredDescription")
|
|
18894
|
+
}
|
|
18895
|
+
);
|
|
18896
|
+
}
|
|
18897
|
+
|
|
18898
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
18899
|
+
var import_react36 = require("react");
|
|
18900
|
+
var import_react_native51 = require("react-native");
|
|
18901
|
+
|
|
18902
|
+
// src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
|
|
18903
|
+
var import_react35 = require("react");
|
|
18904
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
18905
|
+
var ProfileSwitchContext = (0, import_react35.createContext)({
|
|
18906
|
+
switchProfile: null
|
|
18907
|
+
});
|
|
18908
|
+
function ProfileSwitchProvider({
|
|
18909
|
+
switchProfile,
|
|
18910
|
+
children
|
|
18911
|
+
}) {
|
|
18912
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
|
|
18913
|
+
}
|
|
18914
|
+
function useProfileSwitch() {
|
|
18915
|
+
return (0, import_react35.useContext)(ProfileSwitchContext);
|
|
18916
|
+
}
|
|
18917
|
+
|
|
18918
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18919
|
+
var import_react_native50 = require("react-native");
|
|
18920
|
+
var import_react_i18next22 = require("react-i18next");
|
|
18921
|
+
|
|
18922
|
+
// src/RedactoPrivacyCenter/lib/identityLabels.ts
|
|
18923
|
+
var identityPrimaryValue = (candidate) => {
|
|
18924
|
+
const orgUserId = candidate.org_user_id || "";
|
|
18925
|
+
const email = candidate.primary_email || "";
|
|
18926
|
+
const mobile = candidate.primary_mobile || "";
|
|
18927
|
+
return { orgUserId, fallback: email || mobile || candidate.uuid };
|
|
18928
|
+
};
|
|
18929
|
+
var identitySecondaryLabels = (candidate, primaryLabel) => {
|
|
18930
|
+
const email = candidate.primary_email || "";
|
|
18931
|
+
const mobile = candidate.primary_mobile || "";
|
|
18932
|
+
return [email, mobile].filter(
|
|
18933
|
+
(value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
|
|
18934
|
+
);
|
|
18935
|
+
};
|
|
18936
|
+
var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
|
|
18937
|
+
|
|
18938
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18939
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
18940
|
+
var SelectUser = ({
|
|
18941
|
+
candidates,
|
|
18942
|
+
onSelect,
|
|
18943
|
+
busyUuid,
|
|
18944
|
+
error
|
|
18945
|
+
}) => {
|
|
18946
|
+
const { t } = (0, import_react_i18next22.useTranslation)();
|
|
18947
|
+
const { colors } = useTheme();
|
|
18948
|
+
const selectable = selectableIdentities(candidates);
|
|
18949
|
+
const busy = busyUuid !== null;
|
|
18950
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.ScrollView, { contentContainerStyle: styles39.container, children: [
|
|
18951
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
|
|
18952
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
|
|
18953
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
|
|
18954
|
+
selectable.map((candidate) => {
|
|
18955
|
+
const { orgUserId, fallback } = identityPrimaryValue(candidate);
|
|
18956
|
+
const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
|
|
18957
|
+
const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
|
|
18958
|
+
const isBusy = busyUuid === candidate.uuid;
|
|
18959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
18960
|
+
import_react_native50.TouchableOpacity,
|
|
18961
|
+
{
|
|
18962
|
+
accessibilityRole: "button",
|
|
18963
|
+
disabled: busy,
|
|
18964
|
+
onPress: () => onSelect(candidate.uuid),
|
|
18965
|
+
style: [
|
|
18966
|
+
styles39.row,
|
|
18967
|
+
{
|
|
18968
|
+
backgroundColor: colors.surface,
|
|
18969
|
+
borderColor: isBusy ? colors.primary : colors.border
|
|
18970
|
+
}
|
|
18971
|
+
],
|
|
18972
|
+
children: [
|
|
18973
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.View, { style: styles39.rowText, children: [
|
|
18974
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
|
|
18975
|
+
secondaryLabels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
18976
|
+
import_react_native50.Text,
|
|
18977
|
+
{
|
|
18978
|
+
style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
|
|
18979
|
+
children: label
|
|
18980
|
+
},
|
|
18981
|
+
label
|
|
18982
|
+
))
|
|
18983
|
+
] }),
|
|
18984
|
+
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 })
|
|
18985
|
+
]
|
|
18986
|
+
},
|
|
18987
|
+
candidate.uuid
|
|
18988
|
+
);
|
|
18989
|
+
})
|
|
18990
|
+
] });
|
|
18991
|
+
};
|
|
18992
|
+
var styles39 = import_react_native50.StyleSheet.create({
|
|
18993
|
+
container: { padding: spacing.lg },
|
|
18994
|
+
heading: { textAlign: "center" },
|
|
18995
|
+
subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
|
|
18996
|
+
error: { textAlign: "center", marginBottom: spacing.md },
|
|
18997
|
+
row: {
|
|
18998
|
+
flexDirection: "row",
|
|
18999
|
+
alignItems: "center",
|
|
19000
|
+
borderWidth: 1,
|
|
19001
|
+
borderRadius: radii.md,
|
|
19002
|
+
padding: spacing.md,
|
|
19003
|
+
marginBottom: spacing.sm
|
|
19004
|
+
},
|
|
19005
|
+
rowText: { flex: 1 },
|
|
19006
|
+
secondary: { marginTop: 2 }
|
|
19007
|
+
});
|
|
19008
|
+
|
|
19009
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
19010
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
19011
|
+
function SelectUserGate({ children }) {
|
|
19012
|
+
var _a3, _b;
|
|
19013
|
+
const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
|
|
19014
|
+
const { consentClient } = useBaseUrl();
|
|
19015
|
+
const { colors } = useTheme();
|
|
19016
|
+
const insets = useSafeInsets();
|
|
19017
|
+
const [phase, setPhase] = (0, import_react36.useState)("checking");
|
|
19018
|
+
const [candidates, setCandidates] = (0, import_react36.useState)([]);
|
|
19019
|
+
const [busyUuid, setBusyUuid] = (0, import_react36.useState)(null);
|
|
19020
|
+
const [selectError, setSelectError] = (0, import_react36.useState)(null);
|
|
19021
|
+
const [pinnedOrgUserId, setPinnedOrgUserId] = (0, import_react36.useState)(null);
|
|
19022
|
+
const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
|
|
19023
|
+
(0, import_react36.useEffect)(() => {
|
|
19024
|
+
let cancelled = false;
|
|
19025
|
+
if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
|
|
19026
|
+
setPhase("resolved");
|
|
19027
|
+
return;
|
|
19028
|
+
}
|
|
19029
|
+
const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
|
|
19030
|
+
setPhase(isPinned ? "resolved" : "checking");
|
|
19031
|
+
(async () => {
|
|
19032
|
+
var _a4;
|
|
19033
|
+
try {
|
|
19034
|
+
const res = await consentClient.listIdentities({
|
|
19035
|
+
organisationUuid: organizationId,
|
|
19036
|
+
workspaceUuid: workspaceId,
|
|
19037
|
+
authToken: accessToken
|
|
19038
|
+
});
|
|
19039
|
+
if (cancelled) return;
|
|
19040
|
+
const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
|
|
19041
|
+
setCandidates(list);
|
|
19042
|
+
setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
|
|
19043
|
+
} catch {
|
|
19044
|
+
if (cancelled) return;
|
|
19045
|
+
setCandidates([]);
|
|
19046
|
+
setPhase("resolved");
|
|
19047
|
+
}
|
|
19048
|
+
})();
|
|
19049
|
+
return () => {
|
|
19050
|
+
cancelled = true;
|
|
19051
|
+
};
|
|
19052
|
+
}, [organizationId, workspaceId, tokenOrgUserId]);
|
|
19053
|
+
const handleSelect = (0, import_react36.useCallback)(
|
|
19054
|
+
async (principalUuid) => {
|
|
19055
|
+
var _a4, _b2;
|
|
19056
|
+
if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
|
|
19057
|
+
setBusyUuid(principalUuid);
|
|
19058
|
+
setSelectError(null);
|
|
19059
|
+
try {
|
|
19060
|
+
const res = await consentClient.selectPrincipal(
|
|
19061
|
+
{
|
|
19062
|
+
organisationUuid: organizationId,
|
|
19063
|
+
workspaceUuid: workspaceId,
|
|
19064
|
+
authToken: accessToken
|
|
19065
|
+
},
|
|
19066
|
+
principalUuid
|
|
19067
|
+
);
|
|
19068
|
+
if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
|
|
19069
|
+
throw new Error("select-principal returned no tokens");
|
|
19070
|
+
}
|
|
19071
|
+
const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
|
|
19072
|
+
setPinnedOrgUserId(pinned);
|
|
19073
|
+
setPhase("resolved");
|
|
19074
|
+
updateTokens(res.token, res.refresh_token);
|
|
19075
|
+
} catch (error) {
|
|
19076
|
+
setSelectError(
|
|
19077
|
+
error instanceof Error ? error.message : "Failed to switch profile"
|
|
19078
|
+
);
|
|
19079
|
+
} finally {
|
|
19080
|
+
setBusyUuid(null);
|
|
19081
|
+
}
|
|
19082
|
+
},
|
|
19083
|
+
[accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
|
|
19084
|
+
);
|
|
19085
|
+
const canSwitch = candidates.length > 1;
|
|
19086
|
+
const switchProfile = (0, import_react36.useCallback)(() => {
|
|
19087
|
+
if (!canSwitch) return;
|
|
19088
|
+
setSelectError(null);
|
|
19089
|
+
setPhase("picking");
|
|
19090
|
+
}, [canSwitch]);
|
|
19091
|
+
if (phase === "checking" || phase === "picking") {
|
|
19092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19093
|
+
import_react_native51.View,
|
|
19094
|
+
{
|
|
19095
|
+
style: [
|
|
19096
|
+
styles40.screen,
|
|
19097
|
+
{
|
|
19098
|
+
backgroundColor: colors.canvasSubtle,
|
|
19099
|
+
paddingTop: insets.top,
|
|
19100
|
+
paddingBottom: insets.bottom
|
|
19101
|
+
}
|
|
19102
|
+
],
|
|
19103
|
+
children: phase === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
19104
|
+
SelectUser,
|
|
19105
|
+
{
|
|
19106
|
+
candidates,
|
|
19107
|
+
onSelect: handleSelect,
|
|
19108
|
+
busyUuid,
|
|
19109
|
+
error: selectError
|
|
19110
|
+
}
|
|
19111
|
+
)
|
|
19112
|
+
}
|
|
19113
|
+
);
|
|
19114
|
+
}
|
|
19115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
|
|
19116
|
+
}
|
|
19117
|
+
var styles40 = import_react_native51.StyleSheet.create({
|
|
19118
|
+
screen: { flex: 1 }
|
|
19119
|
+
});
|
|
19120
|
+
|
|
18467
19121
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
18468
|
-
var
|
|
18469
|
-
var
|
|
18470
|
-
var
|
|
19122
|
+
var import_react41 = require("react");
|
|
19123
|
+
var import_react_native59 = require("react-native");
|
|
19124
|
+
var import_react_i18next28 = require("react-i18next");
|
|
18471
19125
|
|
|
18472
19126
|
// src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
|
|
18473
|
-
var
|
|
18474
|
-
var
|
|
18475
|
-
var
|
|
19127
|
+
var import_react_native52 = require("react-native");
|
|
19128
|
+
var import_react_i18next23 = require("react-i18next");
|
|
19129
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
18476
19130
|
function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
18477
|
-
const { t } = (0,
|
|
19131
|
+
const { t } = (0, import_react_i18next23.useTranslation)();
|
|
18478
19132
|
const { colors } = useTheme();
|
|
18479
19133
|
const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
|
|
18480
19134
|
const details = selectedCase.request_details;
|
|
@@ -18506,36 +19160,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18506
19160
|
}
|
|
18507
19161
|
const description = selectedCase.description_display || selectedCase.description;
|
|
18508
19162
|
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);
|
|
18509
|
-
return /* @__PURE__ */ (0,
|
|
18510
|
-
/* @__PURE__ */ (0,
|
|
19163
|
+
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: [
|
|
19164
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.timeline, children: steps.map((step, i) => {
|
|
18511
19165
|
const isLast = i === steps.length - 1;
|
|
18512
|
-
return /* @__PURE__ */ (0,
|
|
18513
|
-
/* @__PURE__ */ (0,
|
|
18514
|
-
/* @__PURE__ */ (0,
|
|
18515
|
-
|
|
19166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.stepRow, children: [
|
|
19167
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.gutter, children: [
|
|
19168
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
19169
|
+
import_react_native52.View,
|
|
18516
19170
|
{
|
|
18517
19171
|
style: [
|
|
18518
|
-
|
|
19172
|
+
styles41.dot,
|
|
18519
19173
|
step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
|
|
18520
19174
|
],
|
|
18521
|
-
children: step.state === "done" ? /* @__PURE__ */ (0,
|
|
19175
|
+
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
|
|
18522
19176
|
}
|
|
18523
19177
|
),
|
|
18524
|
-
!isLast ? /* @__PURE__ */ (0,
|
|
19178
|
+
!isLast ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
|
|
18525
19179
|
] }),
|
|
18526
|
-
/* @__PURE__ */ (0,
|
|
18527
|
-
/* @__PURE__ */ (0,
|
|
18528
|
-
step.date ? /* @__PURE__ */ (0,
|
|
19180
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
|
|
19181
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
|
|
19182
|
+
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
|
|
18529
19183
|
] })
|
|
18530
19184
|
] }, `${step.label}-${i}`);
|
|
18531
19185
|
}) }),
|
|
18532
|
-
hasDetails ? /* @__PURE__ */ (0,
|
|
18533
|
-
description ? /* @__PURE__ */ (0,
|
|
18534
|
-
/* @__PURE__ */ (0,
|
|
18535
|
-
/* @__PURE__ */ (0,
|
|
19186
|
+
hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
19187
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19188
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
|
|
19189
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.descriptionText, { color: colors.text }], children: description })
|
|
18536
19190
|
] }) : null,
|
|
18537
|
-
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0,
|
|
18538
|
-
/* @__PURE__ */ (0,
|
|
19191
|
+
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19192
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
|
|
18539
19193
|
details.purposes.map((rawP, idx) => {
|
|
18540
19194
|
const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
|
|
18541
19195
|
const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
|
|
@@ -18543,10 +19197,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18543
19197
|
const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
|
|
18544
19198
|
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)) : [];
|
|
18545
19199
|
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 : [];
|
|
18546
|
-
return /* @__PURE__ */ (0,
|
|
18547
|
-
/* @__PURE__ */ (0,
|
|
18548
|
-
purposeDescription ? /* @__PURE__ */ (0,
|
|
18549
|
-
dataElements.length > 0 ? /* @__PURE__ */ (0,
|
|
19200
|
+
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: [
|
|
19201
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
|
|
19202
|
+
purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
|
|
19203
|
+
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: [
|
|
18550
19204
|
dataElementUuids.length,
|
|
18551
19205
|
" ",
|
|
18552
19206
|
t("dataElements") || "data elements"
|
|
@@ -18554,44 +19208,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18554
19208
|
] }, purposeId);
|
|
18555
19209
|
})
|
|
18556
19210
|
] }) : null,
|
|
18557
|
-
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ (0,
|
|
18558
|
-
/* @__PURE__ */ (0,
|
|
18559
|
-
details.correction_data.map((item, idx) => /* @__PURE__ */ (0,
|
|
18560
|
-
/* @__PURE__ */ (0,
|
|
18561
|
-
/* @__PURE__ */ (0,
|
|
18562
|
-
/* @__PURE__ */ (0,
|
|
18563
|
-
/* @__PURE__ */ (0,
|
|
18564
|
-
/* @__PURE__ */ (0,
|
|
19211
|
+
(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: [
|
|
19212
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
|
|
19213
|
+
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: [
|
|
19214
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
|
|
19215
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValues, children: [
|
|
19216
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19217
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
|
|
19218
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
|
|
18565
19219
|
] }),
|
|
18566
|
-
/* @__PURE__ */ (0,
|
|
18567
|
-
/* @__PURE__ */ (0,
|
|
18568
|
-
/* @__PURE__ */ (0,
|
|
18569
|
-
/* @__PURE__ */ (0,
|
|
19220
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
19221
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
|
|
19222
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
|
|
19223
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
|
|
18570
19224
|
] })
|
|
18571
19225
|
] })
|
|
18572
19226
|
] }, idx))
|
|
18573
19227
|
] }) : null,
|
|
18574
|
-
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0,
|
|
18575
|
-
/* @__PURE__ */ (0,
|
|
18576
|
-
/* @__PURE__ */ (0,
|
|
19228
|
+
(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: [
|
|
19229
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
|
|
19230
|
+
/* @__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)) })
|
|
18577
19231
|
] }) : null,
|
|
18578
|
-
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0,
|
|
18579
|
-
/* @__PURE__ */ (0,
|
|
18580
|
-
details.nomination_data.nominee_email ? /* @__PURE__ */ (0,
|
|
18581
|
-
/* @__PURE__ */ (0,
|
|
18582
|
-
/* @__PURE__ */ (0,
|
|
19232
|
+
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
|
|
19233
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
|
|
19234
|
+
details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19235
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
|
|
19236
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
|
|
18583
19237
|
] }) : null,
|
|
18584
|
-
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0,
|
|
18585
|
-
/* @__PURE__ */ (0,
|
|
18586
|
-
/* @__PURE__ */ (0,
|
|
19238
|
+
details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
|
|
19239
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
|
|
19240
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
|
|
18587
19241
|
] }) : null
|
|
18588
19242
|
] }) : null
|
|
18589
19243
|
] }) : null,
|
|
18590
|
-
/* @__PURE__ */ (0,
|
|
19244
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Footer, {}) })
|
|
18591
19245
|
] });
|
|
18592
19246
|
}
|
|
18593
19247
|
var DOT = 22;
|
|
18594
|
-
var
|
|
19248
|
+
var styles41 = import_react_native52.StyleSheet.create({
|
|
18595
19249
|
container: {
|
|
18596
19250
|
flex: 1
|
|
18597
19251
|
},
|
|
@@ -18712,51 +19366,51 @@ var styles39 = import_react_native50.StyleSheet.create({
|
|
|
18712
19366
|
});
|
|
18713
19367
|
|
|
18714
19368
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
18715
|
-
var
|
|
18716
|
-
var
|
|
18717
|
-
var
|
|
19369
|
+
var import_react40 = require("react");
|
|
19370
|
+
var import_react_native58 = require("react-native");
|
|
19371
|
+
var import_react_i18next27 = require("react-i18next");
|
|
18718
19372
|
|
|
18719
19373
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18720
|
-
var
|
|
18721
|
-
var
|
|
19374
|
+
var import_react38 = __toESM(require("react"));
|
|
19375
|
+
var import_react_i18next25 = require("react-i18next");
|
|
18722
19376
|
|
|
18723
19377
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18724
|
-
var
|
|
18725
|
-
var
|
|
19378
|
+
var import_react37 = __toESM(require("react"));
|
|
19379
|
+
var import_react_native54 = require("react-native");
|
|
18726
19380
|
|
|
18727
19381
|
// src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
|
|
18728
|
-
var
|
|
18729
|
-
var
|
|
19382
|
+
var import_react_native53 = require("react-native");
|
|
19383
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
18730
19384
|
function AttachmentCard({ doc }) {
|
|
18731
19385
|
const { colors } = useTheme();
|
|
18732
19386
|
const downloadUrl = getDownloadUrl(doc.file_url);
|
|
18733
19387
|
const handlePress = () => {
|
|
18734
19388
|
if (downloadUrl) {
|
|
18735
|
-
|
|
19389
|
+
import_react_native53.Linking.openURL(downloadUrl);
|
|
18736
19390
|
}
|
|
18737
19391
|
};
|
|
18738
|
-
return /* @__PURE__ */ (0,
|
|
18739
|
-
|
|
19392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
19393
|
+
import_react_native53.TouchableOpacity,
|
|
18740
19394
|
{
|
|
18741
|
-
style: [
|
|
19395
|
+
style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
|
|
18742
19396
|
onPress: handlePress,
|
|
18743
19397
|
disabled: !downloadUrl,
|
|
18744
19398
|
activeOpacity: 0.7,
|
|
18745
19399
|
children: [
|
|
18746
|
-
/* @__PURE__ */ (0,
|
|
18747
|
-
/* @__PURE__ */ (0,
|
|
18748
|
-
/* @__PURE__ */ (0,
|
|
18749
|
-
doc.file_size ? /* @__PURE__ */ (0,
|
|
19400
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
|
|
19401
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react_native53.View, { style: styles42.info, children: [
|
|
19402
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
|
|
19403
|
+
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
|
|
18750
19404
|
] })
|
|
18751
19405
|
]
|
|
18752
19406
|
}
|
|
18753
19407
|
);
|
|
18754
19408
|
}
|
|
18755
|
-
var
|
|
19409
|
+
var styles42 = import_react_native53.StyleSheet.create({
|
|
18756
19410
|
container: {
|
|
18757
19411
|
flexDirection: "row",
|
|
18758
19412
|
alignItems: "center",
|
|
18759
|
-
borderWidth:
|
|
19413
|
+
borderWidth: import_react_native53.StyleSheet.hairlineWidth,
|
|
18760
19414
|
borderRadius: radii.md,
|
|
18761
19415
|
paddingHorizontal: spacing.sm + 2,
|
|
18762
19416
|
paddingVertical: spacing.sm,
|
|
@@ -18776,11 +19430,11 @@ var styles40 = import_react_native51.StyleSheet.create({
|
|
|
18776
19430
|
});
|
|
18777
19431
|
|
|
18778
19432
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18779
|
-
var
|
|
19433
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
18780
19434
|
var AVATAR_SIZE = 28;
|
|
18781
19435
|
var AVATAR_GUTTER = 36;
|
|
18782
19436
|
function TeamAvatar({ tint }) {
|
|
18783
|
-
return /* @__PURE__ */ (0,
|
|
19437
|
+
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 }) });
|
|
18784
19438
|
}
|
|
18785
19439
|
function ChatBubbleImpl({
|
|
18786
19440
|
message,
|
|
@@ -18807,28 +19461,28 @@ function ChatBubbleImpl({
|
|
|
18807
19461
|
borderBottomRightRadius: BUBBLE_RADIUS,
|
|
18808
19462
|
borderBottomLeftRadius: tailRadius
|
|
18809
19463
|
};
|
|
18810
|
-
const bubble = /* @__PURE__ */ (0,
|
|
18811
|
-
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0,
|
|
18812
|
-
message.body ? /* @__PURE__ */ (0,
|
|
18813
|
-
message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0,
|
|
19464
|
+
const bubble = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.bubble, bubbleStyle], children: [
|
|
19465
|
+
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
|
|
19466
|
+
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,
|
|
19467
|
+
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
|
|
18814
19468
|
] });
|
|
18815
|
-
return /* @__PURE__ */ (0,
|
|
18816
|
-
|
|
19469
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
19470
|
+
import_react_native54.View,
|
|
18817
19471
|
{
|
|
18818
19472
|
style: [
|
|
18819
|
-
|
|
18820
|
-
isPrincipal ?
|
|
19473
|
+
styles43.row,
|
|
19474
|
+
isPrincipal ? styles43.rowRight : styles43.rowLeft,
|
|
18821
19475
|
{ marginTop: isFirstInGroup ? spacing.md : 2 }
|
|
18822
19476
|
],
|
|
18823
19477
|
children: [
|
|
18824
|
-
!isPrincipal ? /* @__PURE__ */ (0,
|
|
18825
|
-
/* @__PURE__ */ (0,
|
|
19478
|
+
!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,
|
|
19479
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
|
|
18826
19480
|
bubble,
|
|
18827
|
-
isLastInGroup ? /* @__PURE__ */ (0,
|
|
18828
|
-
|
|
19481
|
+
isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
19482
|
+
import_react_native54.Text,
|
|
18829
19483
|
{
|
|
18830
19484
|
style: [
|
|
18831
|
-
|
|
19485
|
+
styles43.timestamp,
|
|
18832
19486
|
{ color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
|
|
18833
19487
|
],
|
|
18834
19488
|
children: formatMessageTime(timestamp)
|
|
@@ -18839,8 +19493,8 @@ function ChatBubbleImpl({
|
|
|
18839
19493
|
}
|
|
18840
19494
|
);
|
|
18841
19495
|
}
|
|
18842
|
-
var ChatBubble =
|
|
18843
|
-
var
|
|
19496
|
+
var ChatBubble = import_react37.default.memo(ChatBubbleImpl);
|
|
19497
|
+
var styles43 = import_react_native54.StyleSheet.create({
|
|
18844
19498
|
row: {
|
|
18845
19499
|
flexDirection: "row",
|
|
18846
19500
|
paddingHorizontal: spacing.md,
|
|
@@ -18900,9 +19554,9 @@ var styles41 = import_react_native52.StyleSheet.create({
|
|
|
18900
19554
|
});
|
|
18901
19555
|
|
|
18902
19556
|
// src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
|
|
18903
|
-
var
|
|
18904
|
-
var
|
|
18905
|
-
var
|
|
19557
|
+
var import_react_native55 = require("react-native");
|
|
19558
|
+
var import_react_i18next24 = require("react-i18next");
|
|
19559
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
18906
19560
|
var STATUS_BADGE_MAP = {
|
|
18907
19561
|
pending: "warning",
|
|
18908
19562
|
under_review: "info",
|
|
@@ -18922,20 +19576,20 @@ function humanize(value) {
|
|
|
18922
19576
|
}
|
|
18923
19577
|
function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
|
|
18924
19578
|
var _a3;
|
|
18925
|
-
const { t } = (0,
|
|
19579
|
+
const { t } = (0, import_react_i18next24.useTranslation)();
|
|
18926
19580
|
const { colors } = useTheme();
|
|
18927
19581
|
const meta = message.document_request_metadata;
|
|
18928
19582
|
if (!meta) return null;
|
|
18929
19583
|
const status = meta.document_request_status;
|
|
18930
19584
|
const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
|
|
18931
19585
|
const requestEventUuid = meta.document_request_uuid;
|
|
18932
|
-
return /* @__PURE__ */ (0,
|
|
18933
|
-
/* @__PURE__ */ (0,
|
|
18934
|
-
/* @__PURE__ */ (0,
|
|
18935
|
-
/* @__PURE__ */ (0,
|
|
18936
|
-
/* @__PURE__ */ (0,
|
|
19586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
|
|
19587
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.header, children: [
|
|
19588
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.titleRow, children: [
|
|
19589
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
|
|
19590
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
|
|
18937
19591
|
] }),
|
|
18938
|
-
/* @__PURE__ */ (0,
|
|
19592
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
18939
19593
|
PCBadge,
|
|
18940
19594
|
{
|
|
18941
19595
|
status: STATUS_BADGE_MAP[status] || "info",
|
|
@@ -18943,30 +19597,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
|
|
|
18943
19597
|
}
|
|
18944
19598
|
)
|
|
18945
19599
|
] }),
|
|
18946
|
-
meta.accepted_document ? /* @__PURE__ */ (0,
|
|
19600
|
+
meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
|
|
18947
19601
|
accepted: meta.accepted_document,
|
|
18948
19602
|
defaultValue: `Accepted: ${meta.accepted_document}`
|
|
18949
19603
|
}) }) : null,
|
|
18950
|
-
meta.rejection_reason ? /* @__PURE__ */ (0,
|
|
18951
|
-
/* @__PURE__ */ (0,
|
|
19604
|
+
meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
|
|
19605
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.Text, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
|
|
18952
19606
|
t("rejectionReasonLabel") || "Rejection reason",
|
|
18953
19607
|
":"
|
|
18954
19608
|
] }),
|
|
18955
|
-
/* @__PURE__ */ (0,
|
|
19609
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
|
|
18956
19610
|
] }) : null,
|
|
18957
|
-
canUpload && requestEventUuid ? /* @__PURE__ */ (0,
|
|
18958
|
-
|
|
19611
|
+
canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
19612
|
+
import_react_native55.TouchableOpacity,
|
|
18959
19613
|
{
|
|
18960
|
-
style: [
|
|
19614
|
+
style: [styles44.uploadButton, { backgroundColor: colors.primary }],
|
|
18961
19615
|
onPress: () => onUpload(requestEventUuid),
|
|
18962
19616
|
disabled: isSubmitting,
|
|
18963
19617
|
activeOpacity: 0.7,
|
|
18964
|
-
children: /* @__PURE__ */ (0,
|
|
19618
|
+
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" })
|
|
18965
19619
|
}
|
|
18966
19620
|
) : null
|
|
18967
19621
|
] });
|
|
18968
19622
|
}
|
|
18969
|
-
var
|
|
19623
|
+
var styles44 = import_react_native55.StyleSheet.create({
|
|
18970
19624
|
container: {
|
|
18971
19625
|
borderWidth: 1.5,
|
|
18972
19626
|
borderStyle: "dashed",
|
|
@@ -19019,20 +19673,20 @@ var styles42 = import_react_native53.StyleSheet.create({
|
|
|
19019
19673
|
});
|
|
19020
19674
|
|
|
19021
19675
|
// src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
|
|
19022
|
-
var
|
|
19023
|
-
var
|
|
19676
|
+
var import_react_native56 = require("react-native");
|
|
19677
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
19024
19678
|
function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
|
|
19025
19679
|
const { colors } = useTheme();
|
|
19026
|
-
return /* @__PURE__ */ (0,
|
|
19027
|
-
/* @__PURE__ */ (0,
|
|
19028
|
-
/* @__PURE__ */ (0,
|
|
19029
|
-
/* @__PURE__ */ (0,
|
|
19030
|
-
subText ? /* @__PURE__ */ (0,
|
|
19680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: bgColor }], children: [
|
|
19681
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.View, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
|
|
19682
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: styles45.textContainer, children: [
|
|
19683
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.text, { color }], children: text }),
|
|
19684
|
+
subText ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
|
|
19031
19685
|
] }),
|
|
19032
|
-
/* @__PURE__ */ (0,
|
|
19686
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
|
|
19033
19687
|
] });
|
|
19034
19688
|
}
|
|
19035
|
-
var
|
|
19689
|
+
var styles45 = import_react_native56.StyleSheet.create({
|
|
19036
19690
|
container: {
|
|
19037
19691
|
flexDirection: "row",
|
|
19038
19692
|
alignItems: "center",
|
|
@@ -19071,10 +19725,10 @@ var styles43 = import_react_native54.StyleSheet.create({
|
|
|
19071
19725
|
});
|
|
19072
19726
|
|
|
19073
19727
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
19074
|
-
var
|
|
19075
|
-
var CheckIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19076
|
-
var XIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19077
|
-
var RefreshIcon = ({ color }) => /* @__PURE__ */ (0,
|
|
19728
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
19729
|
+
var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
|
|
19730
|
+
var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
|
|
19731
|
+
var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
|
|
19078
19732
|
function MessageItemImpl({
|
|
19079
19733
|
message,
|
|
19080
19734
|
onUploadForRequest,
|
|
@@ -19084,14 +19738,14 @@ function MessageItemImpl({
|
|
|
19084
19738
|
isLastInGroup = true
|
|
19085
19739
|
}) {
|
|
19086
19740
|
var _a3, _b;
|
|
19087
|
-
const { t } = (0,
|
|
19741
|
+
const { t } = (0, import_react_i18next25.useTranslation)();
|
|
19088
19742
|
const isPrincipal = message.sender_role === "data_principal";
|
|
19089
19743
|
const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
|
|
19090
19744
|
switch (message.message_type) {
|
|
19091
19745
|
case "message_sent":
|
|
19092
19746
|
case "document_submitted":
|
|
19093
19747
|
case "document_replaced":
|
|
19094
|
-
return /* @__PURE__ */ (0,
|
|
19748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19095
19749
|
ChatBubble,
|
|
19096
19750
|
{
|
|
19097
19751
|
message,
|
|
@@ -19103,8 +19757,8 @@ function MessageItemImpl({
|
|
|
19103
19757
|
}
|
|
19104
19758
|
);
|
|
19105
19759
|
case "document_requested":
|
|
19106
|
-
return /* @__PURE__ */ (0,
|
|
19107
|
-
/* @__PURE__ */ (0,
|
|
19760
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
|
|
19761
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19108
19762
|
ChatBubble,
|
|
19109
19763
|
{
|
|
19110
19764
|
message,
|
|
@@ -19115,7 +19769,7 @@ function MessageItemImpl({
|
|
|
19115
19769
|
isLastInGroup
|
|
19116
19770
|
}
|
|
19117
19771
|
),
|
|
19118
|
-
/* @__PURE__ */ (0,
|
|
19772
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19119
19773
|
DocumentRequestCard,
|
|
19120
19774
|
{
|
|
19121
19775
|
message,
|
|
@@ -19126,10 +19780,10 @@ function MessageItemImpl({
|
|
|
19126
19780
|
)
|
|
19127
19781
|
] });
|
|
19128
19782
|
case "document_approved":
|
|
19129
|
-
return /* @__PURE__ */ (0,
|
|
19783
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19130
19784
|
StatusEvent,
|
|
19131
19785
|
{
|
|
19132
|
-
icon: /* @__PURE__ */ (0,
|
|
19786
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { color: "#059669" }),
|
|
19133
19787
|
color: "#059669",
|
|
19134
19788
|
bgColor: "rgba(16, 185, 129, 0.08)",
|
|
19135
19789
|
borderColor: "rgba(16, 185, 129, 0.2)",
|
|
@@ -19138,10 +19792,10 @@ function MessageItemImpl({
|
|
|
19138
19792
|
}
|
|
19139
19793
|
);
|
|
19140
19794
|
case "document_rejected":
|
|
19141
|
-
return /* @__PURE__ */ (0,
|
|
19795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19142
19796
|
StatusEvent,
|
|
19143
19797
|
{
|
|
19144
|
-
icon: /* @__PURE__ */ (0,
|
|
19798
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(XIcon, { color: "#DC2626" }),
|
|
19145
19799
|
color: "#DC2626",
|
|
19146
19800
|
bgColor: "rgba(220, 38, 38, 0.08)",
|
|
19147
19801
|
borderColor: "rgba(220, 38, 38, 0.2)",
|
|
@@ -19151,10 +19805,10 @@ function MessageItemImpl({
|
|
|
19151
19805
|
}
|
|
19152
19806
|
);
|
|
19153
19807
|
case "document_replacement_requested":
|
|
19154
|
-
return /* @__PURE__ */ (0,
|
|
19808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19155
19809
|
StatusEvent,
|
|
19156
19810
|
{
|
|
19157
|
-
icon: /* @__PURE__ */ (0,
|
|
19811
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RefreshIcon, { color: "#D97706" }),
|
|
19158
19812
|
color: "#D97706",
|
|
19159
19813
|
bgColor: "rgba(245, 158, 11, 0.08)",
|
|
19160
19814
|
borderColor: "rgba(245, 158, 11, 0.2)",
|
|
@@ -19164,7 +19818,7 @@ function MessageItemImpl({
|
|
|
19164
19818
|
}
|
|
19165
19819
|
);
|
|
19166
19820
|
default:
|
|
19167
|
-
return /* @__PURE__ */ (0,
|
|
19821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
19168
19822
|
ChatBubble,
|
|
19169
19823
|
{
|
|
19170
19824
|
message,
|
|
@@ -19177,13 +19831,13 @@ function MessageItemImpl({
|
|
|
19177
19831
|
);
|
|
19178
19832
|
}
|
|
19179
19833
|
}
|
|
19180
|
-
var MessageItem =
|
|
19834
|
+
var MessageItem = import_react38.default.memo(MessageItemImpl);
|
|
19181
19835
|
|
|
19182
19836
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
|
|
19183
|
-
var
|
|
19184
|
-
var
|
|
19185
|
-
var
|
|
19186
|
-
var
|
|
19837
|
+
var import_react39 = require("react");
|
|
19838
|
+
var import_react_native57 = require("react-native");
|
|
19839
|
+
var import_react_i18next26 = require("react-i18next");
|
|
19840
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
19187
19841
|
function MessageComposer({
|
|
19188
19842
|
messageText,
|
|
19189
19843
|
onMessageTextChange,
|
|
@@ -19195,15 +19849,15 @@ function MessageComposer({
|
|
|
19195
19849
|
isUploading,
|
|
19196
19850
|
isCaseFinalized = false
|
|
19197
19851
|
}) {
|
|
19198
|
-
const { t } = (0,
|
|
19852
|
+
const { t } = (0, import_react_i18next26.useTranslation)();
|
|
19199
19853
|
const { colors } = useTheme();
|
|
19200
19854
|
const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
|
|
19201
|
-
const activate = (0,
|
|
19202
|
-
(0,
|
|
19203
|
-
|
|
19855
|
+
const activate = (0, import_react39.useRef)(new import_react_native57.Animated.Value(canSend ? 1 : 0)).current;
|
|
19856
|
+
(0, import_react39.useEffect)(() => {
|
|
19857
|
+
import_react_native57.Animated.timing(activate, {
|
|
19204
19858
|
toValue: canSend ? 1 : 0,
|
|
19205
19859
|
duration: 180,
|
|
19206
|
-
easing:
|
|
19860
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.quad),
|
|
19207
19861
|
useNativeDriver: false
|
|
19208
19862
|
}).start();
|
|
19209
19863
|
}, [canSend, activate]);
|
|
@@ -19211,30 +19865,30 @@ function MessageComposer({
|
|
|
19211
19865
|
inputRange: [0, 1],
|
|
19212
19866
|
outputRange: [colors.border, colors.primary]
|
|
19213
19867
|
});
|
|
19214
|
-
const pressScale = (0,
|
|
19868
|
+
const pressScale = (0, import_react39.useRef)(new import_react_native57.Animated.Value(1)).current;
|
|
19215
19869
|
const handlePressIn = () => {
|
|
19216
|
-
|
|
19870
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
|
|
19217
19871
|
};
|
|
19218
19872
|
const handlePressOut = () => {
|
|
19219
|
-
|
|
19873
|
+
import_react_native57.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
|
|
19220
19874
|
};
|
|
19221
|
-
const pillIn = (0,
|
|
19222
|
-
(0,
|
|
19223
|
-
|
|
19875
|
+
const pillIn = (0, import_react39.useRef)(new import_react_native57.Animated.Value(0)).current;
|
|
19876
|
+
(0, import_react39.useEffect)(() => {
|
|
19877
|
+
import_react_native57.Animated.timing(pillIn, {
|
|
19224
19878
|
toValue: pendingUpload ? 1 : 0,
|
|
19225
19879
|
duration: 220,
|
|
19226
|
-
easing:
|
|
19880
|
+
easing: import_react_native57.Easing.out(import_react_native57.Easing.cubic),
|
|
19227
19881
|
useNativeDriver: true
|
|
19228
19882
|
}).start();
|
|
19229
19883
|
}, [pendingUpload, pillIn]);
|
|
19230
19884
|
const pillOpacity = pillIn;
|
|
19231
19885
|
const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
|
|
19232
|
-
return /* @__PURE__ */ (0,
|
|
19233
|
-
pendingUpload && /* @__PURE__ */ (0,
|
|
19234
|
-
|
|
19886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
|
|
19887
|
+
pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
19888
|
+
import_react_native57.Animated.View,
|
|
19235
19889
|
{
|
|
19236
19890
|
style: [
|
|
19237
|
-
|
|
19891
|
+
styles46.uploadPill,
|
|
19238
19892
|
{
|
|
19239
19893
|
backgroundColor: colors.primarySoft,
|
|
19240
19894
|
opacity: pillOpacity,
|
|
@@ -19242,34 +19896,34 @@ function MessageComposer({
|
|
|
19242
19896
|
}
|
|
19243
19897
|
],
|
|
19244
19898
|
children: [
|
|
19245
|
-
/* @__PURE__ */ (0,
|
|
19246
|
-
/* @__PURE__ */ (0,
|
|
19899
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
|
|
19900
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.Text, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
|
|
19247
19901
|
pendingUpload.file_name,
|
|
19248
19902
|
" (",
|
|
19249
19903
|
formatFileSize(pendingUpload.file_size),
|
|
19250
19904
|
")"
|
|
19251
19905
|
] }),
|
|
19252
|
-
/* @__PURE__ */ (0,
|
|
19906
|
+
/* @__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 }) })
|
|
19253
19907
|
]
|
|
19254
19908
|
}
|
|
19255
19909
|
),
|
|
19256
|
-
/* @__PURE__ */ (0,
|
|
19257
|
-
/* @__PURE__ */ (0,
|
|
19258
|
-
|
|
19910
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
|
|
19911
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19912
|
+
import_react_native57.TouchableOpacity,
|
|
19259
19913
|
{
|
|
19260
|
-
style:
|
|
19914
|
+
style: styles46.attachButton,
|
|
19261
19915
|
onPress: onAttachClick,
|
|
19262
19916
|
disabled: isUploading || isCaseFinalized,
|
|
19263
19917
|
activeOpacity: 0.6,
|
|
19264
19918
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
19265
19919
|
accessibilityLabel: t("uploadFile") || "Attach file",
|
|
19266
|
-
children: isUploading ? /* @__PURE__ */ (0,
|
|
19920
|
+
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 })
|
|
19267
19921
|
}
|
|
19268
19922
|
),
|
|
19269
|
-
/* @__PURE__ */ (0,
|
|
19270
|
-
|
|
19923
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19924
|
+
import_react_native57.TextInput,
|
|
19271
19925
|
{
|
|
19272
|
-
style: [
|
|
19926
|
+
style: [styles46.input, { color: colors.text }],
|
|
19273
19927
|
value: messageText,
|
|
19274
19928
|
onChangeText: onMessageTextChange,
|
|
19275
19929
|
placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
|
|
@@ -19279,8 +19933,8 @@ function MessageComposer({
|
|
|
19279
19933
|
editable: !isSending && !isCaseFinalized
|
|
19280
19934
|
}
|
|
19281
19935
|
),
|
|
19282
|
-
/* @__PURE__ */ (0,
|
|
19283
|
-
|
|
19936
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
19937
|
+
import_react_native57.TouchableOpacity,
|
|
19284
19938
|
{
|
|
19285
19939
|
onPress: onSend,
|
|
19286
19940
|
onPressIn: handlePressIn,
|
|
@@ -19288,15 +19942,15 @@ function MessageComposer({
|
|
|
19288
19942
|
disabled: !canSend,
|
|
19289
19943
|
activeOpacity: 0.85,
|
|
19290
19944
|
accessibilityLabel: t("send") || "Send",
|
|
19291
|
-
children: /* @__PURE__ */ (0,
|
|
19945
|
+
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 }) }) })
|
|
19292
19946
|
}
|
|
19293
19947
|
) })
|
|
19294
19948
|
] })
|
|
19295
19949
|
] });
|
|
19296
19950
|
}
|
|
19297
|
-
var
|
|
19951
|
+
var styles46 = import_react_native57.StyleSheet.create({
|
|
19298
19952
|
container: {
|
|
19299
|
-
borderTopWidth:
|
|
19953
|
+
borderTopWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19300
19954
|
paddingHorizontal: spacing.md,
|
|
19301
19955
|
paddingVertical: spacing.sm
|
|
19302
19956
|
},
|
|
@@ -19319,7 +19973,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19319
19973
|
pill: {
|
|
19320
19974
|
flexDirection: "row",
|
|
19321
19975
|
alignItems: "center",
|
|
19322
|
-
borderWidth:
|
|
19976
|
+
borderWidth: import_react_native57.StyleSheet.hairlineWidth,
|
|
19323
19977
|
borderRadius: radii.xxl + 4,
|
|
19324
19978
|
paddingHorizontal: spacing.xs + 2,
|
|
19325
19979
|
paddingVertical: spacing.xs,
|
|
@@ -19358,7 +20012,7 @@ var styles44 = import_react_native55.StyleSheet.create({
|
|
|
19358
20012
|
});
|
|
19359
20013
|
|
|
19360
20014
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
19361
|
-
var
|
|
20015
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
19362
20016
|
var STREAK_GAP_MS = 5 * 60 * 1e3;
|
|
19363
20017
|
function isStreakBoundary(a, b) {
|
|
19364
20018
|
if (!a || !b) return true;
|
|
@@ -19388,11 +20042,11 @@ function sameDay(a, b) {
|
|
|
19388
20042
|
}
|
|
19389
20043
|
var MESSAGE_POLL_INTERVAL = 3e4;
|
|
19390
20044
|
function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
19391
|
-
const { t } = (0,
|
|
20045
|
+
const { t } = (0, import_react_i18next27.useTranslation)();
|
|
19392
20046
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19393
20047
|
const { consentClient } = useBaseUrl();
|
|
19394
20048
|
const { colors } = useTheme();
|
|
19395
|
-
const authContext = (0,
|
|
20049
|
+
const authContext = (0, import_react40.useMemo)(() => ({
|
|
19396
20050
|
accessToken,
|
|
19397
20051
|
refreshToken,
|
|
19398
20052
|
onError,
|
|
@@ -19404,13 +20058,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19404
20058
|
caseUuid,
|
|
19405
20059
|
authContext
|
|
19406
20060
|
);
|
|
19407
|
-
const [messageText, setMessageText] = (0,
|
|
19408
|
-
const [pendingUpload, setPendingUpload] = (0,
|
|
19409
|
-
const [isSending, setIsSending] = (0,
|
|
19410
|
-
const [isUploading, setIsUploading] = (0,
|
|
19411
|
-
const [isSubmittingForRequest, setIsSubmittingForRequest] = (0,
|
|
19412
|
-
const flatListRef = (0,
|
|
19413
|
-
(0,
|
|
20061
|
+
const [messageText, setMessageText] = (0, import_react40.useState)("");
|
|
20062
|
+
const [pendingUpload, setPendingUpload] = (0, import_react40.useState)(null);
|
|
20063
|
+
const [isSending, setIsSending] = (0, import_react40.useState)(false);
|
|
20064
|
+
const [isUploading, setIsUploading] = (0, import_react40.useState)(false);
|
|
20065
|
+
const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react40.useState)(false);
|
|
20066
|
+
const flatListRef = (0, import_react40.useRef)(null);
|
|
20067
|
+
(0, import_react40.useEffect)(() => {
|
|
19414
20068
|
if (messages && messages.length > 0) {
|
|
19415
20069
|
setTimeout(() => {
|
|
19416
20070
|
var _a3;
|
|
@@ -19418,16 +20072,19 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19418
20072
|
}, 100);
|
|
19419
20073
|
}
|
|
19420
20074
|
}, [messages == null ? void 0 : messages.length]);
|
|
19421
|
-
const refetchRef = (0,
|
|
20075
|
+
const refetchRef = (0, import_react40.useRef)(refetch);
|
|
19422
20076
|
refetchRef.current = refetch;
|
|
19423
|
-
(0,
|
|
20077
|
+
const authContextRef = (0, import_react40.useRef)(authContext);
|
|
20078
|
+
authContextRef.current = authContext;
|
|
20079
|
+
(0, import_react40.useEffect)(() => {
|
|
19424
20080
|
if (isCaseFinalized) return;
|
|
19425
20081
|
const id = setInterval(() => {
|
|
20082
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
19426
20083
|
refetchRef.current();
|
|
19427
20084
|
}, MESSAGE_POLL_INTERVAL);
|
|
19428
20085
|
return () => clearInterval(id);
|
|
19429
20086
|
}, [isCaseFinalized]);
|
|
19430
|
-
const handleSend = (0,
|
|
20087
|
+
const handleSend = (0, import_react40.useCallback)(async () => {
|
|
19431
20088
|
if (isCaseFinalized) return;
|
|
19432
20089
|
if (!messageText.trim() && !pendingUpload) return;
|
|
19433
20090
|
if (!organizationId || !workspaceId) return;
|
|
@@ -19452,7 +20109,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19452
20109
|
setIsSending(false);
|
|
19453
20110
|
}
|
|
19454
20111
|
}, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
|
|
19455
|
-
const handleAttach = (0,
|
|
20112
|
+
const handleAttach = (0, import_react40.useCallback)(async () => {
|
|
19456
20113
|
if (isCaseFinalized) return;
|
|
19457
20114
|
if (!organizationId || !workspaceId) return;
|
|
19458
20115
|
try {
|
|
@@ -19487,10 +20144,10 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19487
20144
|
setIsUploading(false);
|
|
19488
20145
|
}
|
|
19489
20146
|
}, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
|
|
19490
|
-
const handleUploadForRequest = (0,
|
|
20147
|
+
const handleUploadForRequest = (0, import_react40.useCallback)((_requestEventUuid) => {
|
|
19491
20148
|
handleAttach();
|
|
19492
20149
|
}, [handleAttach]);
|
|
19493
|
-
const messagesList = (0,
|
|
20150
|
+
const messagesList = (0, import_react40.useMemo)(() => {
|
|
19494
20151
|
const list = messages ? [...messages] : [];
|
|
19495
20152
|
list.sort((a, b) => {
|
|
19496
20153
|
const ta = new Date(a.created_at).getTime();
|
|
@@ -19499,17 +20156,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19499
20156
|
});
|
|
19500
20157
|
return list;
|
|
19501
20158
|
}, [messages]);
|
|
19502
|
-
const keyExtractor = (0,
|
|
19503
|
-
const renderMessage = (0,
|
|
20159
|
+
const keyExtractor = (0, import_react40.useCallback)((item) => item.uuid, []);
|
|
20160
|
+
const renderMessage = (0, import_react40.useCallback)(
|
|
19504
20161
|
({ item, index }) => {
|
|
19505
20162
|
const prev = index > 0 ? messagesList[index - 1] : void 0;
|
|
19506
20163
|
const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
|
|
19507
20164
|
const isFirstInGroup = isStreakBoundary(prev, item);
|
|
19508
20165
|
const isLastInGroup = isStreakBoundary(item, next);
|
|
19509
20166
|
const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
|
|
19510
|
-
return /* @__PURE__ */ (0,
|
|
19511
|
-
dateSeparator ? /* @__PURE__ */ (0,
|
|
19512
|
-
/* @__PURE__ */ (0,
|
|
20167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
20168
|
+
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,
|
|
20169
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19513
20170
|
MessageItem,
|
|
19514
20171
|
{
|
|
19515
20172
|
message: item,
|
|
@@ -19525,32 +20182,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19525
20182
|
[messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
|
|
19526
20183
|
);
|
|
19527
20184
|
if (isLoading) {
|
|
19528
|
-
return /* @__PURE__ */ (0,
|
|
20185
|
+
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 }) });
|
|
19529
20186
|
}
|
|
19530
20187
|
if (error) {
|
|
19531
|
-
return /* @__PURE__ */ (0,
|
|
20188
|
+
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" }) });
|
|
19532
20189
|
}
|
|
19533
|
-
return /* @__PURE__ */ (0,
|
|
19534
|
-
/* @__PURE__ */ (0,
|
|
19535
|
-
/* @__PURE__ */ (0,
|
|
19536
|
-
/* @__PURE__ */ (0,
|
|
20190
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
20191
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.secureRow, children: [
|
|
20192
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
20193
|
+
/* @__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"}` })
|
|
19537
20194
|
] }),
|
|
19538
|
-
/* @__PURE__ */ (0,
|
|
19539
|
-
|
|
20195
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
20196
|
+
import_react_native58.FlatList,
|
|
19540
20197
|
{
|
|
19541
20198
|
ref: flatListRef,
|
|
19542
|
-
style:
|
|
20199
|
+
style: styles47.list,
|
|
19543
20200
|
data: messagesList,
|
|
19544
20201
|
keyExtractor,
|
|
19545
20202
|
renderItem: renderMessage,
|
|
19546
20203
|
contentContainerStyle: [
|
|
19547
|
-
|
|
19548
|
-
messagesList.length ?
|
|
20204
|
+
styles47.messagesList,
|
|
20205
|
+
messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
|
|
19549
20206
|
],
|
|
19550
|
-
ListEmptyComponent: /* @__PURE__ */ (0,
|
|
19551
|
-
/* @__PURE__ */ (0,
|
|
19552
|
-
/* @__PURE__ */ (0,
|
|
19553
|
-
/* @__PURE__ */ (0,
|
|
20207
|
+
ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.emptyContainer, children: [
|
|
20208
|
+
/* @__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 }) }),
|
|
20209
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
|
|
20210
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
|
|
19554
20211
|
] }),
|
|
19555
20212
|
onContentSizeChange: () => {
|
|
19556
20213
|
var _a3;
|
|
@@ -19562,7 +20219,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19562
20219
|
removeClippedSubviews: true
|
|
19563
20220
|
}
|
|
19564
20221
|
),
|
|
19565
|
-
/* @__PURE__ */ (0,
|
|
20222
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
19566
20223
|
MessageComposer,
|
|
19567
20224
|
{
|
|
19568
20225
|
messageText,
|
|
@@ -19578,7 +20235,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19578
20235
|
)
|
|
19579
20236
|
] });
|
|
19580
20237
|
}
|
|
19581
|
-
var
|
|
20238
|
+
var styles47 = import_react_native58.StyleSheet.create({
|
|
19582
20239
|
container: {
|
|
19583
20240
|
flex: 1
|
|
19584
20241
|
},
|
|
@@ -19661,17 +20318,17 @@ var styles45 = import_react_native56.StyleSheet.create({
|
|
|
19661
20318
|
});
|
|
19662
20319
|
|
|
19663
20320
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
19664
|
-
var
|
|
20321
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
19665
20322
|
function CaseDetailsPage() {
|
|
19666
20323
|
var _a3, _b;
|
|
19667
|
-
const { t } = (0,
|
|
20324
|
+
const { t } = (0, import_react_i18next28.useTranslation)();
|
|
19668
20325
|
const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
|
|
19669
20326
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19670
20327
|
const { colors } = useTheme();
|
|
19671
20328
|
const { keyboardOffset } = usePrivacyCenterInsets();
|
|
19672
20329
|
const requestTypeLabels = useRequestTypeLabels();
|
|
19673
|
-
const [activeTab, setActiveTab] = (0,
|
|
19674
|
-
const authContext = (0,
|
|
20330
|
+
const [activeTab, setActiveTab] = (0, import_react41.useState)("request-details");
|
|
20331
|
+
const authContext = (0, import_react41.useMemo)(() => ({
|
|
19675
20332
|
accessToken,
|
|
19676
20333
|
refreshToken,
|
|
19677
20334
|
onError,
|
|
@@ -19684,7 +20341,7 @@ function CaseDetailsPage() {
|
|
|
19684
20341
|
email != null ? email : void 0,
|
|
19685
20342
|
authContext
|
|
19686
20343
|
);
|
|
19687
|
-
(0,
|
|
20344
|
+
(0, import_react41.useEffect)(() => {
|
|
19688
20345
|
if (!cases) return;
|
|
19689
20346
|
if (cases.length === 0) {
|
|
19690
20347
|
navigateTo("form");
|
|
@@ -19698,33 +20355,33 @@ function CaseDetailsPage() {
|
|
|
19698
20355
|
navigateTo("form");
|
|
19699
20356
|
}
|
|
19700
20357
|
}, [cases, targetUuid, setSelectedCase, navigateTo]);
|
|
19701
|
-
(0,
|
|
20358
|
+
(0, import_react41.useEffect)(() => {
|
|
19702
20359
|
if (!selectedCase && !targetUuid && !isLoading) {
|
|
19703
20360
|
navigateTo("form");
|
|
19704
20361
|
}
|
|
19705
20362
|
}, [selectedCase, targetUuid, isLoading, navigateTo]);
|
|
19706
20363
|
if (!selectedCase) {
|
|
19707
|
-
return /* @__PURE__ */ (0,
|
|
20364
|
+
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" }) });
|
|
19708
20365
|
}
|
|
19709
20366
|
const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
|
|
19710
20367
|
const tabs = [
|
|
19711
20368
|
{ id: "request-details", label: t("requestDetails") || "Request Details" },
|
|
19712
20369
|
{ id: "messages", label: t("messages") || "Messages" }
|
|
19713
20370
|
];
|
|
19714
|
-
return /* @__PURE__ */ (0,
|
|
20371
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
19715
20372
|
KeyboardAvoidingViewCompat,
|
|
19716
20373
|
{
|
|
19717
|
-
style: [
|
|
20374
|
+
style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
|
|
19718
20375
|
behavior: "padding",
|
|
19719
|
-
keyboardVerticalOffset:
|
|
20376
|
+
keyboardVerticalOffset: import_react_native59.Platform.OS === "ios" ? keyboardOffset : 0,
|
|
19720
20377
|
children: [
|
|
19721
|
-
/* @__PURE__ */ (0,
|
|
19722
|
-
/* @__PURE__ */ (0,
|
|
19723
|
-
/* @__PURE__ */ (0,
|
|
19724
|
-
/* @__PURE__ */ (0,
|
|
19725
|
-
/* @__PURE__ */ (0,
|
|
19726
|
-
/* @__PURE__ */ (0,
|
|
19727
|
-
/* @__PURE__ */ (0,
|
|
20378
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.headerWrap, children: [
|
|
20379
|
+
/* @__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: [
|
|
20380
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
|
|
20381
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroBody, children: [
|
|
20382
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroTopRow, children: [
|
|
20383
|
+
/* @__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 }) }),
|
|
20384
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19728
20385
|
PCBadge,
|
|
19729
20386
|
{
|
|
19730
20387
|
status: getCaseStatusVariant(selectedCase.status),
|
|
@@ -19733,10 +20390,10 @@ function CaseDetailsPage() {
|
|
|
19733
20390
|
}
|
|
19734
20391
|
)
|
|
19735
20392
|
] }),
|
|
19736
|
-
/* @__PURE__ */ (0,
|
|
20393
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
|
|
19737
20394
|
] })
|
|
19738
20395
|
] }) }),
|
|
19739
|
-
/* @__PURE__ */ (0,
|
|
20396
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19740
20397
|
Segmented,
|
|
19741
20398
|
{
|
|
19742
20399
|
options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
|
|
@@ -19745,18 +20402,18 @@ function CaseDetailsPage() {
|
|
|
19745
20402
|
}
|
|
19746
20403
|
)
|
|
19747
20404
|
] }),
|
|
19748
|
-
/* @__PURE__ */ (0,
|
|
20405
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
19749
20406
|
RequestDetailsTab,
|
|
19750
20407
|
{
|
|
19751
20408
|
selectedCase,
|
|
19752
20409
|
requestTypeLabel
|
|
19753
20410
|
}
|
|
19754
|
-
) : /* @__PURE__ */ (0,
|
|
20411
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
|
|
19755
20412
|
]
|
|
19756
20413
|
}
|
|
19757
20414
|
);
|
|
19758
20415
|
}
|
|
19759
|
-
var
|
|
20416
|
+
var styles48 = import_react_native59.StyleSheet.create({
|
|
19760
20417
|
container: {
|
|
19761
20418
|
flex: 1
|
|
19762
20419
|
},
|
|
@@ -19821,36 +20478,36 @@ var styles46 = import_react_native57.StyleSheet.create({
|
|
|
19821
20478
|
});
|
|
19822
20479
|
|
|
19823
20480
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
19824
|
-
var
|
|
19825
|
-
var
|
|
19826
|
-
var
|
|
20481
|
+
var import_react44 = require("react");
|
|
20482
|
+
var import_react_native65 = require("react-native");
|
|
20483
|
+
var import_react_i18next30 = require("react-i18next");
|
|
19827
20484
|
|
|
19828
20485
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19829
|
-
var
|
|
19830
|
-
var
|
|
20486
|
+
var import_react_native63 = require("react-native");
|
|
20487
|
+
var import_react_i18next29 = require("react-i18next");
|
|
19831
20488
|
|
|
19832
20489
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
|
|
19833
|
-
var
|
|
19834
|
-
var
|
|
20490
|
+
var import_react_native60 = require("react-native");
|
|
20491
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
19835
20492
|
var NotificationCTAButton = ({ cta, onPress }) => {
|
|
19836
20493
|
const { colors } = useTheme();
|
|
19837
20494
|
const tone = cta.style === "danger" ? colors.error : colors.primary;
|
|
19838
20495
|
const isPrimary = cta.style === "primary" || cta.style === "danger";
|
|
19839
|
-
return /* @__PURE__ */ (0,
|
|
19840
|
-
|
|
20496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
20497
|
+
import_react_native60.TouchableOpacity,
|
|
19841
20498
|
{
|
|
19842
20499
|
onPress,
|
|
19843
20500
|
activeOpacity: 0.7,
|
|
19844
20501
|
style: [
|
|
19845
|
-
|
|
20502
|
+
styles49.button,
|
|
19846
20503
|
isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
|
|
19847
20504
|
],
|
|
19848
20505
|
accessibilityRole: "button",
|
|
19849
|
-
children: /* @__PURE__ */ (0,
|
|
20506
|
+
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 })
|
|
19850
20507
|
}
|
|
19851
20508
|
);
|
|
19852
20509
|
};
|
|
19853
|
-
var
|
|
20510
|
+
var styles49 = import_react_native60.StyleSheet.create({
|
|
19854
20511
|
button: {
|
|
19855
20512
|
paddingHorizontal: spacing.lg,
|
|
19856
20513
|
paddingVertical: spacing.sm,
|
|
@@ -19865,8 +20522,8 @@ var styles47 = import_react_native58.StyleSheet.create({
|
|
|
19865
20522
|
});
|
|
19866
20523
|
|
|
19867
20524
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
|
|
19868
|
-
var
|
|
19869
|
-
var
|
|
20525
|
+
var import_react_native61 = require("react-native");
|
|
20526
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
19870
20527
|
var CATEGORY_ICON = {
|
|
19871
20528
|
guardian: "user-round",
|
|
19872
20529
|
consent: "clock",
|
|
@@ -19879,18 +20536,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
|
|
|
19879
20536
|
var _a3;
|
|
19880
20537
|
const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
|
|
19881
20538
|
const color = ICON_COLORS[category];
|
|
19882
|
-
return /* @__PURE__ */ (0,
|
|
19883
|
-
|
|
20539
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
20540
|
+
import_react_native61.View,
|
|
19884
20541
|
{
|
|
19885
20542
|
style: [
|
|
19886
|
-
|
|
20543
|
+
styles50.wrap,
|
|
19887
20544
|
{ width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
|
|
19888
20545
|
],
|
|
19889
|
-
children: /* @__PURE__ */ (0,
|
|
20546
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
|
|
19890
20547
|
}
|
|
19891
20548
|
);
|
|
19892
20549
|
};
|
|
19893
|
-
var
|
|
20550
|
+
var styles50 = import_react_native61.StyleSheet.create({
|
|
19894
20551
|
wrap: {
|
|
19895
20552
|
alignItems: "center",
|
|
19896
20553
|
justifyContent: "center"
|
|
@@ -19898,15 +20555,15 @@ var styles48 = import_react_native59.StyleSheet.create({
|
|
|
19898
20555
|
});
|
|
19899
20556
|
|
|
19900
20557
|
// src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
|
|
19901
|
-
var
|
|
19902
|
-
var
|
|
19903
|
-
var
|
|
20558
|
+
var import_react42 = require("react");
|
|
20559
|
+
var import_react_native62 = require("react-native");
|
|
20560
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
19904
20561
|
var ACTION_WIDTH = 80;
|
|
19905
20562
|
var CLAIM_THRESHOLD = 8;
|
|
19906
20563
|
var SwipeableRow = ({ actions, background, children }) => {
|
|
19907
20564
|
const { colors } = useTheme();
|
|
19908
|
-
const translateX = (0,
|
|
19909
|
-
const baseX = (0,
|
|
20565
|
+
const translateX = (0, import_react42.useRef)(new import_react_native62.Animated.Value(0)).current;
|
|
20566
|
+
const baseX = (0, import_react42.useRef)(0);
|
|
19910
20567
|
const maxOpen = actions.length * ACTION_WIDTH;
|
|
19911
20568
|
const toneColor2 = {
|
|
19912
20569
|
primary: colors.primary,
|
|
@@ -19915,10 +20572,10 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19915
20572
|
};
|
|
19916
20573
|
const settle = (to) => {
|
|
19917
20574
|
baseX.current = to;
|
|
19918
|
-
|
|
20575
|
+
import_react_native62.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
|
|
19919
20576
|
};
|
|
19920
|
-
const panResponder = (0,
|
|
19921
|
-
() =>
|
|
20577
|
+
const panResponder = (0, import_react42.useMemo)(
|
|
20578
|
+
() => import_react_native62.PanResponder.create({
|
|
19922
20579
|
onMoveShouldSetPanResponder: (_, g) => {
|
|
19923
20580
|
const horizontal = Math.abs(g.dx) > Math.abs(g.dy) * 1.5;
|
|
19924
20581
|
if (!horizontal) return false;
|
|
@@ -19939,37 +20596,37 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19939
20596
|
[maxOpen]
|
|
19940
20597
|
);
|
|
19941
20598
|
if (actions.length === 0) {
|
|
19942
|
-
return /* @__PURE__ */ (0,
|
|
20599
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children });
|
|
19943
20600
|
}
|
|
19944
20601
|
const runAction = (action) => {
|
|
19945
20602
|
settle(0);
|
|
19946
20603
|
action.onPress();
|
|
19947
20604
|
};
|
|
19948
|
-
return /* @__PURE__ */ (0,
|
|
19949
|
-
/* @__PURE__ */ (0,
|
|
19950
|
-
|
|
20605
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native62.View, { style: styles51.root, children: [
|
|
20606
|
+
/* @__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)(
|
|
20607
|
+
import_react_native62.TouchableOpacity,
|
|
19951
20608
|
{
|
|
19952
|
-
style: [
|
|
20609
|
+
style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
|
|
19953
20610
|
onPress: () => runAction(action),
|
|
19954
20611
|
activeOpacity: 0.85,
|
|
19955
20612
|
accessibilityRole: "button",
|
|
19956
20613
|
accessibilityLabel: action.label,
|
|
19957
20614
|
children: [
|
|
19958
|
-
/* @__PURE__ */ (0,
|
|
19959
|
-
/* @__PURE__ */ (0,
|
|
20615
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
|
|
20616
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Text, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
|
|
19960
20617
|
]
|
|
19961
20618
|
},
|
|
19962
20619
|
action.key
|
|
19963
20620
|
)) }),
|
|
19964
|
-
/* @__PURE__ */ (0,
|
|
20621
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
|
|
19965
20622
|
] });
|
|
19966
20623
|
};
|
|
19967
|
-
var
|
|
20624
|
+
var styles51 = import_react_native62.StyleSheet.create({
|
|
19968
20625
|
root: {
|
|
19969
20626
|
position: "relative"
|
|
19970
20627
|
},
|
|
19971
20628
|
actionsLayer: {
|
|
19972
|
-
...
|
|
20629
|
+
...import_react_native62.StyleSheet.absoluteFillObject,
|
|
19973
20630
|
flexDirection: "row",
|
|
19974
20631
|
justifyContent: "flex-end"
|
|
19975
20632
|
},
|
|
@@ -20002,10 +20659,10 @@ var formatTimeAgo = (dateString, t) => {
|
|
|
20002
20659
|
};
|
|
20003
20660
|
|
|
20004
20661
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
20005
|
-
var
|
|
20662
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
20006
20663
|
var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
|
|
20007
20664
|
var _a3, _b;
|
|
20008
|
-
const { t } = (0,
|
|
20665
|
+
const { t } = (0, import_react_i18next29.useTranslation)();
|
|
20009
20666
|
const { colors } = useTheme();
|
|
20010
20667
|
const isUnread = !notification.is_read;
|
|
20011
20668
|
const statusLabel = notification.status_label_display || notification.status_label;
|
|
@@ -20032,35 +20689,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
|
|
|
20032
20689
|
onPress: onAcknowledge
|
|
20033
20690
|
});
|
|
20034
20691
|
}
|
|
20035
|
-
return /* @__PURE__ */ (0,
|
|
20036
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
20037
|
-
/* @__PURE__ */ (0,
|
|
20038
|
-
/* @__PURE__ */ (0,
|
|
20039
|
-
/* @__PURE__ */ (0,
|
|
20040
|
-
/* @__PURE__ */ (0,
|
|
20041
|
-
|
|
20692
|
+
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: [
|
|
20693
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
|
|
20694
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
|
|
20695
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.content, children: [
|
|
20696
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.titleRow, children: [
|
|
20697
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
20698
|
+
import_react_native63.Text,
|
|
20042
20699
|
{
|
|
20043
|
-
style: [
|
|
20700
|
+
style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
|
|
20044
20701
|
numberOfLines: 2,
|
|
20045
20702
|
children: notification.title
|
|
20046
20703
|
}
|
|
20047
20704
|
),
|
|
20048
|
-
isUnread ? /* @__PURE__ */ (0,
|
|
20705
|
+
isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
|
|
20049
20706
|
] }),
|
|
20050
|
-
/* @__PURE__ */ (0,
|
|
20051
|
-
statusLabel ? /* @__PURE__ */ (0,
|
|
20052
|
-
/* @__PURE__ */ (0,
|
|
20053
|
-
/* @__PURE__ */ (0,
|
|
20054
|
-
/* @__PURE__ */ (0,
|
|
20707
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.metaRow, children: [
|
|
20708
|
+
statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
|
|
20709
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.statusDot, { backgroundColor: accent }] }),
|
|
20710
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
|
|
20711
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
|
|
20055
20712
|
] }) : null,
|
|
20056
|
-
/* @__PURE__ */ (0,
|
|
20713
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
|
|
20057
20714
|
] }),
|
|
20058
|
-
showAcknowledge && ackCta ? /* @__PURE__ */ (0,
|
|
20715
|
+
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
|
|
20059
20716
|
] }),
|
|
20060
|
-
/* @__PURE__ */ (0,
|
|
20717
|
+
/* @__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 }) })
|
|
20061
20718
|
] }) });
|
|
20062
20719
|
};
|
|
20063
|
-
var
|
|
20720
|
+
var styles52 = import_react_native63.StyleSheet.create({
|
|
20064
20721
|
row: {
|
|
20065
20722
|
flexDirection: "row",
|
|
20066
20723
|
alignItems: "center",
|
|
@@ -20123,25 +20780,25 @@ var styles50 = import_react_native61.StyleSheet.create({
|
|
|
20123
20780
|
});
|
|
20124
20781
|
|
|
20125
20782
|
// src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
|
|
20126
|
-
var
|
|
20127
|
-
var
|
|
20783
|
+
var import_react43 = require("react");
|
|
20784
|
+
var import_react_native64 = require("react-native");
|
|
20128
20785
|
var useNotificationActions = () => {
|
|
20129
20786
|
const { navigateTo, setSelectedCase } = useInternalNavigation();
|
|
20130
20787
|
const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId, email } = useAuth();
|
|
20131
20788
|
const { consentClient } = useBaseUrl();
|
|
20132
20789
|
const { langParam } = useCurrentLanguage();
|
|
20133
|
-
const authContext = (0,
|
|
20790
|
+
const authContext = (0, import_react43.useMemo)(
|
|
20134
20791
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
20135
20792
|
[accessToken, refreshToken, onError, updateTokens]
|
|
20136
20793
|
);
|
|
20137
|
-
const hasAcknowledgeCTA = (0,
|
|
20794
|
+
const hasAcknowledgeCTA = (0, import_react43.useCallback)(
|
|
20138
20795
|
(notification) => {
|
|
20139
20796
|
var _a3, _b;
|
|
20140
20797
|
return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
|
|
20141
20798
|
},
|
|
20142
20799
|
[]
|
|
20143
20800
|
);
|
|
20144
|
-
const handleMarkRead = (0,
|
|
20801
|
+
const handleMarkRead = (0, import_react43.useCallback)(
|
|
20145
20802
|
async (notificationUuid) => {
|
|
20146
20803
|
if (!organizationId || !workspaceId) return false;
|
|
20147
20804
|
const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20149,12 +20806,12 @@ var useNotificationActions = () => {
|
|
|
20149
20806
|
},
|
|
20150
20807
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20151
20808
|
);
|
|
20152
|
-
const handleMarkAllRead = (0,
|
|
20809
|
+
const handleMarkAllRead = (0, import_react43.useCallback)(async () => {
|
|
20153
20810
|
if (!organizationId || !workspaceId) return false;
|
|
20154
20811
|
const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
|
|
20155
20812
|
return result !== null;
|
|
20156
20813
|
}, [organizationId, workspaceId, authContext, consentClient]);
|
|
20157
|
-
const handleAcknowledge = (0,
|
|
20814
|
+
const handleAcknowledge = (0, import_react43.useCallback)(
|
|
20158
20815
|
async (notificationUuid) => {
|
|
20159
20816
|
if (!organizationId || !workspaceId) return false;
|
|
20160
20817
|
const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20162,7 +20819,7 @@ var useNotificationActions = () => {
|
|
|
20162
20819
|
},
|
|
20163
20820
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20164
20821
|
);
|
|
20165
|
-
const handleCTAClick = (0,
|
|
20822
|
+
const handleCTAClick = (0, import_react43.useCallback)(
|
|
20166
20823
|
async (notification, cta) => {
|
|
20167
20824
|
var _a3;
|
|
20168
20825
|
if (cta.action_type === "acknowledge") {
|
|
@@ -20196,7 +20853,7 @@ var useNotificationActions = () => {
|
|
|
20196
20853
|
const url = cta.url;
|
|
20197
20854
|
if (!/^https?:\/\//i.test(url)) return null;
|
|
20198
20855
|
try {
|
|
20199
|
-
await
|
|
20856
|
+
await import_react_native64.Linking.openURL(url);
|
|
20200
20857
|
return "opened";
|
|
20201
20858
|
} catch {
|
|
20202
20859
|
return null;
|
|
@@ -20219,7 +20876,7 @@ var useNotificationActions = () => {
|
|
|
20219
20876
|
};
|
|
20220
20877
|
|
|
20221
20878
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
20222
|
-
var
|
|
20879
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
20223
20880
|
var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
|
|
20224
20881
|
var READ_FILTER_TO_PARAM = {
|
|
20225
20882
|
all: void 0,
|
|
@@ -20227,7 +20884,7 @@ var READ_FILTER_TO_PARAM = {
|
|
|
20227
20884
|
read: true
|
|
20228
20885
|
};
|
|
20229
20886
|
var NotificationsScreen = () => {
|
|
20230
|
-
const { t } = (0,
|
|
20887
|
+
const { t } = (0, import_react_i18next30.useTranslation)();
|
|
20231
20888
|
const { colors } = useTheme();
|
|
20232
20889
|
const { langParam } = useCurrentLanguage();
|
|
20233
20890
|
const { listBottom } = usePrivacyCenterInsets();
|
|
@@ -20244,15 +20901,15 @@ var NotificationsScreen = () => {
|
|
|
20244
20901
|
handleAcknowledge,
|
|
20245
20902
|
handleCTAClick
|
|
20246
20903
|
} = useNotificationActions();
|
|
20247
|
-
const [notifications, setNotifications] = (0,
|
|
20248
|
-
const [summary, setSummary] = (0,
|
|
20249
|
-
const [activeTab, setActiveTab] = (0,
|
|
20250
|
-
const [readFilter, setReadFilter] = (0,
|
|
20251
|
-
const [isLoading, setIsLoading] = (0,
|
|
20252
|
-
const [isRefreshing2, setIsRefreshing] = (0,
|
|
20253
|
-
const [filterOpen, setFilterOpen] = (0,
|
|
20904
|
+
const [notifications, setNotifications] = (0, import_react44.useState)([]);
|
|
20905
|
+
const [summary, setSummary] = (0, import_react44.useState)(EMPTY_SUMMARY);
|
|
20906
|
+
const [activeTab, setActiveTab] = (0, import_react44.useState)("all");
|
|
20907
|
+
const [readFilter, setReadFilter] = (0, import_react44.useState)("all");
|
|
20908
|
+
const [isLoading, setIsLoading] = (0, import_react44.useState)(true);
|
|
20909
|
+
const [isRefreshing2, setIsRefreshing] = (0, import_react44.useState)(false);
|
|
20910
|
+
const [filterOpen, setFilterOpen] = (0, import_react44.useState)(false);
|
|
20254
20911
|
const isFiltered = activeTab !== "all" || readFilter !== "all";
|
|
20255
|
-
const loadNotifications = (0,
|
|
20912
|
+
const loadNotifications = (0, import_react44.useCallback)(
|
|
20256
20913
|
async (includeSummary = false, silent = false) => {
|
|
20257
20914
|
if (!organizationId || !workspaceId) return;
|
|
20258
20915
|
if (!silent) setIsLoading(true);
|
|
@@ -20282,18 +20939,21 @@ var NotificationsScreen = () => {
|
|
|
20282
20939
|
},
|
|
20283
20940
|
[organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
|
|
20284
20941
|
);
|
|
20285
|
-
(0,
|
|
20942
|
+
(0, import_react44.useEffect)(() => {
|
|
20286
20943
|
loadNotifications(true);
|
|
20287
20944
|
}, [loadNotifications]);
|
|
20288
|
-
const loadRef = (0,
|
|
20945
|
+
const loadRef = (0, import_react44.useRef)(loadNotifications);
|
|
20289
20946
|
loadRef.current = loadNotifications;
|
|
20290
|
-
(0,
|
|
20947
|
+
const authContextRef = (0, import_react44.useRef)(authContext);
|
|
20948
|
+
authContextRef.current = authContext;
|
|
20949
|
+
(0, import_react44.useEffect)(() => {
|
|
20291
20950
|
const id = setInterval(() => {
|
|
20951
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
20292
20952
|
loadRef.current(false, true);
|
|
20293
20953
|
}, POLL_INTERVAL);
|
|
20294
20954
|
return () => clearInterval(id);
|
|
20295
20955
|
}, []);
|
|
20296
|
-
const onNotificationClick = (0,
|
|
20956
|
+
const onNotificationClick = (0, import_react44.useCallback)(
|
|
20297
20957
|
async (notification) => {
|
|
20298
20958
|
const shouldMarkRead = !notification.is_read;
|
|
20299
20959
|
const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
|
|
@@ -20314,7 +20974,7 @@ var NotificationsScreen = () => {
|
|
|
20314
20974
|
},
|
|
20315
20975
|
[hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
|
|
20316
20976
|
);
|
|
20317
|
-
const onRowPress = (0,
|
|
20977
|
+
const onRowPress = (0, import_react44.useCallback)(
|
|
20318
20978
|
async (notification) => {
|
|
20319
20979
|
var _a3;
|
|
20320
20980
|
const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
|
|
@@ -20332,7 +20992,7 @@ var NotificationsScreen = () => {
|
|
|
20332
20992
|
},
|
|
20333
20993
|
[handleCTAClick, onNotificationClick]
|
|
20334
20994
|
);
|
|
20335
|
-
const onMarkReadRow = (0,
|
|
20995
|
+
const onMarkReadRow = (0, import_react44.useCallback)(
|
|
20336
20996
|
async (notification) => {
|
|
20337
20997
|
if (notification.is_read) return;
|
|
20338
20998
|
const ok = await handleMarkRead(notification.uuid);
|
|
@@ -20342,7 +21002,7 @@ var NotificationsScreen = () => {
|
|
|
20342
21002
|
},
|
|
20343
21003
|
[handleMarkRead]
|
|
20344
21004
|
);
|
|
20345
|
-
const onAcknowledgeRow = (0,
|
|
21005
|
+
const onAcknowledgeRow = (0, import_react44.useCallback)(
|
|
20346
21006
|
async (notification) => {
|
|
20347
21007
|
if (notification.is_acknowledged) return;
|
|
20348
21008
|
const ok = await handleAcknowledge(notification.uuid);
|
|
@@ -20359,22 +21019,29 @@ var NotificationsScreen = () => {
|
|
|
20359
21019
|
},
|
|
20360
21020
|
[handleAcknowledge]
|
|
20361
21021
|
);
|
|
20362
|
-
const
|
|
21022
|
+
const onMarkAllRead = (0, import_react44.useCallback)(async () => {
|
|
21023
|
+
const ok = await handleMarkAllRead();
|
|
21024
|
+
if (!ok) return;
|
|
21025
|
+
setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
|
|
21026
|
+
setSummary((prev) => ({ ...prev, unread: 0 }));
|
|
21027
|
+
if (readFilter !== "all") loadNotifications(true, true);
|
|
21028
|
+
}, [handleMarkAllRead, readFilter, loadNotifications]);
|
|
21029
|
+
const onRefresh = (0, import_react44.useCallback)(() => {
|
|
20363
21030
|
setIsRefreshing(true);
|
|
20364
21031
|
loadNotifications(true, true);
|
|
20365
21032
|
}, [loadNotifications]);
|
|
20366
|
-
const sections = (0,
|
|
21033
|
+
const sections = (0, import_react44.useMemo)(
|
|
20367
21034
|
() => groupByTime(notifications, (item) => item.created_at, classifyTime),
|
|
20368
21035
|
[notifications, classifyTime]
|
|
20369
21036
|
);
|
|
20370
|
-
const header = /* @__PURE__ */ (0,
|
|
20371
|
-
/* @__PURE__ */ (0,
|
|
20372
|
-
/* @__PURE__ */ (0,
|
|
20373
|
-
/* @__PURE__ */ (0,
|
|
20374
|
-
|
|
21037
|
+
const header = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.header, children: [
|
|
21038
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.titleRow, children: [
|
|
21039
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
|
|
21040
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21041
|
+
import_react_native65.TouchableOpacity,
|
|
20375
21042
|
{
|
|
20376
21043
|
style: [
|
|
20377
|
-
|
|
21044
|
+
styles53.filterBtn,
|
|
20378
21045
|
{
|
|
20379
21046
|
backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
|
|
20380
21047
|
borderColor: isFiltered ? colors.primary : colors.border
|
|
@@ -20383,30 +21050,30 @@ var NotificationsScreen = () => {
|
|
|
20383
21050
|
onPress: () => setFilterOpen(true),
|
|
20384
21051
|
accessibilityRole: "button",
|
|
20385
21052
|
accessibilityLabel: t("filter") || "Filter",
|
|
20386
|
-
children: /* @__PURE__ */ (0,
|
|
21053
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
|
|
20387
21054
|
}
|
|
20388
21055
|
)
|
|
20389
21056
|
] }),
|
|
20390
|
-
summary.unread > 0 ? /* @__PURE__ */ (0,
|
|
20391
|
-
/* @__PURE__ */ (0,
|
|
20392
|
-
/* @__PURE__ */ (0,
|
|
21057
|
+
summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.TouchableOpacity, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
|
|
21058
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
|
|
21059
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
|
|
20393
21060
|
] }) : null
|
|
20394
21061
|
] });
|
|
20395
|
-
return /* @__PURE__ */ (0,
|
|
20396
|
-
/* @__PURE__ */ (0,
|
|
20397
|
-
|
|
21062
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
21063
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21064
|
+
import_react_native65.FlatList,
|
|
20398
21065
|
{
|
|
20399
21066
|
data: sections,
|
|
20400
21067
|
keyExtractor: (section2) => section2.key,
|
|
20401
|
-
style: [
|
|
20402
|
-
contentContainerStyle: [
|
|
21068
|
+
style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
|
|
21069
|
+
contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
|
|
20403
21070
|
ListHeaderComponent: header,
|
|
20404
21071
|
showsVerticalScrollIndicator: false,
|
|
20405
|
-
refreshControl: /* @__PURE__ */ (0,
|
|
20406
|
-
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0,
|
|
20407
|
-
/* @__PURE__ */ (0,
|
|
20408
|
-
/* @__PURE__ */ (0,
|
|
20409
|
-
/* @__PURE__ */ (0,
|
|
21072
|
+
refreshControl: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
|
|
21073
|
+
renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.section, children: [
|
|
21074
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
|
|
21075
|
+
/* @__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: [
|
|
21076
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20410
21077
|
NotificationRow,
|
|
20411
21078
|
{
|
|
20412
21079
|
notification: item,
|
|
@@ -20415,19 +21082,19 @@ var NotificationsScreen = () => {
|
|
|
20415
21082
|
onAcknowledge: () => onAcknowledgeRow(item)
|
|
20416
21083
|
}
|
|
20417
21084
|
),
|
|
20418
|
-
index < section2.data.length - 1 ? /* @__PURE__ */ (0,
|
|
21085
|
+
index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
20419
21086
|
] }, item.uuid)) }) })
|
|
20420
21087
|
] }),
|
|
20421
|
-
ListEmptyComponent: isLoading ? /* @__PURE__ */ (0,
|
|
20422
|
-
/* @__PURE__ */ (0,
|
|
20423
|
-
/* @__PURE__ */ (0,
|
|
20424
|
-
/* @__PURE__ */ (0,
|
|
20425
|
-
/* @__PURE__ */ (0,
|
|
20426
|
-
/* @__PURE__ */ (0,
|
|
21088
|
+
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: [
|
|
21089
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonRow, children: [
|
|
21090
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
|
|
21091
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonLines, children: [
|
|
21092
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "70%", height: 13 }),
|
|
21093
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "40%", height: 10 })
|
|
20427
21094
|
] })
|
|
20428
21095
|
] }),
|
|
20429
|
-
i < 3 ? /* @__PURE__ */ (0,
|
|
20430
|
-
] }, i)) }) }) : /* @__PURE__ */ (0,
|
|
21096
|
+
i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
21097
|
+
] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20431
21098
|
PCEmpty,
|
|
20432
21099
|
{
|
|
20433
21100
|
iconName: "circle-check",
|
|
@@ -20436,14 +21103,14 @@ var NotificationsScreen = () => {
|
|
|
20436
21103
|
}
|
|
20437
21104
|
) }),
|
|
20438
21105
|
ListFooterComponentStyle: { marginTop: "auto" },
|
|
20439
|
-
ListFooterComponent: /* @__PURE__ */ (0,
|
|
21106
|
+
ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Footer, {})
|
|
20440
21107
|
}
|
|
20441
21108
|
),
|
|
20442
|
-
/* @__PURE__ */ (0,
|
|
20443
|
-
/* @__PURE__ */ (0,
|
|
20444
|
-
/* @__PURE__ */ (0,
|
|
21109
|
+
/* @__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: [
|
|
21110
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
|
|
21111
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
|
|
20445
21112
|
const selected = tab.key === activeTab;
|
|
20446
|
-
return /* @__PURE__ */ (0,
|
|
21113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20447
21114
|
FilterChip,
|
|
20448
21115
|
{
|
|
20449
21116
|
label: tab.label,
|
|
@@ -20453,12 +21120,12 @@ var NotificationsScreen = () => {
|
|
|
20453
21120
|
tab.key
|
|
20454
21121
|
);
|
|
20455
21122
|
}) }),
|
|
20456
|
-
/* @__PURE__ */ (0,
|
|
20457
|
-
/* @__PURE__ */ (0,
|
|
21123
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
|
|
21124
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: [
|
|
20458
21125
|
{ key: "all", label: t("all") || "All" },
|
|
20459
21126
|
{ key: "unread", label: t("unread") || "Unread" },
|
|
20460
21127
|
{ key: "read", label: t("read", { defaultValue: "Read" }) }
|
|
20461
|
-
].map((opt) => /* @__PURE__ */ (0,
|
|
21128
|
+
].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
20462
21129
|
FilterChip,
|
|
20463
21130
|
{
|
|
20464
21131
|
label: opt.label,
|
|
@@ -20467,13 +21134,13 @@ var NotificationsScreen = () => {
|
|
|
20467
21134
|
},
|
|
20468
21135
|
opt.key
|
|
20469
21136
|
)) }),
|
|
20470
|
-
/* @__PURE__ */ (0,
|
|
20471
|
-
|
|
21137
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21138
|
+
import_react_native65.TouchableOpacity,
|
|
20472
21139
|
{
|
|
20473
|
-
style: [
|
|
21140
|
+
style: [styles53.applyBtn, { backgroundColor: colors.primary }],
|
|
20474
21141
|
onPress: () => setFilterOpen(false),
|
|
20475
21142
|
accessibilityRole: "button",
|
|
20476
|
-
children: /* @__PURE__ */ (0,
|
|
21143
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
|
|
20477
21144
|
}
|
|
20478
21145
|
)
|
|
20479
21146
|
] }) })
|
|
@@ -20481,25 +21148,25 @@ var NotificationsScreen = () => {
|
|
|
20481
21148
|
};
|
|
20482
21149
|
var FilterChip = ({ label, selected, onPress }) => {
|
|
20483
21150
|
const { colors } = useTheme();
|
|
20484
|
-
return /* @__PURE__ */ (0,
|
|
20485
|
-
|
|
21151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
21152
|
+
import_react_native65.TouchableOpacity,
|
|
20486
21153
|
{
|
|
20487
21154
|
onPress,
|
|
20488
21155
|
activeOpacity: 0.7,
|
|
20489
21156
|
accessibilityRole: "button",
|
|
20490
21157
|
accessibilityState: { selected },
|
|
20491
21158
|
style: [
|
|
20492
|
-
|
|
21159
|
+
styles53.chip,
|
|
20493
21160
|
{
|
|
20494
21161
|
backgroundColor: selected ? colors.primary : colors.surfaceAlt,
|
|
20495
21162
|
borderColor: selected ? colors.primary : colors.border
|
|
20496
21163
|
}
|
|
20497
21164
|
],
|
|
20498
|
-
children: /* @__PURE__ */ (0,
|
|
21165
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
|
|
20499
21166
|
}
|
|
20500
21167
|
);
|
|
20501
21168
|
};
|
|
20502
|
-
var
|
|
21169
|
+
var styles53 = import_react_native65.StyleSheet.create({
|
|
20503
21170
|
list: {
|
|
20504
21171
|
flex: 1
|
|
20505
21172
|
},
|
|
@@ -20533,7 +21200,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20533
21200
|
filterBtn: {
|
|
20534
21201
|
width: 40,
|
|
20535
21202
|
height: 40,
|
|
20536
|
-
borderWidth:
|
|
21203
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth,
|
|
20537
21204
|
borderRadius: radii.md,
|
|
20538
21205
|
justifyContent: "center",
|
|
20539
21206
|
alignItems: "center"
|
|
@@ -20554,7 +21221,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20554
21221
|
overflow: "hidden"
|
|
20555
21222
|
},
|
|
20556
21223
|
separator: {
|
|
20557
|
-
height:
|
|
21224
|
+
height: import_react_native65.StyleSheet.hairlineWidth,
|
|
20558
21225
|
marginLeft: spacing.lg + 36 + spacing.md
|
|
20559
21226
|
},
|
|
20560
21227
|
emptyWrap: {
|
|
@@ -20592,7 +21259,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20592
21259
|
justifyContent: "center",
|
|
20593
21260
|
paddingHorizontal: spacing.lg,
|
|
20594
21261
|
borderRadius: radii.pill,
|
|
20595
|
-
borderWidth:
|
|
21262
|
+
borderWidth: import_react_native65.StyleSheet.hairlineWidth
|
|
20596
21263
|
},
|
|
20597
21264
|
chipLabel: {
|
|
20598
21265
|
...typography.label
|
|
@@ -20611,7 +21278,7 @@ var styles51 = import_react_native63.StyleSheet.create({
|
|
|
20611
21278
|
});
|
|
20612
21279
|
|
|
20613
21280
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
20614
|
-
var
|
|
21281
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
20615
21282
|
var privacyCenterQueryClient = new import_react_query2.QueryClient();
|
|
20616
21283
|
function PrivacyCenterContent({ onBack }) {
|
|
20617
21284
|
const { currentPage } = useInternalNavigation();
|
|
@@ -20621,24 +21288,24 @@ function PrivacyCenterContent({ onBack }) {
|
|
|
20621
21288
|
const chromeMode = getPageChromeMode(currentPage);
|
|
20622
21289
|
const canvasIsLight = isLightColor(colors.canvasSubtle);
|
|
20623
21290
|
const barStyle = canvasIsLight ? "dark-content" : "light-content";
|
|
20624
|
-
(0,
|
|
20625
|
-
|
|
20626
|
-
if (
|
|
21291
|
+
(0, import_react45.useEffect)(() => {
|
|
21292
|
+
import_react_native66.StatusBar.setBarStyle(barStyle, true);
|
|
21293
|
+
if (import_react_native66.Platform.OS === "android") {
|
|
20627
21294
|
setNavBarIconStyle(canvasIsLight ? "dark" : "light");
|
|
20628
21295
|
}
|
|
20629
21296
|
}, [barStyle, canvasIsLight]);
|
|
20630
|
-
return /* @__PURE__ */ (0,
|
|
20631
|
-
/* @__PURE__ */ (0,
|
|
20632
|
-
/* @__PURE__ */ (0,
|
|
20633
|
-
/* @__PURE__ */ (0,
|
|
20634
|
-
/* @__PURE__ */ (0,
|
|
20635
|
-
currentPage === "home" && /* @__PURE__ */ (0,
|
|
20636
|
-
currentPage === "consent-manager" && /* @__PURE__ */ (0,
|
|
20637
|
-
currentPage === "form" && /* @__PURE__ */ (0,
|
|
20638
|
-
currentPage === "activity" && /* @__PURE__ */ (0,
|
|
20639
|
-
currentPage === "receipts" && /* @__PURE__ */ (0,
|
|
20640
|
-
currentPage === "case-details" && /* @__PURE__ */ (0,
|
|
20641
|
-
currentPage === "notifications" && /* @__PURE__ */ (0,
|
|
21297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native66.View, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
21298
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.StatusBar, { barStyle, translucent: true }),
|
|
21299
|
+
/* @__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: [
|
|
21300
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
|
|
21301
|
+
/* @__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: [
|
|
21302
|
+
currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HomeHub, {}),
|
|
21303
|
+
currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ConsentManager, {}),
|
|
21304
|
+
currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FormPage, {}),
|
|
21305
|
+
currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ActivitiesList, {}),
|
|
21306
|
+
currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ReceiptsList, {}),
|
|
21307
|
+
currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CaseDetailsPage, {}),
|
|
21308
|
+
currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NotificationsScreen, {})
|
|
20642
21309
|
] }) })
|
|
20643
21310
|
] }) })
|
|
20644
21311
|
] });
|
|
@@ -20652,22 +21319,34 @@ function RedactoPrivacyCenter({
|
|
|
20652
21319
|
theme: _theme,
|
|
20653
21320
|
accessToken,
|
|
20654
21321
|
refreshToken,
|
|
21322
|
+
token,
|
|
21323
|
+
email,
|
|
21324
|
+
mobile,
|
|
21325
|
+
ucic,
|
|
21326
|
+
organisationUuid,
|
|
21327
|
+
workspaceUuid,
|
|
20655
21328
|
onError,
|
|
20656
21329
|
initialPage = "home",
|
|
20657
21330
|
initialCaseUuid,
|
|
20658
21331
|
onBack
|
|
20659
21332
|
}) {
|
|
20660
|
-
return /* @__PURE__ */ (0,
|
|
21333
|
+
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)(
|
|
20661
21334
|
AuthProvider,
|
|
20662
21335
|
{
|
|
20663
|
-
accessToken,
|
|
20664
|
-
refreshToken,
|
|
21336
|
+
accessToken: accessToken != null ? accessToken : "",
|
|
21337
|
+
refreshToken: refreshToken != null ? refreshToken : "",
|
|
21338
|
+
token,
|
|
21339
|
+
sandboxUcic: ucic,
|
|
21340
|
+
sandboxSubject: email || mobile,
|
|
21341
|
+
organisationUuid,
|
|
21342
|
+
workspaceUuid,
|
|
21343
|
+
slug,
|
|
20665
21344
|
onError,
|
|
20666
|
-
children: /* @__PURE__ */ (0,
|
|
21345
|
+
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 }) }) }) }) })
|
|
20667
21346
|
}
|
|
20668
21347
|
) }) }) }) }) }) });
|
|
20669
21348
|
}
|
|
20670
|
-
var
|
|
21349
|
+
var styles54 = import_react_native66.StyleSheet.create({
|
|
20671
21350
|
container: {
|
|
20672
21351
|
flex: 1
|
|
20673
21352
|
},
|
|
@@ -20681,74 +21360,74 @@ var styles52 = import_react_native64.StyleSheet.create({
|
|
|
20681
21360
|
});
|
|
20682
21361
|
|
|
20683
21362
|
// src/RedactoPrivacyCenter/components/SideMenu.tsx
|
|
20684
|
-
var
|
|
20685
|
-
var
|
|
21363
|
+
var import_react_native67 = require("react-native");
|
|
21364
|
+
var import_react_i18next32 = require("react-i18next");
|
|
20686
21365
|
var import_react_native_svg4 = __toESM(require("react-native-svg"));
|
|
20687
|
-
var
|
|
21366
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
20688
21367
|
var MENU_ITEMS = [
|
|
20689
21368
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
|
|
20690
21369
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
|
|
20691
21370
|
{ page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
|
|
20692
21371
|
];
|
|
20693
21372
|
function SideMenu({ onBack } = {}) {
|
|
20694
|
-
const { t } = (0,
|
|
21373
|
+
const { t } = (0, import_react_i18next32.useTranslation)();
|
|
20695
21374
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20696
21375
|
const { organizationName, email } = useAuth();
|
|
20697
21376
|
const { colors } = useTheme();
|
|
20698
21377
|
const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
|
|
20699
21378
|
const displayName = organizationName || "Organization";
|
|
20700
|
-
return /* @__PURE__ */ (0,
|
|
20701
|
-
/* @__PURE__ */ (0,
|
|
20702
|
-
/* @__PURE__ */ (0,
|
|
20703
|
-
/* @__PURE__ */ (0,
|
|
20704
|
-
/* @__PURE__ */ (0,
|
|
20705
|
-
email ? /* @__PURE__ */ (0,
|
|
21379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
|
|
21380
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgSection, children: [
|
|
21381
|
+
/* @__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 }) }),
|
|
21382
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgInfo, children: [
|
|
21383
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
|
|
21384
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20706
21385
|
] })
|
|
20707
21386
|
] }),
|
|
20708
|
-
/* @__PURE__ */ (0,
|
|
20709
|
-
/* @__PURE__ */ (0,
|
|
21387
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21388
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
|
|
20710
21389
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
20711
|
-
return /* @__PURE__ */ (0,
|
|
20712
|
-
|
|
21390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21391
|
+
import_react_native67.TouchableOpacity,
|
|
20713
21392
|
{
|
|
20714
21393
|
style: [
|
|
20715
|
-
|
|
20716
|
-
isActive && [
|
|
21394
|
+
styles55.menuItem,
|
|
21395
|
+
isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
|
|
20717
21396
|
],
|
|
20718
21397
|
onPress: () => navigateTo(item.page),
|
|
20719
21398
|
activeOpacity: 0.7,
|
|
20720
21399
|
accessibilityRole: "button",
|
|
20721
21400
|
accessibilityState: { selected: isActive },
|
|
20722
21401
|
children: [
|
|
20723
|
-
/* @__PURE__ */ (0,
|
|
20724
|
-
/* @__PURE__ */ (0,
|
|
20725
|
-
|
|
21402
|
+
/* @__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 }) }),
|
|
21403
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
21404
|
+
import_react_native67.Text,
|
|
20726
21405
|
{
|
|
20727
21406
|
style: [
|
|
20728
|
-
|
|
21407
|
+
styles55.menuLabel,
|
|
20729
21408
|
{ color: isActive ? colors.primary : colors.text },
|
|
20730
|
-
isActive &&
|
|
21409
|
+
isActive && styles55.menuLabelActive
|
|
20731
21410
|
],
|
|
20732
21411
|
children: t(item.labelKey) || item.fallback
|
|
20733
21412
|
}
|
|
20734
21413
|
),
|
|
20735
|
-
isActive ? /* @__PURE__ */ (0,
|
|
21414
|
+
isActive ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
|
|
20736
21415
|
]
|
|
20737
21416
|
},
|
|
20738
21417
|
item.page
|
|
20739
21418
|
);
|
|
20740
21419
|
}) }),
|
|
20741
|
-
onBack ? /* @__PURE__ */ (0,
|
|
20742
|
-
/* @__PURE__ */ (0,
|
|
20743
|
-
/* @__PURE__ */ (0,
|
|
20744
|
-
/* @__PURE__ */ (0,
|
|
20745
|
-
|
|
21420
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
|
|
21421
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: { flex: 1 } }),
|
|
21422
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21423
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
21424
|
+
import_react_native67.TouchableOpacity,
|
|
20746
21425
|
{
|
|
20747
|
-
style:
|
|
21426
|
+
style: styles55.backBtn,
|
|
20748
21427
|
onPress: () => navigateBack(onBack),
|
|
20749
21428
|
activeOpacity: 0.7,
|
|
20750
21429
|
children: [
|
|
20751
|
-
/* @__PURE__ */ (0,
|
|
21430
|
+
/* @__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)(
|
|
20752
21431
|
import_react_native_svg4.Path,
|
|
20753
21432
|
{
|
|
20754
21433
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20757,7 +21436,7 @@ function SideMenu({ onBack } = {}) {
|
|
|
20757
21436
|
strokeLinecap: "round",
|
|
20758
21437
|
strokeLinejoin: "round"
|
|
20759
21438
|
}
|
|
20760
|
-
) : /* @__PURE__ */ (0,
|
|
21439
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
20761
21440
|
import_react_native_svg4.Path,
|
|
20762
21441
|
{
|
|
20763
21442
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20767,14 +21446,14 @@ function SideMenu({ onBack } = {}) {
|
|
|
20767
21446
|
strokeLinejoin: "round"
|
|
20768
21447
|
}
|
|
20769
21448
|
) }),
|
|
20770
|
-
/* @__PURE__ */ (0,
|
|
21449
|
+
/* @__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" })
|
|
20771
21450
|
]
|
|
20772
21451
|
}
|
|
20773
21452
|
)
|
|
20774
21453
|
] }) : null
|
|
20775
21454
|
] });
|
|
20776
21455
|
}
|
|
20777
|
-
var
|
|
21456
|
+
var styles55 = import_react_native67.StyleSheet.create({
|
|
20778
21457
|
container: {
|
|
20779
21458
|
flex: 1,
|
|
20780
21459
|
paddingTop: 12
|
|
@@ -20860,42 +21539,68 @@ var styles53 = import_react_native65.StyleSheet.create({
|
|
|
20860
21539
|
});
|
|
20861
21540
|
|
|
20862
21541
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20863
|
-
var
|
|
20864
|
-
var
|
|
20865
|
-
var
|
|
21542
|
+
var import_react46 = require("react");
|
|
21543
|
+
var import_react_native69 = require("react-native");
|
|
21544
|
+
var import_react_i18next34 = require("react-i18next");
|
|
20866
21545
|
var import_react_native_svg6 = __toESM(require("react-native-svg"));
|
|
20867
21546
|
|
|
20868
21547
|
// src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
|
|
20869
|
-
var
|
|
20870
|
-
var
|
|
21548
|
+
var import_react_native68 = require("react-native");
|
|
21549
|
+
var import_react_i18next33 = require("react-i18next");
|
|
20871
21550
|
var import_react_native_svg5 = __toESM(require("react-native-svg"));
|
|
20872
|
-
var
|
|
21551
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
20873
21552
|
var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
20874
|
-
const { t } = (0,
|
|
21553
|
+
const { t } = (0, import_react_i18next33.useTranslation)();
|
|
20875
21554
|
const { organizationName, email } = useAuth();
|
|
20876
21555
|
const { colors, branding } = useTheme();
|
|
21556
|
+
const { switchProfile } = useProfileSwitch();
|
|
20877
21557
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20878
21558
|
const handleAction = () => {
|
|
20879
21559
|
onClose();
|
|
20880
21560
|
navigateBack(onBack);
|
|
20881
21561
|
};
|
|
20882
|
-
return /* @__PURE__ */ (0,
|
|
20883
|
-
/* @__PURE__ */ (0,
|
|
20884
|
-
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0,
|
|
20885
|
-
/* @__PURE__ */ (0,
|
|
20886
|
-
/* @__PURE__ */ (0,
|
|
20887
|
-
email ? /* @__PURE__ */ (0,
|
|
21562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
|
|
21563
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identity, children: [
|
|
21564
|
+
(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 }),
|
|
21565
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identityText, children: [
|
|
21566
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
|
|
21567
|
+
email ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20888
21568
|
] })
|
|
20889
21569
|
] }),
|
|
20890
|
-
|
|
20891
|
-
|
|
21570
|
+
switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21571
|
+
import_react_native68.TouchableOpacity,
|
|
20892
21572
|
{
|
|
20893
|
-
style: [
|
|
21573
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
|
|
21574
|
+
onPress: () => {
|
|
21575
|
+
onClose();
|
|
21576
|
+
switchProfile();
|
|
21577
|
+
},
|
|
21578
|
+
activeOpacity: 0.7,
|
|
21579
|
+
accessibilityRole: "button",
|
|
21580
|
+
children: [
|
|
21581
|
+
/* @__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)(
|
|
21582
|
+
import_react_native_svg5.Path,
|
|
21583
|
+
{
|
|
21584
|
+
d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
|
|
21585
|
+
stroke: colors.primary,
|
|
21586
|
+
strokeWidth: 2,
|
|
21587
|
+
strokeLinecap: "round",
|
|
21588
|
+
strokeLinejoin: "round"
|
|
21589
|
+
}
|
|
21590
|
+
) }),
|
|
21591
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
|
|
21592
|
+
]
|
|
21593
|
+
}
|
|
21594
|
+
) : null,
|
|
21595
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
21596
|
+
import_react_native68.TouchableOpacity,
|
|
21597
|
+
{
|
|
21598
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
|
|
20894
21599
|
onPress: handleAction,
|
|
20895
21600
|
activeOpacity: 0.7,
|
|
20896
21601
|
accessibilityRole: "button",
|
|
20897
21602
|
children: [
|
|
20898
|
-
/* @__PURE__ */ (0,
|
|
21603
|
+
/* @__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)(
|
|
20899
21604
|
import_react_native_svg5.Path,
|
|
20900
21605
|
{
|
|
20901
21606
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20904,7 +21609,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20904
21609
|
strokeLinecap: "round",
|
|
20905
21610
|
strokeLinejoin: "round"
|
|
20906
21611
|
}
|
|
20907
|
-
) : /* @__PURE__ */ (0,
|
|
21612
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
20908
21613
|
import_react_native_svg5.Path,
|
|
20909
21614
|
{
|
|
20910
21615
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20914,13 +21619,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20914
21619
|
strokeLinejoin: "round"
|
|
20915
21620
|
}
|
|
20916
21621
|
) }),
|
|
20917
|
-
/* @__PURE__ */ (0,
|
|
21622
|
+
/* @__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" })
|
|
20918
21623
|
]
|
|
20919
21624
|
}
|
|
20920
21625
|
) : null
|
|
20921
21626
|
] });
|
|
20922
21627
|
};
|
|
20923
|
-
var
|
|
21628
|
+
var styles56 = import_react_native68.StyleSheet.create({
|
|
20924
21629
|
identity: {
|
|
20925
21630
|
flexDirection: "row",
|
|
20926
21631
|
alignItems: "center",
|
|
@@ -20961,33 +21666,33 @@ var styles54 = import_react_native66.StyleSheet.create({
|
|
|
20961
21666
|
});
|
|
20962
21667
|
|
|
20963
21668
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20964
|
-
var
|
|
21669
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
20965
21670
|
function Navbar({ mode = "primary", onBack }) {
|
|
20966
|
-
const { t } = (0,
|
|
21671
|
+
const { t } = (0, import_react_i18next34.useTranslation)();
|
|
20967
21672
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20968
21673
|
const { organizationName, email } = useAuth();
|
|
20969
21674
|
const { colors, branding } = useTheme();
|
|
20970
|
-
const [locale, setLocale] = (0,
|
|
20971
|
-
const [menuOpen, setMenuOpen] = (0,
|
|
21675
|
+
const [locale, setLocale] = (0, import_react46.useState)(i18n_default.language || "en");
|
|
21676
|
+
const [menuOpen, setMenuOpen] = (0, import_react46.useState)(false);
|
|
20972
21677
|
const unreadCount = useUnreadCount();
|
|
20973
21678
|
const { status: pageStatus } = usePageStatus();
|
|
20974
21679
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
|
|
20975
21680
|
const isDetail = mode === "detail";
|
|
20976
|
-
(0,
|
|
21681
|
+
(0, import_react46.useEffect)(() => {
|
|
20977
21682
|
const handleLanguageChanged = () => setLocale(i18n_default.language);
|
|
20978
21683
|
i18n_default.on("languageChanged", handleLanguageChanged);
|
|
20979
21684
|
return () => {
|
|
20980
21685
|
i18n_default.off("languageChanged", handleLanguageChanged);
|
|
20981
21686
|
};
|
|
20982
21687
|
}, []);
|
|
20983
|
-
const handleLanguageChange = (0,
|
|
21688
|
+
const handleLanguageChange = (0, import_react46.useCallback)((value) => {
|
|
20984
21689
|
i18n_default.changeLanguage(value);
|
|
20985
21690
|
}, []);
|
|
20986
21691
|
const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20987
21692
|
const accountLabel = brandLabel || email || t("account") || "Account";
|
|
20988
|
-
const brandLockup = /* @__PURE__ */ (0,
|
|
20989
|
-
/* @__PURE__ */ (0,
|
|
20990
|
-
/* @__PURE__ */ (0,
|
|
21693
|
+
const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.brandRow, children: [
|
|
21694
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
|
|
21695
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
|
|
20991
21696
|
] });
|
|
20992
21697
|
const handleDetailBack = () => {
|
|
20993
21698
|
if (currentPage === "case-details") {
|
|
@@ -20999,26 +21704,26 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20999
21704
|
}
|
|
21000
21705
|
};
|
|
21001
21706
|
if (isDetail) {
|
|
21002
|
-
return /* @__PURE__ */ (0,
|
|
21003
|
-
/* @__PURE__ */ (0,
|
|
21004
|
-
|
|
21707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21708
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21709
|
+
import_react_native69.View,
|
|
21005
21710
|
{
|
|
21006
21711
|
style: [
|
|
21007
|
-
|
|
21008
|
-
|
|
21712
|
+
styles57.container,
|
|
21713
|
+
styles57.detailContainer,
|
|
21009
21714
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
21010
21715
|
],
|
|
21011
|
-
children: /* @__PURE__ */ (0,
|
|
21012
|
-
/* @__PURE__ */ (0,
|
|
21013
|
-
|
|
21716
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailRow, children: [
|
|
21717
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21718
|
+
import_react_native69.TouchableOpacity,
|
|
21014
21719
|
{
|
|
21015
|
-
style:
|
|
21720
|
+
style: styles57.backButton,
|
|
21016
21721
|
onPress: handleDetailBack,
|
|
21017
21722
|
activeOpacity: 0.7,
|
|
21018
21723
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21019
21724
|
accessibilityRole: "button",
|
|
21020
21725
|
accessibilityLabel: t("back") || "Back",
|
|
21021
|
-
children: /* @__PURE__ */ (0,
|
|
21726
|
+
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)(
|
|
21022
21727
|
import_react_native_svg6.Path,
|
|
21023
21728
|
{
|
|
21024
21729
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -21030,36 +21735,36 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
21030
21735
|
) })
|
|
21031
21736
|
}
|
|
21032
21737
|
),
|
|
21033
|
-
/* @__PURE__ */ (0,
|
|
21034
|
-
/* @__PURE__ */ (0,
|
|
21035
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21738
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailTitleWrap, children: [
|
|
21739
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21740
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
21036
21741
|
] })
|
|
21037
21742
|
] })
|
|
21038
21743
|
}
|
|
21039
21744
|
),
|
|
21040
|
-
/* @__PURE__ */ (0,
|
|
21745
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21041
21746
|
] });
|
|
21042
21747
|
}
|
|
21043
|
-
return /* @__PURE__ */ (0,
|
|
21044
|
-
/* @__PURE__ */ (0,
|
|
21045
|
-
|
|
21748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
|
|
21749
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
21750
|
+
import_react_native69.View,
|
|
21046
21751
|
{
|
|
21047
21752
|
style: [
|
|
21048
|
-
|
|
21753
|
+
styles57.container,
|
|
21049
21754
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
21050
21755
|
],
|
|
21051
21756
|
children: [
|
|
21052
|
-
/* @__PURE__ */ (0,
|
|
21053
|
-
onBack ? /* @__PURE__ */ (0,
|
|
21054
|
-
|
|
21757
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.appBar, children: [
|
|
21758
|
+
onBack ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21759
|
+
import_react_native69.TouchableOpacity,
|
|
21055
21760
|
{
|
|
21056
|
-
style:
|
|
21761
|
+
style: styles57.backButton,
|
|
21057
21762
|
onPress: () => navigateBack(onBack),
|
|
21058
21763
|
activeOpacity: 0.7,
|
|
21059
21764
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21060
21765
|
accessibilityRole: "button",
|
|
21061
21766
|
accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
|
|
21062
|
-
children: /* @__PURE__ */ (0,
|
|
21767
|
+
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)(
|
|
21063
21768
|
import_react_native_svg6.Path,
|
|
21064
21769
|
{
|
|
21065
21770
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -21071,39 +21776,39 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
21071
21776
|
) })
|
|
21072
21777
|
}
|
|
21073
21778
|
) : null,
|
|
21074
|
-
/* @__PURE__ */ (0,
|
|
21075
|
-
/* @__PURE__ */ (0,
|
|
21076
|
-
/* @__PURE__ */ (0,
|
|
21077
|
-
/* @__PURE__ */ (0,
|
|
21078
|
-
/* @__PURE__ */ (0,
|
|
21079
|
-
|
|
21779
|
+
/* @__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 }),
|
|
21780
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.actions, children: [
|
|
21781
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
|
|
21782
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
|
|
21783
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
21784
|
+
import_react_native69.TouchableOpacity,
|
|
21080
21785
|
{
|
|
21081
|
-
style:
|
|
21786
|
+
style: styles57.avatarButton,
|
|
21082
21787
|
onPress: () => setMenuOpen(true),
|
|
21083
21788
|
activeOpacity: 0.7,
|
|
21084
21789
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21085
21790
|
accessibilityRole: "button",
|
|
21086
21791
|
accessibilityLabel: accountLabel,
|
|
21087
|
-
children: /* @__PURE__ */ (0,
|
|
21792
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
|
|
21088
21793
|
}
|
|
21089
21794
|
)
|
|
21090
21795
|
] })
|
|
21091
21796
|
] }),
|
|
21092
|
-
/* @__PURE__ */ (0,
|
|
21093
|
-
/* @__PURE__ */ (0,
|
|
21094
|
-
pageStatus ? /* @__PURE__ */ (0,
|
|
21797
|
+
/* @__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: [
|
|
21798
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21799
|
+
pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
21095
21800
|
] }) })
|
|
21096
21801
|
]
|
|
21097
21802
|
}
|
|
21098
21803
|
),
|
|
21099
|
-
/* @__PURE__ */ (0,
|
|
21804
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21100
21805
|
] });
|
|
21101
21806
|
}
|
|
21102
|
-
var
|
|
21807
|
+
var styles57 = import_react_native69.StyleSheet.create({
|
|
21103
21808
|
container: {
|
|
21104
21809
|
paddingHorizontal: spacing.lg,
|
|
21105
21810
|
paddingBottom: spacing.md,
|
|
21106
|
-
borderBottomWidth:
|
|
21811
|
+
borderBottomWidth: import_react_native69.StyleSheet.hairlineWidth
|
|
21107
21812
|
},
|
|
21108
21813
|
detailContainer: {
|
|
21109
21814
|
paddingBottom: spacing.sm
|
|
@@ -21183,10 +21888,10 @@ var styles55 = import_react_native67.StyleSheet.create({
|
|
|
21183
21888
|
});
|
|
21184
21889
|
|
|
21185
21890
|
// src/RedactoPrivacyCenter/components/BottomTabBar.tsx
|
|
21186
|
-
var
|
|
21187
|
-
var
|
|
21188
|
-
var
|
|
21189
|
-
var
|
|
21891
|
+
var import_react47 = require("react");
|
|
21892
|
+
var import_react_native70 = require("react-native");
|
|
21893
|
+
var import_react_i18next35 = require("react-i18next");
|
|
21894
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
21190
21895
|
var TAB_ITEMS = [
|
|
21191
21896
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
|
|
21192
21897
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
|
|
@@ -21197,10 +21902,10 @@ var PAD_H = spacing.lg;
|
|
|
21197
21902
|
var PILL_WIDTH = 56;
|
|
21198
21903
|
var PILL_HEIGHT = 34;
|
|
21199
21904
|
function BottomTabBar({ showFooter = true }) {
|
|
21200
|
-
const { t } = (0,
|
|
21905
|
+
const { t } = (0, import_react_i18next35.useTranslation)();
|
|
21201
21906
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
21202
21907
|
const { colors } = useTheme();
|
|
21203
|
-
const [rowWidth, setRowWidth] = (0,
|
|
21908
|
+
const [rowWidth, setRowWidth] = (0, import_react47.useState)(0);
|
|
21204
21909
|
const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
|
|
21205
21910
|
const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
|
|
21206
21911
|
const activeIndex = TAB_ITEMS.findIndex(
|
|
@@ -21208,13 +21913,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21208
21913
|
);
|
|
21209
21914
|
const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
|
|
21210
21915
|
const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
|
|
21211
|
-
return /* @__PURE__ */ (0,
|
|
21212
|
-
/* @__PURE__ */ (0,
|
|
21213
|
-
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0,
|
|
21214
|
-
|
|
21916
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
|
|
21917
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: styles58.container, onLayout, children: [
|
|
21918
|
+
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21919
|
+
import_react_native70.Animated.View,
|
|
21215
21920
|
{
|
|
21216
21921
|
style: [
|
|
21217
|
-
|
|
21922
|
+
styles58.pill,
|
|
21218
21923
|
{
|
|
21219
21924
|
width: PILL_WIDTH,
|
|
21220
21925
|
left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
|
|
@@ -21227,17 +21932,17 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21227
21932
|
TAB_ITEMS.map((item) => {
|
|
21228
21933
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
21229
21934
|
const label = t(item.labelKey) || item.fallback;
|
|
21230
|
-
return /* @__PURE__ */ (0,
|
|
21231
|
-
|
|
21935
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
|
|
21936
|
+
import_react_native70.TouchableOpacity,
|
|
21232
21937
|
{
|
|
21233
|
-
style:
|
|
21938
|
+
style: styles58.tab,
|
|
21234
21939
|
onPress: () => navigateTo(item.page),
|
|
21235
21940
|
activeOpacity: 0.7,
|
|
21236
21941
|
accessibilityRole: "tab",
|
|
21237
21942
|
accessibilityState: { selected: isActive },
|
|
21238
21943
|
accessibilityLabel: label,
|
|
21239
21944
|
children: [
|
|
21240
|
-
/* @__PURE__ */ (0,
|
|
21945
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: styles58.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21241
21946
|
Icon,
|
|
21242
21947
|
{
|
|
21243
21948
|
name: item.icon,
|
|
@@ -21246,10 +21951,10 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21246
21951
|
strokeWidth: isActive ? 2.1 : 1.85
|
|
21247
21952
|
}
|
|
21248
21953
|
) }),
|
|
21249
|
-
/* @__PURE__ */ (0,
|
|
21250
|
-
|
|
21954
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
21955
|
+
import_react_native70.Text,
|
|
21251
21956
|
{
|
|
21252
|
-
style: [
|
|
21957
|
+
style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
|
|
21253
21958
|
numberOfLines: 1,
|
|
21254
21959
|
children: label
|
|
21255
21960
|
}
|
|
@@ -21260,13 +21965,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21260
21965
|
);
|
|
21261
21966
|
})
|
|
21262
21967
|
] }),
|
|
21263
|
-
showFooter ? /* @__PURE__ */ (0,
|
|
21264
|
-
/* @__PURE__ */ (0,
|
|
21968
|
+
showFooter ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Footer, { inline: true }) : null,
|
|
21969
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: { height: BOTTOM_INSET } })
|
|
21265
21970
|
] });
|
|
21266
21971
|
}
|
|
21267
|
-
var
|
|
21972
|
+
var styles58 = import_react_native70.StyleSheet.create({
|
|
21268
21973
|
wrapper: {
|
|
21269
|
-
borderTopWidth:
|
|
21974
|
+
borderTopWidth: import_react_native70.StyleSheet.hairlineWidth
|
|
21270
21975
|
},
|
|
21271
21976
|
container: {
|
|
21272
21977
|
flexDirection: "row",
|