@redacto.io/consent-sdk-react-native 5.0.0-beta.0 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -0
- package/dist/chunk-B2TXWC2C.mjs +60 -0
- package/dist/index.d.mts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +196 -55
- package/dist/index.mjs +153 -56
- package/dist/privacy-center.d.mts +147 -63
- package/dist/privacy-center.d.ts +147 -63
- package/dist/privacy-center.js +1570 -647
- package/dist/privacy-center.mjs +1530 -644
- package/package.json +1 -1
- package/dist/chunk-Y6FXYEAI.mjs +0 -10
package/dist/privacy-center.mjs
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
SANDBOX_TOKEN_HEADER,
|
|
3
|
+
__require,
|
|
4
|
+
languageOptions
|
|
5
|
+
} from "./chunk-B2TXWC2C.mjs";
|
|
4
6
|
|
|
5
7
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
6
|
-
import { useEffect as
|
|
8
|
+
import { useEffect as useEffect21 } from "react";
|
|
7
9
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
8
10
|
import { I18nextProvider } from "react-i18next";
|
|
9
|
-
import { View as
|
|
11
|
+
import { View as View52, StyleSheet as StyleSheet55, StatusBar as StatusBar2, Platform as Platform8 } from "react-native";
|
|
10
12
|
|
|
11
13
|
// src/RedactoPrivacyCenter/lib/i18n.ts
|
|
12
14
|
import i18n from "i18next";
|
|
@@ -423,7 +425,14 @@ var translation_default = {
|
|
|
423
425
|
submittingAs: "Submitting as {{email}}",
|
|
424
426
|
tapToChooseFile: "Tap to choose a file",
|
|
425
427
|
view: "View",
|
|
426
|
-
whatDoYouNeed: "What do you need?"
|
|
428
|
+
whatDoYouNeed: "What do you need?",
|
|
429
|
+
sessionExpiredTitle: "Your session has expired",
|
|
430
|
+
sessionExpiredDescription: "Please sign in again to continue.",
|
|
431
|
+
chooseYourProfile: "Choose your profile",
|
|
432
|
+
loginIdentifierLinkedToMultipleProfiles: "The login identifier is linked to more than one profile. Choose the one you want to view.",
|
|
433
|
+
userIdLabel: "User ID: {{id}}",
|
|
434
|
+
signingInEllipsis: "Signing in\u2026",
|
|
435
|
+
switchProfile: "Switch profile"
|
|
427
436
|
};
|
|
428
437
|
|
|
429
438
|
// src/RedactoPrivacyCenter/locales/as/translation.json
|
|
@@ -837,7 +846,14 @@ var translation_default2 = {
|
|
|
837
846
|
submittingAs: "{{email}} \u09B9\u09BF\u099A\u09BE\u09AA\u09C7 \u09A6\u09BE\u0996\u09BF\u09B2 \u0995\u09F0\u09BF \u0986\u099B\u09C7",
|
|
838
847
|
tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09BF\u09AC\u09B2\u09C8 \u099F\u09BF\u09AA\u0995",
|
|
839
848
|
view: "\u099A\u09BE\u0993\u0995",
|
|
840
|
-
whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?"
|
|
849
|
+
whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?",
|
|
850
|
+
sessionExpiredTitle: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u099B\u09C7\u099A\u09A8 \u09B6\u09C7\u09B7 \u09B9\u09C8\u099B\u09C7",
|
|
851
|
+
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",
|
|
852
|
+
chooseYourProfile: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995",
|
|
853
|
+
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",
|
|
854
|
+
userIdLabel: "\u09AC\u09CD\u09AF\u09F1\u09B9\u09BE\u09F0\u0995\u09BE\u09F0\u09C0 \u0986\u0987\u09A1\u09BF: {{id}}",
|
|
855
|
+
signingInEllipsis: "\u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u09C8 \u0986\u099B\u09C7\u2026",
|
|
856
|
+
switchProfile: "\u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09B8\u09B2\u09A8\u09BF \u0995\u09F0\u0995"
|
|
841
857
|
};
|
|
842
858
|
|
|
843
859
|
// src/RedactoPrivacyCenter/locales/bn/translation.json
|
|
@@ -1251,7 +1267,14 @@ var translation_default3 = {
|
|
|
1251
1267
|
submittingAs: "{{email}} \u09B9\u09BF\u09B8\u09BE\u09AC\u09C7 \u099C\u09AE\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7",
|
|
1252
1268
|
tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A4\u09C7 \u099F\u09CD\u09AF\u09BE\u09AA \u0995\u09B0\u09C1\u09A8",
|
|
1253
1269
|
view: "\u09A6\u09C7\u0996\u09C1\u09A8",
|
|
1254
|
-
whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?"
|
|
1270
|
+
whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?",
|
|
1271
|
+
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",
|
|
1272
|
+
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",
|
|
1273
|
+
chooseYourProfile: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8",
|
|
1274
|
+
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",
|
|
1275
|
+
userIdLabel: "\u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0 \u0986\u0987\u09A1\u09BF: {{id}}",
|
|
1276
|
+
signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u099A\u09CD\u099B\u09C7\u2026",
|
|
1277
|
+
switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8"
|
|
1255
1278
|
};
|
|
1256
1279
|
|
|
1257
1280
|
// src/RedactoPrivacyCenter/locales/brx/translation.json
|
|
@@ -1665,7 +1688,14 @@ var translation_default4 = {
|
|
|
1665
1688
|
submittingAs: "{{email}} \u092E\u0939\u0930\u0948 \u0917\u0925\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B",
|
|
1666
1689
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916\u0928\u094B \u091F\u0947\u092C \u0916\u093E\u0932\u093E\u092E",
|
|
1667
1690
|
view: "\u0928\u093E\u092F",
|
|
1668
|
-
whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?"
|
|
1691
|
+
whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?",
|
|
1692
|
+
sessionExpiredTitle: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u0938\u0947\u0938\u0928 \u091C\u094B\u092C\u092C\u093E\u092F",
|
|
1693
|
+
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",
|
|
1694
|
+
chooseYourProfile: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u092A\u094D\u0930\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916",
|
|
1695
|
+
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",
|
|
1696
|
+
userIdLabel: "\u092F\u0942\u091C\u0930 \u0906\u0908\u0921\u0940: {{id}}",
|
|
1697
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B \u0926\u0902\u2026",
|
|
1698
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0938\u094B\u0932\u093E\u092F"
|
|
1669
1699
|
};
|
|
1670
1700
|
|
|
1671
1701
|
// src/RedactoPrivacyCenter/locales/doi/translation.json
|
|
@@ -2079,7 +2109,14 @@ var translation_default5 = {
|
|
|
2079
2109
|
submittingAs: "{{email}} \u0926\u0947 \u0930\u0942\u092A \u091A \u091C\u092E\u093E\u0902 \u0915\u0930\u0926\u0947",
|
|
2080
2110
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u091F\u0948\u092A \u0915\u0930\u094B",
|
|
2081
2111
|
view: "\u0926\u093F\u0915\u094D\u0916\u094B",
|
|
2082
|
-
whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?"
|
|
2112
|
+
whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?",
|
|
2113
|
+
sessionExpiredTitle: "\u0924\u0941\u0902\u0926\u093E \u0938\u0924\u094D\u0930 \u0916\u0924\u092E \u0939\u094B\u0908 \u0917\u0947\u0906 \u0910",
|
|
2114
|
+
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",
|
|
2115
|
+
chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u094B",
|
|
2116
|
+
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",
|
|
2117
|
+
userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
2118
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B\u0906 \u0915\u0930\u0926\u093E \u0910\u2026",
|
|
2119
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094B"
|
|
2083
2120
|
};
|
|
2084
2121
|
|
|
2085
2122
|
// src/RedactoPrivacyCenter/locales/gom/translation.json
|
|
@@ -2493,7 +2530,14 @@ var translation_default6 = {
|
|
|
2493
2530
|
submittingAs: "{{email}} \u092E\u094D\u0939\u0942\u0923 \u0938\u093E\u0926\u0930 \u0915\u0930\u0924\u093E",
|
|
2494
2531
|
tapToChooseFile: "\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u092A\u093E\u0915 \u091F\u0945\u092A \u0915\u0930\u093E\u0924",
|
|
2495
2532
|
view: "\u092A\u0933\u092F\u093E\u0924",
|
|
2496
|
-
whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?"
|
|
2533
|
+
whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?",
|
|
2534
|
+
sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947\u0902 \u0938\u0924\u094D\u0930 \u0938\u094B\u0902\u092A\u0932\u093E\u0902",
|
|
2535
|
+
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.",
|
|
2536
|
+
chooseYourProfile: "\u0924\u0941\u092E\u091A\u0947\u0902 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u093E\u0924",
|
|
2537
|
+
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.",
|
|
2538
|
+
userIdLabel: "\u0935\u093E\u092A\u0930\u092A\u0940 \u0906\u092F\u0921\u0940: {{id}}",
|
|
2539
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u0935\u0928 \u0906\u0938\u093E\u2026",
|
|
2540
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u092C\u0926\u0932\u093E"
|
|
2497
2541
|
};
|
|
2498
2542
|
|
|
2499
2543
|
// src/RedactoPrivacyCenter/locales/gu/translation.json
|
|
@@ -2907,7 +2951,14 @@ var translation_default7 = {
|
|
|
2907
2951
|
submittingAs: "{{email}} \u0AA4\u0AB0\u0AC0\u0A95\u0AC7 \u0AB8\u0AAC\u0AAE\u0ABF\u0A9F \u0A95\u0AB0\u0AC0 \u0AB0\u0AB9\u0ACD\u0AAF\u0ABE \u0A9B\u0ACB",
|
|
2908
2952
|
tapToChooseFile: "\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0AB5\u0ABE \u0A9F\u0AC5\u0AAA \u0A95\u0AB0\u0ACB",
|
|
2909
2953
|
view: "\u0A9C\u0AC1\u0A93",
|
|
2910
|
-
whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?"
|
|
2954
|
+
whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?",
|
|
2955
|
+
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",
|
|
2956
|
+
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.",
|
|
2957
|
+
chooseYourProfile: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC0 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB",
|
|
2958
|
+
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.",
|
|
2959
|
+
userIdLabel: "\u0AB5\u0AAA\u0AB0\u0ABE\u0AB6\u0A95\u0AB0\u0ACD\u0AA4\u0ABE \u0A86\u0A88\u0AA1\u0AC0: {{id}}",
|
|
2960
|
+
signingInEllipsis: "\u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0AA5\u0A88 \u0AB0\u0AB9\u0ACD\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7\u2026",
|
|
2961
|
+
switchProfile: "\u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAC\u0AA6\u0AB2\u0ACB"
|
|
2911
2962
|
};
|
|
2912
2963
|
|
|
2913
2964
|
// src/RedactoPrivacyCenter/locales/hi/translation.json
|
|
@@ -3321,7 +3372,14 @@ var translation_default8 = {
|
|
|
3321
3372
|
submittingAs: "{{email}} \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u092C\u092E\u093F\u091F \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
|
|
3322
3373
|
tapToChooseFile: "\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091F\u0948\u092A \u0915\u0930\u0947\u0902",
|
|
3323
3374
|
view: "\u0926\u0947\u0916\u0947\u0902",
|
|
3324
|
-
whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?"
|
|
3375
|
+
whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?",
|
|
3376
|
+
sessionExpiredTitle: "\u0906\u092A\u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E \u0939\u0948",
|
|
3377
|
+
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",
|
|
3378
|
+
chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0947\u0902",
|
|
3379
|
+
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",
|
|
3380
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
3381
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
|
|
3382
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u092C\u0926\u0932\u0947\u0902"
|
|
3325
3383
|
};
|
|
3326
3384
|
|
|
3327
3385
|
// src/RedactoPrivacyCenter/locales/kn/translation.json
|
|
@@ -3735,7 +3793,14 @@ var translation_default9 = {
|
|
|
3735
3793
|
submittingAs: "{{email}} \u0C86\u0C97\u0CBF \u0CB8\u0CB2\u0CCD\u0CB2\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6",
|
|
3736
3794
|
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",
|
|
3737
3795
|
view: "\u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CBF",
|
|
3738
|
-
whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?"
|
|
3796
|
+
whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?",
|
|
3797
|
+
sessionExpiredTitle: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CB8\u0CC6\u0CB7\u0CA8\u0CCD \u0C85\u0CB5\u0CA7\u0CBF \u0CAE\u0CC1\u0C97\u0CBF\u0CA6\u0CBF\u0CA6\u0CC6",
|
|
3798
|
+
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.",
|
|
3799
|
+
chooseYourProfile: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF",
|
|
3800
|
+
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.",
|
|
3801
|
+
userIdLabel: "\u0CAC\u0CB3\u0C95\u0CC6\u0CA6\u0CBE\u0CB0 \u0C90\u0CA1\u0CBF: {{id}}",
|
|
3802
|
+
signingInEllipsis: "\u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0C86\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6\u2026",
|
|
3803
|
+
switchProfile: "\u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0CAC\u0CA6\u0CB2\u0CBE\u0CAF\u0CBF\u0CB8\u0CBF"
|
|
3739
3804
|
};
|
|
3740
3805
|
|
|
3741
3806
|
// src/RedactoPrivacyCenter/locales/ks/translation.json
|
|
@@ -4149,7 +4214,14 @@ var translation_default10 = {
|
|
|
4149
4214
|
submittingAs: "{{email}} \u067E\u0620\u0658\u0679\u06BE \u062C\u0645\u0639 \u06A9\u0631\u0627\u0646",
|
|
4150
4215
|
tapToChooseFile: "\u0641\u0627\u06CC\u0644 \u0698\u0627\u0631\u0646\u06C1 \u062E\u0672\u0637\u0631\u0655 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u0648",
|
|
4151
4216
|
view: "\u0648\u064F\u0686\u06BE\u0650\u0648",
|
|
4152
|
-
whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F"
|
|
4217
|
+
whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F",
|
|
4218
|
+
sessionExpiredTitle: "\u062A\u064F\u06C1\u0646\u065B\u062F \u0633\u06CC\u0634\u064E\u0646 \u062E\u062A\u0645 \u06AF\u06C4\u0645\u064F\u062A",
|
|
4219
|
+
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",
|
|
4220
|
+
chooseYourProfile: "\u067E\u0646\u0646\u06C1\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0698\u0627\u0631\u0655\u0648",
|
|
4221
|
+
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",
|
|
4222
|
+
userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
|
|
4223
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06AF\u0698\u06BE\u0627\u0646 \u0686\u06BE\u064F\u2026",
|
|
4224
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0628\u062F\u0644\u0627\u0648"
|
|
4153
4225
|
};
|
|
4154
4226
|
|
|
4155
4227
|
// src/RedactoPrivacyCenter/locales/mai/translation.json
|
|
@@ -4563,7 +4635,14 @@ var translation_default11 = {
|
|
|
4563
4635
|
submittingAs: "{{email}} \u0930\u0942\u092A\u092E\u0947 \u091C\u092E\u093E \u0915\u093D \u0930\u0939\u0932 \u091B\u0940",
|
|
4564
4636
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u092C\u093E\u0915 \u0932\u0947\u0932 \u091F\u0948\u092A \u0915\u0930\u0942",
|
|
4565
4637
|
view: "\u0926\u0947\u0916\u0942",
|
|
4566
|
-
whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?"
|
|
4638
|
+
whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?",
|
|
4639
|
+
sessionExpiredTitle: "\u0905\u0939\u093E\u0901\u0915 \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u093D \u0917\u0947\u0932 \u0905\u091B\u093F",
|
|
4640
|
+
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",
|
|
4641
|
+
chooseYourProfile: "\u0905\u092A\u0928 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0942",
|
|
4642
|
+
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",
|
|
4643
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0907\u0921\u0940: {{id}}",
|
|
4644
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u092D' \u0930\u0939\u0932 \u0905\u091B\u093F\u2026",
|
|
4645
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u0942"
|
|
4567
4646
|
};
|
|
4568
4647
|
|
|
4569
4648
|
// src/RedactoPrivacyCenter/locales/ml/translation.json
|
|
@@ -4977,7 +5056,14 @@ var translation_default12 = {
|
|
|
4977
5056
|
submittingAs: "{{email}} \u0D06\u0D2F\u0D3F \u0D38\u0D2E\u0D7C\u0D2A\u0D4D\u0D2A\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41",
|
|
4978
5057
|
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",
|
|
4979
5058
|
view: "\u0D15\u0D3E\u0D23\u0D41\u0D15",
|
|
4980
|
-
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?"
|
|
5059
|
+
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?",
|
|
5060
|
+
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",
|
|
5061
|
+
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.",
|
|
5062
|
+
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",
|
|
5063
|
+
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.",
|
|
5064
|
+
userIdLabel: "\u0D09\u0D2A\u0D2F\u0D4B\u0D15\u0D4D\u0D24\u0D43 \u0D10\u0D21\u0D3F: {{id}}",
|
|
5065
|
+
signingInEllipsis: "\u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D28\u0D4D\u0D28\u0D41\u2026",
|
|
5066
|
+
switchProfile: "\u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D2E\u0D3E\u0D31\u0D4D\u0D31\u0D41\u0D15"
|
|
4981
5067
|
};
|
|
4982
5068
|
|
|
4983
5069
|
// src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json
|
|
@@ -5391,7 +5477,14 @@ var translation_default13 = {
|
|
|
5391
5477
|
submittingAs: "{{email}} \uABD1\uABE3\uABCF\uABC5 \uABCA\uABE5\uABD2\uABE0\uABC2\uABE4",
|
|
5392
5478
|
tapToChooseFile: "\uABD0\uABE5\uABCF\uABDC \uABC8\uABDF\uABC5\uABD5 \uABC7\uABE6\uABDE \uABC7\uABE7",
|
|
5393
5479
|
view: "\uABCC\uABE6\uABE1\uABCE",
|
|
5394
|
-
whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?"
|
|
5480
|
+
whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?",
|
|
5481
|
+
sessionExpiredTitle: "\uABD1\uABD7\uABE3\uABDD\uABD2\uABE4 \uABC1\uABE6\uABC1\uABDF \uABC2\uABE3\uABCF\uABD4\uABE6",
|
|
5482
|
+
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",
|
|
5483
|
+
chooseYourProfile: "\u09A8\u09B9\u09BE\u0995\u09CD\u0995\u09C0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1",
|
|
5484
|
+
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",
|
|
5485
|
+
userIdLabel: "\uABC3\uABE4\uABD1\uABE3\uABCF\uABD5 \uABD1\uABE5\uABCF\uABD7\uABE4: {{id}}",
|
|
5486
|
+
signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09A4\u09CC\u09B0\u09BF\u2026",
|
|
5487
|
+
switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09B9\u09CB\u0982\u09A6\u09CB\u0995-\u0989"
|
|
5395
5488
|
};
|
|
5396
5489
|
|
|
5397
5490
|
// src/RedactoPrivacyCenter/locales/mr/translation.json
|
|
@@ -5805,7 +5898,14 @@ var translation_default14 = {
|
|
|
5805
5898
|
submittingAs: "{{email}} \u092E\u094D\u0939\u0923\u0942\u0928 \u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0924 \u0906\u0939\u0947",
|
|
5806
5899
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u091F\u0945\u092A \u0915\u0930\u093E",
|
|
5807
5900
|
view: "\u092A\u0939\u093E",
|
|
5808
|
-
whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?"
|
|
5901
|
+
whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?",
|
|
5902
|
+
sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947 \u0938\u0924\u094D\u0930 \u0938\u0902\u092A\u0932\u0947 \u0906\u0939\u0947",
|
|
5903
|
+
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.",
|
|
5904
|
+
chooseYourProfile: "\u0924\u0941\u092E\u091A\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u093E",
|
|
5905
|
+
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.",
|
|
5906
|
+
userIdLabel: "\u0935\u093E\u092A\u0930\u0915\u0930\u094D\u0924\u093E \u0906\u092F\u0921\u0940: {{id}}",
|
|
5907
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0924 \u0906\u0939\u0947\u2026",
|
|
5908
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u093E"
|
|
5809
5909
|
};
|
|
5810
5910
|
|
|
5811
5911
|
// src/RedactoPrivacyCenter/locales/ne/translation.json
|
|
@@ -6219,7 +6319,14 @@ var translation_default15 = {
|
|
|
6219
6319
|
submittingAs: "{{email}} \u0915\u094B \u0930\u0942\u092A\u092E\u093E \u092A\u0947\u0936 \u0917\u0930\u094D\u0926\u0948",
|
|
6220
6320
|
tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928 \u091F\u094D\u092F\u093E\u092A \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6221
6321
|
view: "\u0939\u0947\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6222
|
-
whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?"
|
|
6322
|
+
whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?",
|
|
6323
|
+
sessionExpiredTitle: "\u0924\u092A\u093E\u0908\u0902\u0915\u094B \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u090F\u0915\u094B \u091B",
|
|
6324
|
+
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",
|
|
6325
|
+
chooseYourProfile: "\u0906\u092B\u094D\u0928\u094B \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
|
|
6326
|
+
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",
|
|
6327
|
+
userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
|
|
6328
|
+
signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u0941\u0901\u0926\u0948\u091B\u2026",
|
|
6329
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094D\u0928\u0941\u0939\u094B\u0938\u094D"
|
|
6223
6330
|
};
|
|
6224
6331
|
|
|
6225
6332
|
// src/RedactoPrivacyCenter/locales/or/translation.json
|
|
@@ -6633,7 +6740,14 @@ var translation_default16 = {
|
|
|
6633
6740
|
submittingAs: "{{email}} \u0B2D\u0B3E\u0B2C\u0B47 \u0B26\u0B3E\u0B16\u0B32 \u0B15\u0B30\u0B41\u0B1B\u0B28\u0B4D\u0B24\u0B3F",
|
|
6634
6741
|
tapToChooseFile: "\u0B2B\u0B3E\u0B07\u0B32 \u0B2C\u0B3E\u0B1B\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1F\u0B4D\u0B5F\u0B3E\u0B2A \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41",
|
|
6635
6742
|
view: "\u0B26\u0B47\u0B16\u0B28\u0B4D\u0B24\u0B41",
|
|
6636
|
-
whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?"
|
|
6743
|
+
whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?",
|
|
6744
|
+
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",
|
|
6745
|
+
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",
|
|
6746
|
+
chooseYourProfile: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41",
|
|
6747
|
+
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",
|
|
6748
|
+
userIdLabel: "\u0B2C\u0B4D\u0B5F\u0B2C\u0B39\u0B3E\u0B30\u0B15\u0B3E\u0B30\u0B40 \u0B06\u0B07\u0B21\u0B3F: {{id}}",
|
|
6749
|
+
signingInEllipsis: "\u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B39\u0B47\u0B09\u0B1B\u0B3F\u2026",
|
|
6750
|
+
switchProfile: "\u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B26\u0B33\u0B3E\u0B28\u0B4D\u0B24\u0B41"
|
|
6637
6751
|
};
|
|
6638
6752
|
|
|
6639
6753
|
// src/RedactoPrivacyCenter/locales/pa/translation.json
|
|
@@ -7047,7 +7161,14 @@ var translation_default17 = {
|
|
|
7047
7161
|
submittingAs: "{{email}} \u0A35\u0A1C\u0A4B\u0A02 \u0A38\u0A2C\u0A2E\u0A3F\u0A1F \u0A15\u0A30 \u0A30\u0A39\u0A47 \u0A39\u0A4B",
|
|
7048
7162
|
tapToChooseFile: "\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A28 \u0A32\u0A08 \u0A1F\u0A48\u0A2A \u0A15\u0A30\u0A4B",
|
|
7049
7163
|
view: "\u0A26\u0A47\u0A16\u0A4B",
|
|
7050
|
-
whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?"
|
|
7164
|
+
whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?",
|
|
7165
|
+
sessionExpiredTitle: "\u0A24\u0A41\u0A39\u0A3E\u0A21\u0A3E \u0A38\u0A48\u0A38\u0A3C\u0A28 \u0A38\u0A2E\u0A3E\u0A2A\u0A24 \u0A39\u0A4B \u0A17\u0A3F\u0A06 \u0A39\u0A48",
|
|
7166
|
+
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",
|
|
7167
|
+
chooseYourProfile: "\u0A06\u0A2A\u0A23\u0A40 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A4B",
|
|
7168
|
+
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",
|
|
7169
|
+
userIdLabel: "\u0A09\u0A2A\u0A2F\u0A4B\u0A17\u0A15\u0A30\u0A24\u0A3E \u0A06\u0A08\u0A21\u0A40: {{id}}",
|
|
7170
|
+
signingInEllipsis: "\u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A39\u0A4B \u0A30\u0A3F\u0A39\u0A3E \u0A39\u0A48\u2026",
|
|
7171
|
+
switchProfile: "\u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A2C\u0A26\u0A32\u0A4B"
|
|
7051
7172
|
};
|
|
7052
7173
|
|
|
7053
7174
|
// src/RedactoPrivacyCenter/locales/sa/translation.json
|
|
@@ -7461,7 +7582,14 @@ var translation_default18 = {
|
|
|
7461
7582
|
submittingAs: "{{email}} \u0907\u0924\u093F \u0938\u092E\u0930\u094D\u092A\u092F\u0928\u094D",
|
|
7462
7583
|
tapToChooseFile: "\u0938\u091E\u094D\u091A\u093F\u0915\u093E\u0902 \u091A\u0947\u0924\u0941\u0902 \u0938\u094D\u092A\u0943\u0936\u0924\u0941",
|
|
7463
7584
|
view: "\u092A\u0936\u094D\u092F",
|
|
7464
|
-
whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?"
|
|
7585
|
+
whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?",
|
|
7586
|
+
sessionExpiredTitle: "\u092D\u0935\u0924\u0903 \u0938\u0924\u094D\u0930\u0902 \u0938\u092E\u093E\u092A\u094D\u0924\u092E\u094D",
|
|
7587
|
+
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",
|
|
7588
|
+
chooseYourProfile: "\u0938\u094D\u0935\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u091A\u093F\u0928\u094B\u0924\u0941",
|
|
7589
|
+
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",
|
|
7590
|
+
userIdLabel: "\u0909\u092A\u092F\u094B\u0915\u094D\u0924\u0943-\u0906\u092F\u0921\u0940: {{id}}",
|
|
7591
|
+
signingInEllipsis: "\u092A\u094D\u0930\u0935\u0947\u0936\u0903 \u0915\u094D\u0930\u093F\u092F\u0924\u0947\u2026",
|
|
7592
|
+
switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u092F\u0924\u0941"
|
|
7465
7593
|
};
|
|
7466
7594
|
|
|
7467
7595
|
// src/RedactoPrivacyCenter/locales/sat/translation.json
|
|
@@ -7875,7 +8003,14 @@ var translation_default19 = {
|
|
|
7875
8003
|
submittingAs: "{{email}} \u1C5E\u1C6E\u1C60\u1C5F\u1C5B\u1C6E \u1C61\u1C5A\u1C62\u1C5F \u1C6E\u1C6B\u1C5F",
|
|
7876
8004
|
tapToChooseFile: "\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C74\u1C6E\u1C6F \u1C62\u1C6E",
|
|
7877
8005
|
view: "\u1C67\u1C6E\u1C5E \u1C62\u1C6E",
|
|
7878
|
-
whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?"
|
|
8006
|
+
whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?",
|
|
8007
|
+
sessionExpiredTitle: "\u1C5F\u1C62\u1C5F\u1C5C \u1C65\u1C6E\u1C65\u1C5A\u1C71 \u1C62\u1C69\u1C6A\u1C5F\u1C79\u1C6B\u1C6E\u1C71\u1C5F",
|
|
8008
|
+
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",
|
|
8009
|
+
chooseYourProfile: "\u1C5F\u1C62\u1C5F\u1C5C \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E",
|
|
8010
|
+
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",
|
|
8011
|
+
userIdLabel: "\u1C75\u1C6E\u1C75\u1C77\u1C5F\u1C68\u1C64\u1C6D\u1C5F\u1C79 \u1C5F\u1C6D\u1C70\u1C64: {{id}}",
|
|
8012
|
+
signingInEllipsis: "\u1C65\u1C5F\u1C6D\u1C64\u1C71 \u1C64\u1C71 \u1C6E\u1C6B\u1C5F\u1C6D\u2026",
|
|
8013
|
+
switchProfile: "\u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5A\u1C6B\u1C5A\u1C5E \u1C62\u1C6E"
|
|
7879
8014
|
};
|
|
7880
8015
|
|
|
7881
8016
|
// src/RedactoPrivacyCenter/locales/sd/translation.json
|
|
@@ -8289,7 +8424,14 @@ var translation_default20 = {
|
|
|
8289
8424
|
submittingAs: "{{email}} \u0637\u0648\u0631 \u062C\u0645\u0639 \u06AA\u0631\u064A \u0631\u0647\u064A\u0627 \u0622\u0647\u064A\u0648",
|
|
8290
8425
|
tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u06BB \u0644\u0627\u0621\u0650 \u067D\u064A\u067E \u06AA\u0631\u064A\u0648",
|
|
8291
8426
|
view: "\u068F\u0633\u0648",
|
|
8292
|
-
whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F"
|
|
8427
|
+
whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F",
|
|
8428
|
+
sessionExpiredTitle: "\u062A\u0648\u0647\u0627\u0646 \u062C\u0648 \u0633\u064A\u0634\u0646 \u062E\u062A\u0645 \u067F\u064A \u0648\u064A\u0648 \u0622\u0647\u064A",
|
|
8429
|
+
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.",
|
|
8430
|
+
chooseYourProfile: "\u067E\u0646\u0647\u0646\u062C\u0648 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u064A\u0648",
|
|
8431
|
+
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.",
|
|
8432
|
+
userIdLabel: "\u064A\u0648\u0632\u0631 \u0622\u0626\u064A\u068A\u064A: {{id}}",
|
|
8433
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u067F\u064A \u0631\u0647\u064A\u0648 \u0622\u0647\u064A\u2026",
|
|
8434
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u064A\u0644 \u06AA\u0631\u064A\u0648"
|
|
8293
8435
|
};
|
|
8294
8436
|
|
|
8295
8437
|
// src/RedactoPrivacyCenter/locales/ta/translation.json
|
|
@@ -8703,7 +8845,14 @@ var translation_default21 = {
|
|
|
8703
8845
|
submittingAs: "{{email}} \u0B86\u0B95 \u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BC0\u0BB0\u0BCD\u0B95\u0BB3\u0BCD",
|
|
8704
8846
|
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",
|
|
8705
8847
|
view: "\u0BAA\u0BBE\u0BB0\u0BCD",
|
|
8706
|
-
whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?"
|
|
8848
|
+
whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?",
|
|
8849
|
+
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",
|
|
8850
|
+
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.",
|
|
8851
|
+
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",
|
|
8852
|
+
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.",
|
|
8853
|
+
userIdLabel: "\u0BAA\u0BAF\u0BA9\u0BB0\u0BCD \u0B90\u0B9F\u0BBF: {{id}}",
|
|
8854
|
+
signingInEllipsis: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",
|
|
8855
|
+
switchProfile: "\u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BC1"
|
|
8707
8856
|
};
|
|
8708
8857
|
|
|
8709
8858
|
// src/RedactoPrivacyCenter/locales/te/translation.json
|
|
@@ -9117,7 +9266,14 @@ var translation_default22 = {
|
|
|
9117
9266
|
submittingAs: "{{email}} \u0C17\u0C3E \u0C38\u0C2E\u0C30\u0C4D\u0C2A\u0C3F\u0C38\u0C4D\u0C24\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C30\u0C41",
|
|
9118
9267
|
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",
|
|
9119
9268
|
view: "\u0C35\u0C40\u0C15\u0C4D\u0C37\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",
|
|
9120
|
-
whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?"
|
|
9269
|
+
whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?",
|
|
9270
|
+
sessionExpiredTitle: "\u0C2E\u0C40 \u0C38\u0C46\u0C37\u0C28\u0C4D \u0C17\u0C21\u0C41\u0C35\u0C41 \u0C2E\u0C41\u0C17\u0C3F\u0C38\u0C3F\u0C02\u0C26\u0C3F",
|
|
9271
|
+
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.",
|
|
9272
|
+
chooseYourProfile: "\u0C2E\u0C40 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",
|
|
9273
|
+
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.",
|
|
9274
|
+
userIdLabel: "\u0C35\u0C3F\u0C28\u0C3F\u0C2F\u0C4B\u0C17\u0C26\u0C3E\u0C30\u0C41 \u0C10\u0C21\u0C3F: {{id}}",
|
|
9275
|
+
signingInEllipsis: "\u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",
|
|
9276
|
+
switchProfile: "\u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C2E\u0C3E\u0C30\u0C4D\u0C1A\u0C02\u0C21\u0C3F"
|
|
9121
9277
|
};
|
|
9122
9278
|
|
|
9123
9279
|
// src/RedactoPrivacyCenter/locales/ur/translation.json
|
|
@@ -9531,7 +9687,14 @@ var translation_default23 = {
|
|
|
9531
9687
|
submittingAs: "{{email}} \u06A9\u06D2 \u0637\u0648\u0631 \u067E\u0631 \u062C\u0645\u0639 \u06A9\u0631 \u0631\u06C1\u06D2 \u06C1\u06CC\u06BA",
|
|
9532
9688
|
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",
|
|
9533
9689
|
view: "\u062F\u06CC\u06A9\u06BE\u06CC\u06BA",
|
|
9534
|
-
whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F"
|
|
9690
|
+
whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F",
|
|
9691
|
+
sessionExpiredTitle: "\u0622\u067E \u06A9\u0627 \u0633\u06CC\u0634\u0646 \u062E\u062A\u0645 \u06C1\u0648 \u06AF\u06CC\u0627 \u06C1\u06D2",
|
|
9692
|
+
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",
|
|
9693
|
+
chooseYourProfile: "\u0627\u067E\u0646\u06CC \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA",
|
|
9694
|
+
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",
|
|
9695
|
+
userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
|
|
9696
|
+
signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u06C1\u0648 \u0631\u06C1\u0627 \u06C1\u06D2\u2026",
|
|
9697
|
+
switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA"
|
|
9535
9698
|
};
|
|
9536
9699
|
|
|
9537
9700
|
// src/RedactoPrivacyCenter/lib/locales.ts
|
|
@@ -9749,7 +9912,54 @@ function useSafeInsets() {
|
|
|
9749
9912
|
// src/RedactoPrivacyCenter/context/BaseUrlContext.tsx
|
|
9750
9913
|
import { createContext, useContext, useMemo } from "react";
|
|
9751
9914
|
|
|
9915
|
+
// src/RedactoPrivacyCenter/lib/sandbox.ts
|
|
9916
|
+
var sandboxConfig = null;
|
|
9917
|
+
var setSandboxConfig = (config) => {
|
|
9918
|
+
sandboxConfig = config;
|
|
9919
|
+
};
|
|
9920
|
+
var getSandboxConfig = () => sandboxConfig;
|
|
9921
|
+
var isSandboxMode = () => sandboxConfig !== null;
|
|
9922
|
+
var sandboxAuthHeaders = () => {
|
|
9923
|
+
if (!sandboxConfig) {
|
|
9924
|
+
return null;
|
|
9925
|
+
}
|
|
9926
|
+
return {
|
|
9927
|
+
[SANDBOX_TOKEN_HEADER]: sandboxConfig.token
|
|
9928
|
+
};
|
|
9929
|
+
};
|
|
9930
|
+
var sandboxBodyIdentity = () => {
|
|
9931
|
+
if (!sandboxConfig) {
|
|
9932
|
+
return null;
|
|
9933
|
+
}
|
|
9934
|
+
if (sandboxConfig.ucic) {
|
|
9935
|
+
return { org_user_id: sandboxConfig.ucic };
|
|
9936
|
+
}
|
|
9937
|
+
return sandboxConfig.subject.includes("@") ? { primary_email: sandboxConfig.subject } : { primary_mobile: sandboxConfig.subject };
|
|
9938
|
+
};
|
|
9939
|
+
var sandboxQueryIdentity = () => sandboxBodyIdentity();
|
|
9940
|
+
var sandboxContact = () => sandboxConfig ? sandboxConfig.ucic || sandboxConfig.subject : null;
|
|
9941
|
+
|
|
9752
9942
|
// src/RedactoPrivacyCenter/api/fetcher.ts
|
|
9943
|
+
var ApiError = class _ApiError extends Error {
|
|
9944
|
+
constructor(message, options = {}) {
|
|
9945
|
+
super(message);
|
|
9946
|
+
this.name = "ApiError";
|
|
9947
|
+
this.status = options.status;
|
|
9948
|
+
this.detail = options.detail;
|
|
9949
|
+
Object.setPrototypeOf(this, _ApiError.prototype);
|
|
9950
|
+
}
|
|
9951
|
+
};
|
|
9952
|
+
var TERMINAL_REFRESH_STATUSES = /* @__PURE__ */ new Set([400, 401, 403, 422]);
|
|
9953
|
+
function isTerminalRefreshError(error) {
|
|
9954
|
+
const e = error;
|
|
9955
|
+
if (!e) return false;
|
|
9956
|
+
if (typeof e.status === "number") {
|
|
9957
|
+
return TERMINAL_REFRESH_STATUSES.has(e.status);
|
|
9958
|
+
}
|
|
9959
|
+
const message = (typeof e.message === "string" ? e.message : "").toLowerCase();
|
|
9960
|
+
if (!message) return false;
|
|
9961
|
+
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]");
|
|
9962
|
+
}
|
|
9753
9963
|
async function apiFetch(url, options = {}) {
|
|
9754
9964
|
const { getAuthToken, headers = {}, ...fetchOptions } = options;
|
|
9755
9965
|
const requestHeaders = new Headers();
|
|
@@ -9774,11 +9984,18 @@ async function apiFetch(url, options = {}) {
|
|
|
9774
9984
|
}
|
|
9775
9985
|
}
|
|
9776
9986
|
if (getAuthToken) {
|
|
9777
|
-
const
|
|
9778
|
-
if (
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9987
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
9988
|
+
if (sandboxHeaders) {
|
|
9989
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
9990
|
+
requestHeaders.set(key, value);
|
|
9991
|
+
});
|
|
9992
|
+
} else {
|
|
9993
|
+
const token = await getAuthToken();
|
|
9994
|
+
if (token) {
|
|
9995
|
+
const trimmedToken = token.trim();
|
|
9996
|
+
requestHeaders.set("X-Auth-Token", trimmedToken);
|
|
9997
|
+
requestHeaders.set("x-auth-token", trimmedToken);
|
|
9998
|
+
}
|
|
9782
9999
|
}
|
|
9783
10000
|
}
|
|
9784
10001
|
const fetchOptionsFinal = {
|
|
@@ -9807,7 +10024,7 @@ async function apiFetch(url, options = {}) {
|
|
|
9807
10024
|
} catch {
|
|
9808
10025
|
}
|
|
9809
10026
|
}
|
|
9810
|
-
throw new
|
|
10027
|
+
throw new ApiError(errorMessage, { status: response.status });
|
|
9811
10028
|
}
|
|
9812
10029
|
const contentLength = response.headers.get("Content-Length");
|
|
9813
10030
|
const contentType = response.headers.get("Content-Type") || "";
|
|
@@ -9869,14 +10086,29 @@ function arrayBufferToBase64(buffer) {
|
|
|
9869
10086
|
return result;
|
|
9870
10087
|
}
|
|
9871
10088
|
function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
9872
|
-
const
|
|
10089
|
+
const ledgerConfigured = Boolean(ledgerBaseUrl);
|
|
10090
|
+
const useLedger = () => ledgerConfigured && !isSandboxMode();
|
|
9873
10091
|
const ledgerBase = (ledgerBaseUrl != null ? ledgerBaseUrl : "").replace(/\/$/, "");
|
|
9874
10092
|
function ledgerUrl(baseRequest, path) {
|
|
9875
|
-
if (!useLedger) {
|
|
10093
|
+
if (!useLedger()) {
|
|
9876
10094
|
throw new Error("ledgerUrl called without a configured ledgerBaseUrl");
|
|
9877
10095
|
}
|
|
9878
10096
|
return `${ledgerBase}/public/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}${path}`;
|
|
9879
10097
|
}
|
|
10098
|
+
function appendSandboxIdentity(queryParams) {
|
|
10099
|
+
const identity = sandboxQueryIdentity();
|
|
10100
|
+
if (identity) {
|
|
10101
|
+
Object.entries(identity).forEach(([key, value]) => {
|
|
10102
|
+
queryParams.append(key, value);
|
|
10103
|
+
});
|
|
10104
|
+
}
|
|
10105
|
+
}
|
|
10106
|
+
function sandboxIdentitySuffix() {
|
|
10107
|
+
const queryParams = new URLSearchParams();
|
|
10108
|
+
appendSandboxIdentity(queryParams);
|
|
10109
|
+
const queryString = queryParams.toString();
|
|
10110
|
+
return queryString ? `?${queryString}` : "";
|
|
10111
|
+
}
|
|
9880
10112
|
async function privacyCenterApiFetch(url, options) {
|
|
9881
10113
|
const { authToken, getAuthToken, headers = {}, ...fetchOptions } = options;
|
|
9882
10114
|
const requestHeaders = new Headers();
|
|
@@ -9900,11 +10132,18 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
9900
10132
|
);
|
|
9901
10133
|
}
|
|
9902
10134
|
}
|
|
9903
|
-
const
|
|
9904
|
-
if (
|
|
9905
|
-
|
|
9906
|
-
|
|
9907
|
-
|
|
10135
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10136
|
+
if (sandboxHeaders) {
|
|
10137
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10138
|
+
requestHeaders.set(key, value);
|
|
10139
|
+
});
|
|
10140
|
+
} else {
|
|
10141
|
+
const token = authToken || (getAuthToken ? await getAuthToken() : null);
|
|
10142
|
+
if (token) {
|
|
10143
|
+
const trimmedToken = token.trim();
|
|
10144
|
+
const bearerToken = trimmedToken.startsWith("Bearer ") ? trimmedToken : `Bearer ${trimmedToken}`;
|
|
10145
|
+
requestHeaders.set("Authorization", bearerToken);
|
|
10146
|
+
}
|
|
9908
10147
|
}
|
|
9909
10148
|
const fetchOptionsFinal = {
|
|
9910
10149
|
...fetchOptions,
|
|
@@ -9985,18 +10224,20 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
9985
10224
|
async createCaseRequest(baseRequest, payload, authToken, options) {
|
|
9986
10225
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/case`;
|
|
9987
10226
|
const { useSessionAuth = false, getAuthToken, ...fetchOptions } = options || {};
|
|
10227
|
+
const contact = sandboxContact();
|
|
10228
|
+
const requestPayload = contact && payload && typeof payload === "object" ? { ...payload, contact } : payload;
|
|
9988
10229
|
if (useSessionAuth) {
|
|
9989
10230
|
return apiFetch(url, {
|
|
9990
10231
|
...fetchOptions,
|
|
9991
10232
|
method: "POST",
|
|
9992
|
-
body: JSON.stringify(
|
|
10233
|
+
body: JSON.stringify(requestPayload),
|
|
9993
10234
|
getAuthToken
|
|
9994
10235
|
});
|
|
9995
10236
|
}
|
|
9996
10237
|
return privacyCenterApiFetch(url, {
|
|
9997
10238
|
...fetchOptions,
|
|
9998
10239
|
method: "POST",
|
|
9999
|
-
body: JSON.stringify(
|
|
10240
|
+
body: JSON.stringify(requestPayload),
|
|
10000
10241
|
authToken: authToken || baseRequest.authToken
|
|
10001
10242
|
});
|
|
10002
10243
|
},
|
|
@@ -10077,9 +10318,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10077
10318
|
if (params.status) queryParams.append("status", params.status);
|
|
10078
10319
|
if (params.product_uuid) queryParams.append("product_uuid", params.product_uuid);
|
|
10079
10320
|
if (params.language) queryParams.append("language", params.language);
|
|
10321
|
+
appendSandboxIdentity(queryParams);
|
|
10080
10322
|
const queryString = queryParams.toString();
|
|
10081
10323
|
const consentsSuffix = `/user-consents${queryString ? `?${queryString}` : ""}`;
|
|
10082
|
-
const url = useLedger ? ledgerUrl(baseRequest, consentsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${consentsSuffix}`;
|
|
10324
|
+
const url = useLedger() ? ledgerUrl(baseRequest, consentsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${consentsSuffix}`;
|
|
10083
10325
|
return privacyCenterApiFetch(url, {
|
|
10084
10326
|
...options,
|
|
10085
10327
|
method: "GET",
|
|
@@ -10098,9 +10340,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10098
10340
|
if (params.search) queryParams.append("search", params.search);
|
|
10099
10341
|
if (params.language) queryParams.append("language", params.language);
|
|
10100
10342
|
if (params.nominator_uuid) queryParams.append("nominator_uuid", params.nominator_uuid);
|
|
10343
|
+
appendSandboxIdentity(queryParams);
|
|
10101
10344
|
const queryString = queryParams.toString();
|
|
10102
10345
|
const purposesSuffix = `/user-consents/${productUuid}/purposes${queryString ? `?${queryString}` : ""}`;
|
|
10103
|
-
const url = useLedger ? ledgerUrl(baseRequest, purposesSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${purposesSuffix}`;
|
|
10346
|
+
const url = useLedger() ? ledgerUrl(baseRequest, purposesSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${purposesSuffix}`;
|
|
10104
10347
|
return privacyCenterApiFetch(url, {
|
|
10105
10348
|
...options,
|
|
10106
10349
|
method: "GET",
|
|
@@ -10121,16 +10364,23 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10121
10364
|
* Without a ledger, the legacy Python `/manage-consent?status=` endpoint is
|
|
10122
10365
|
* used with its `{ purpose_uuid, contact, ... }` payload.
|
|
10123
10366
|
*/
|
|
10124
|
-
async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, noticeUuid, dataElements) {
|
|
10125
|
-
if (!useLedger) {
|
|
10367
|
+
async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, noticeUuid, dataElements, language) {
|
|
10368
|
+
if (!useLedger()) {
|
|
10126
10369
|
const url2 = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/manage-consent?status=${status}`;
|
|
10127
|
-
const
|
|
10370
|
+
const sandboxSingleContact = sandboxContact();
|
|
10371
|
+
const body2 = {
|
|
10372
|
+
purpose_uuid: purposeId,
|
|
10373
|
+
contact: sandboxSingleContact != null ? sandboxSingleContact : contact
|
|
10374
|
+
};
|
|
10128
10375
|
if (nominatorContact) {
|
|
10129
10376
|
body2.nominator_contact = nominatorContact;
|
|
10130
10377
|
}
|
|
10131
10378
|
if (Array.isArray(dataElementUuids) && dataElementUuids.length > 0) {
|
|
10132
10379
|
body2.data_element_uuids = dataElementUuids;
|
|
10133
10380
|
}
|
|
10381
|
+
if (language) {
|
|
10382
|
+
body2.language = language;
|
|
10383
|
+
}
|
|
10134
10384
|
return privacyCenterApiFetch(url2, {
|
|
10135
10385
|
...options,
|
|
10136
10386
|
method: "POST",
|
|
@@ -10165,7 +10415,8 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10165
10415
|
selected: purposeSelected,
|
|
10166
10416
|
data_elements: elements
|
|
10167
10417
|
}
|
|
10168
|
-
]
|
|
10418
|
+
],
|
|
10419
|
+
...language ? { language } : {}
|
|
10169
10420
|
};
|
|
10170
10421
|
const url = ledgerUrl(baseRequest, "/submit-consent");
|
|
10171
10422
|
return privacyCenterApiFetch(url, {
|
|
@@ -10183,6 +10434,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10183
10434
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10184
10435
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10185
10436
|
if (language) queryParams.append("language", language);
|
|
10437
|
+
appendSandboxIdentity(queryParams);
|
|
10186
10438
|
const queryString = queryParams.toString();
|
|
10187
10439
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/activities${queryString ? `?${queryString}` : ""}`;
|
|
10188
10440
|
return privacyCenterApiFetch(url, {
|
|
@@ -10190,6 +10442,32 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10190
10442
|
authToken: authToken || baseRequest.authToken
|
|
10191
10443
|
});
|
|
10192
10444
|
},
|
|
10445
|
+
/**
|
|
10446
|
+
* List all data principals that share this session's contact
|
|
10447
|
+
* (shared-contact profile picker). Identity is derived server-side from the
|
|
10448
|
+
* JWT — the caller sends nothing but its bearer token.
|
|
10449
|
+
*/
|
|
10450
|
+
async listIdentities(baseRequest, authToken, options) {
|
|
10451
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities`;
|
|
10452
|
+
return privacyCenterApiFetch(url, {
|
|
10453
|
+
...options,
|
|
10454
|
+
authToken: authToken || baseRequest.authToken
|
|
10455
|
+
});
|
|
10456
|
+
},
|
|
10457
|
+
/**
|
|
10458
|
+
* Re-scope the session to a chosen principal uuid (must be one of the
|
|
10459
|
+
* principals sharing this session's contact). Returns fresh access/refresh
|
|
10460
|
+
* tokens scoped to that principal.
|
|
10461
|
+
*/
|
|
10462
|
+
async selectPrincipal(baseRequest, principalUuid, authToken, options) {
|
|
10463
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities/select`;
|
|
10464
|
+
return privacyCenterApiFetch(url, {
|
|
10465
|
+
...options,
|
|
10466
|
+
method: "POST",
|
|
10467
|
+
body: JSON.stringify({ uuid: principalUuid }),
|
|
10468
|
+
authToken: authToken || baseRequest.authToken
|
|
10469
|
+
});
|
|
10470
|
+
},
|
|
10193
10471
|
/**
|
|
10194
10472
|
* Get receipts (privacy center)
|
|
10195
10473
|
*/
|
|
@@ -10203,9 +10481,10 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10203
10481
|
if (params.created_before) queryParams.append("created_before", params.created_before);
|
|
10204
10482
|
if (params.notice_uuid) queryParams.append("notice_uuid", params.notice_uuid);
|
|
10205
10483
|
if (params.language) queryParams.append("language", params.language);
|
|
10484
|
+
appendSandboxIdentity(queryParams);
|
|
10206
10485
|
const queryString = queryParams.toString();
|
|
10207
10486
|
const receiptsSuffix = `/receipts${queryString ? `?${queryString}` : ""}`;
|
|
10208
|
-
const url = useLedger ? ledgerUrl(baseRequest, receiptsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${receiptsSuffix}`;
|
|
10487
|
+
const url = useLedger() ? ledgerUrl(baseRequest, receiptsSuffix) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${receiptsSuffix}`;
|
|
10209
10488
|
return privacyCenterApiFetch(url, {
|
|
10210
10489
|
...options,
|
|
10211
10490
|
method: "GET",
|
|
@@ -10219,11 +10498,16 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10219
10498
|
* the RN UI writes to a temp file to open/share. 404 => not found.
|
|
10220
10499
|
*/
|
|
10221
10500
|
async getReceiptPdf(baseRequest, receiptUuid, authToken) {
|
|
10222
|
-
const url = useLedger ? ledgerUrl(baseRequest, `/receipts/${receiptUuid}/download`) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/receipts/${receiptUuid}/pdf`;
|
|
10501
|
+
const url = useLedger() ? ledgerUrl(baseRequest, `/receipts/${receiptUuid}/download`) : `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/receipts/${receiptUuid}/pdf`;
|
|
10223
10502
|
const token = authToken || baseRequest.authToken;
|
|
10224
10503
|
const requestHeaders = new Headers();
|
|
10225
10504
|
requestHeaders.set("Accept", "application/pdf");
|
|
10226
|
-
|
|
10505
|
+
const sandboxHeaders = sandboxAuthHeaders();
|
|
10506
|
+
if (sandboxHeaders) {
|
|
10507
|
+
Object.entries(sandboxHeaders).forEach(([key, value]) => {
|
|
10508
|
+
requestHeaders.set(key, value);
|
|
10509
|
+
});
|
|
10510
|
+
} else if (token) {
|
|
10227
10511
|
const trimmedToken = token.trim();
|
|
10228
10512
|
const bearerToken = trimmedToken.startsWith("Bearer ") ? trimmedToken : `Bearer ${trimmedToken}`;
|
|
10229
10513
|
requestHeaders.set("Authorization", bearerToken);
|
|
@@ -10249,6 +10533,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10249
10533
|
if (offset !== void 0) queryParams.append("offset", offset.toString());
|
|
10250
10534
|
if (limit !== void 0) queryParams.append("limit", limit.toString());
|
|
10251
10535
|
if (language) queryParams.append("language", language);
|
|
10536
|
+
appendSandboxIdentity(queryParams);
|
|
10252
10537
|
const queryString = queryParams.toString();
|
|
10253
10538
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases?${queryString}`;
|
|
10254
10539
|
return privacyCenterApiFetch(url, {
|
|
@@ -10260,7 +10545,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10260
10545
|
* Get case messages (privacy center)
|
|
10261
10546
|
*/
|
|
10262
10547
|
async getCaseMessages(baseRequest, caseUuid, authToken, options) {
|
|
10263
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages`;
|
|
10548
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages${sandboxIdentitySuffix()}`;
|
|
10264
10549
|
return privacyCenterApiFetch(url, {
|
|
10265
10550
|
...options,
|
|
10266
10551
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10270,7 +10555,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10270
10555
|
* Send a message in a case (privacy center)
|
|
10271
10556
|
*/
|
|
10272
10557
|
async sendCaseMessage(baseRequest, caseUuid, body, documentUuids, authToken, options) {
|
|
10273
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages`;
|
|
10558
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/messages${sandboxIdentitySuffix()}`;
|
|
10274
10559
|
return privacyCenterApiFetch(url, {
|
|
10275
10560
|
...options,
|
|
10276
10561
|
method: "POST",
|
|
@@ -10282,7 +10567,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10282
10567
|
* Upload a document for a case (privacy center)
|
|
10283
10568
|
*/
|
|
10284
10569
|
async uploadCaseDocument(baseRequest, caseUuid, formData, authToken, options) {
|
|
10285
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/upload-document`;
|
|
10570
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/cases/${caseUuid}/upload-document${sandboxIdentitySuffix()}`;
|
|
10286
10571
|
return privacyCenterApiFetch(url, {
|
|
10287
10572
|
...options,
|
|
10288
10573
|
method: "POST",
|
|
@@ -10315,6 +10600,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10315
10600
|
if ((params == null ? void 0 : params.limit) !== void 0) queryParams.append("limit", params.limit.toString());
|
|
10316
10601
|
if (params == null ? void 0 : params.include_summary) queryParams.append("include_summary", "true");
|
|
10317
10602
|
if (params == null ? void 0 : params.language) queryParams.append("language", params.language);
|
|
10603
|
+
appendSandboxIdentity(queryParams);
|
|
10318
10604
|
const queryString = queryParams.toString();
|
|
10319
10605
|
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${queryString ? `?${queryString}` : ""}`;
|
|
10320
10606
|
return privacyCenterApiFetch(url, {
|
|
@@ -10326,7 +10612,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10326
10612
|
* Get notification summary (aggregated counts only)
|
|
10327
10613
|
*/
|
|
10328
10614
|
async getNotificationSummary(baseRequest, authToken) {
|
|
10329
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/summary`;
|
|
10615
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/summary${sandboxIdentitySuffix()}`;
|
|
10330
10616
|
return privacyCenterApiFetch(url, {
|
|
10331
10617
|
method: "GET",
|
|
10332
10618
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10336,7 +10622,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10336
10622
|
* Get unread notification count (lightweight, for the header badge)
|
|
10337
10623
|
*/
|
|
10338
10624
|
async getUnreadCount(baseRequest, authToken) {
|
|
10339
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/unread-count`;
|
|
10625
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/unread-count${sandboxIdentitySuffix()}`;
|
|
10340
10626
|
return privacyCenterApiFetch(url, {
|
|
10341
10627
|
method: "GET",
|
|
10342
10628
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10346,7 +10632,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10346
10632
|
* Mark a single notification as read
|
|
10347
10633
|
*/
|
|
10348
10634
|
async markNotificationRead(baseRequest, notificationUuid, authToken) {
|
|
10349
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/read`;
|
|
10635
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/read${sandboxIdentitySuffix()}`;
|
|
10350
10636
|
return privacyCenterApiFetch(url, {
|
|
10351
10637
|
method: "PATCH",
|
|
10352
10638
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10356,7 +10642,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10356
10642
|
* Mark all notifications as read
|
|
10357
10643
|
*/
|
|
10358
10644
|
async markAllNotificationsRead(baseRequest, authToken) {
|
|
10359
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/mark-all-read`;
|
|
10645
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/mark-all-read${sandboxIdentitySuffix()}`;
|
|
10360
10646
|
return privacyCenterApiFetch(url, {
|
|
10361
10647
|
method: "POST",
|
|
10362
10648
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10366,7 +10652,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
|
|
|
10366
10652
|
* Acknowledge a notification (sets is_read and is_acknowledged to true)
|
|
10367
10653
|
*/
|
|
10368
10654
|
async acknowledgeNotification(baseRequest, notificationUuid, authToken) {
|
|
10369
|
-
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/acknowledge`;
|
|
10655
|
+
const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/notifications/${notificationUuid}/acknowledge${sandboxIdentitySuffix()}`;
|
|
10370
10656
|
return privacyCenterApiFetch(url, {
|
|
10371
10657
|
method: "POST",
|
|
10372
10658
|
authToken: authToken || baseRequest.authToken
|
|
@@ -10605,7 +10891,8 @@ async function manageConsentServer(params) {
|
|
|
10605
10891
|
params.nominatorContact,
|
|
10606
10892
|
params.dataElementUuids,
|
|
10607
10893
|
params.noticeUuid,
|
|
10608
|
-
params.dataElements
|
|
10894
|
+
params.dataElements,
|
|
10895
|
+
params.language
|
|
10609
10896
|
);
|
|
10610
10897
|
if (result && typeof result === "object" && "success" in result) {
|
|
10611
10898
|
return Boolean(result.success);
|
|
@@ -11096,7 +11383,8 @@ var manageConsent = async ({
|
|
|
11096
11383
|
nominatorContact,
|
|
11097
11384
|
dataElementUuids,
|
|
11098
11385
|
noticeUuid,
|
|
11099
|
-
dataElements
|
|
11386
|
+
dataElements,
|
|
11387
|
+
language
|
|
11100
11388
|
}) => {
|
|
11101
11389
|
try {
|
|
11102
11390
|
const accessToken = await ensureValidToken(organizationId, workspaceId, void 0, authContext, consentClient);
|
|
@@ -11114,7 +11402,8 @@ var manageConsent = async ({
|
|
|
11114
11402
|
nominatorContact,
|
|
11115
11403
|
dataElementUuids,
|
|
11116
11404
|
noticeUuid,
|
|
11117
|
-
dataElements
|
|
11405
|
+
dataElements,
|
|
11406
|
+
language
|
|
11118
11407
|
});
|
|
11119
11408
|
return result;
|
|
11120
11409
|
} catch (error) {
|
|
@@ -11135,7 +11424,8 @@ var manageConsent = async ({
|
|
|
11135
11424
|
nominatorContact,
|
|
11136
11425
|
dataElementUuids,
|
|
11137
11426
|
noticeUuid,
|
|
11138
|
-
dataElements
|
|
11427
|
+
dataElements,
|
|
11428
|
+
language
|
|
11139
11429
|
});
|
|
11140
11430
|
}
|
|
11141
11431
|
console.error(`Error ${action} consent:`, error);
|
|
@@ -11474,6 +11764,40 @@ var acknowledgeNotification = async (organizationId, workspaceId, notificationUu
|
|
|
11474
11764
|
var isRefreshing = false;
|
|
11475
11765
|
var refreshPromise = null;
|
|
11476
11766
|
var TOKEN_EXPIRY_BUFFER_SECONDS = 30;
|
|
11767
|
+
var deadRefreshToken = null;
|
|
11768
|
+
var transientRefreshFailureUntil = 0;
|
|
11769
|
+
var transientRefreshBackoffMs = 0;
|
|
11770
|
+
var MIN_REFRESH_BACKOFF_MS = 3e4;
|
|
11771
|
+
var MAX_REFRESH_BACKOFF_MS = 3e5;
|
|
11772
|
+
var sessionExpiredListener = null;
|
|
11773
|
+
var setSessionExpiredListener = (fn) => {
|
|
11774
|
+
sessionExpiredListener = fn;
|
|
11775
|
+
};
|
|
11776
|
+
var notifySessionExpired = () => {
|
|
11777
|
+
sessionExpiredListener == null ? void 0 : sessionExpiredListener();
|
|
11778
|
+
};
|
|
11779
|
+
var activeRefreshToken = (authContext) => (authContext == null ? void 0 : authContext.refreshToken) || getStoredValue("refresh_token") || null;
|
|
11780
|
+
var isRefreshBlocked = (authContext) => {
|
|
11781
|
+
const active = activeRefreshToken(authContext);
|
|
11782
|
+
if (active !== null && active === deadRefreshToken) return true;
|
|
11783
|
+
return Date.now() < transientRefreshFailureUntil;
|
|
11784
|
+
};
|
|
11785
|
+
var noteTransientRefreshFailure = () => {
|
|
11786
|
+
transientRefreshBackoffMs = Math.min(
|
|
11787
|
+
Math.max(transientRefreshBackoffMs * 2, MIN_REFRESH_BACKOFF_MS),
|
|
11788
|
+
MAX_REFRESH_BACKOFF_MS
|
|
11789
|
+
);
|
|
11790
|
+
transientRefreshFailureUntil = Date.now() + transientRefreshBackoffMs;
|
|
11791
|
+
};
|
|
11792
|
+
var markRefreshTokenDead = (token) => {
|
|
11793
|
+
if (token) deadRefreshToken = token;
|
|
11794
|
+
notifySessionExpired();
|
|
11795
|
+
};
|
|
11796
|
+
var resetRefreshCircuit = () => {
|
|
11797
|
+
deadRefreshToken = null;
|
|
11798
|
+
transientRefreshFailureUntil = 0;
|
|
11799
|
+
transientRefreshBackoffMs = 0;
|
|
11800
|
+
};
|
|
11477
11801
|
var tokenStore = {};
|
|
11478
11802
|
var getStoredValue = (key) => {
|
|
11479
11803
|
var _a3;
|
|
@@ -11529,6 +11853,18 @@ var decodeJwtToken = (token) => {
|
|
|
11529
11853
|
return null;
|
|
11530
11854
|
}
|
|
11531
11855
|
};
|
|
11856
|
+
var resolveContactFromJwt = (decoded) => {
|
|
11857
|
+
if (!decoded) {
|
|
11858
|
+
return null;
|
|
11859
|
+
}
|
|
11860
|
+
const userData = decoded.user_data || {};
|
|
11861
|
+
const candidate = decoded.contact || decoded.primary_email || userData.primary_email || userData.primary_mobile || userData.org_user_id;
|
|
11862
|
+
if (typeof candidate !== "string") {
|
|
11863
|
+
return null;
|
|
11864
|
+
}
|
|
11865
|
+
const contact = candidate.trim();
|
|
11866
|
+
return contact === "" ? null : contact;
|
|
11867
|
+
};
|
|
11532
11868
|
var isJwtExpired = (token, bufferSeconds = 30) => {
|
|
11533
11869
|
if (!token || typeof token !== "string") return true;
|
|
11534
11870
|
try {
|
|
@@ -11555,11 +11891,16 @@ var compareEmails = (email1, email2) => {
|
|
|
11555
11891
|
return decodeURIComponent(email1.trim()).toLowerCase() === email2.trim().toLowerCase();
|
|
11556
11892
|
};
|
|
11557
11893
|
var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, consentClient) => {
|
|
11894
|
+
const sandbox = getSandboxConfig();
|
|
11895
|
+
if (sandbox) {
|
|
11896
|
+
return sandbox.token;
|
|
11897
|
+
}
|
|
11558
11898
|
const accessToken = (authContext == null ? void 0 : authContext.accessToken) || getStoredValue("access_token");
|
|
11559
11899
|
if (accessToken && typeof accessToken === "string" && accessToken.trim() !== "" && !isJwtExpired(accessToken, TOKEN_EXPIRY_BUFFER_SECONDS)) {
|
|
11560
11900
|
return accessToken;
|
|
11561
11901
|
}
|
|
11562
11902
|
if (isRefreshing && refreshPromise) return refreshPromise;
|
|
11903
|
+
if (isRefreshBlocked(authContext)) return null;
|
|
11563
11904
|
isRefreshing = true;
|
|
11564
11905
|
refreshPromise = performTokenRefresh(
|
|
11565
11906
|
organizationId,
|
|
@@ -11587,6 +11928,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11587
11928
|
if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
|
|
11588
11929
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11589
11930
|
authContext.onError(new Error("No refresh token available"));
|
|
11931
|
+
notifySessionExpired();
|
|
11590
11932
|
signOutPrivacyCenter();
|
|
11591
11933
|
return null;
|
|
11592
11934
|
}
|
|
@@ -11616,11 +11958,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11616
11958
|
if (newRefreshToken)
|
|
11617
11959
|
setStoredValue("refresh_token", newRefreshToken);
|
|
11618
11960
|
}
|
|
11961
|
+
resetRefreshCircuit();
|
|
11619
11962
|
return newAccessToken;
|
|
11620
11963
|
}
|
|
11621
11964
|
}
|
|
11622
11965
|
if (authContext == null ? void 0 : authContext.onError)
|
|
11623
11966
|
authContext.onError(new Error("Refresh token expired or revoked"));
|
|
11967
|
+
markRefreshTokenDead(refreshToken);
|
|
11624
11968
|
signOutPrivacyCenter();
|
|
11625
11969
|
return null;
|
|
11626
11970
|
} catch (error) {
|
|
@@ -11628,7 +11972,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
|
|
|
11628
11972
|
authContext.onError(
|
|
11629
11973
|
error instanceof Error ? error : new Error(String(error))
|
|
11630
11974
|
);
|
|
11631
|
-
|
|
11975
|
+
if (isTerminalRefreshError(error)) {
|
|
11976
|
+
markRefreshTokenDead(refreshToken);
|
|
11977
|
+
signOutPrivacyCenter();
|
|
11978
|
+
} else {
|
|
11979
|
+
noteTransientRefreshFailure();
|
|
11980
|
+
}
|
|
11632
11981
|
return null;
|
|
11633
11982
|
}
|
|
11634
11983
|
};
|
|
@@ -11656,6 +12005,23 @@ var formatDateTime = (timestamp) => {
|
|
|
11656
12005
|
hours = hours % 12 || 12;
|
|
11657
12006
|
return `${month} ${day}, ${year} at ${hours}:${minutes} ${ampm}`;
|
|
11658
12007
|
};
|
|
12008
|
+
var extractCaseRef = (response) => {
|
|
12009
|
+
if (!response || typeof response !== "object") {
|
|
12010
|
+
return null;
|
|
12011
|
+
}
|
|
12012
|
+
const wrapper = response;
|
|
12013
|
+
const candidates = [wrapper.detail, response];
|
|
12014
|
+
for (const candidate of candidates) {
|
|
12015
|
+
if (!candidate || typeof candidate !== "object") {
|
|
12016
|
+
continue;
|
|
12017
|
+
}
|
|
12018
|
+
const { case_id: caseId, uuid } = candidate;
|
|
12019
|
+
if (caseId || uuid) {
|
|
12020
|
+
return { case_id: caseId != null ? caseId : "", uuid: uuid != null ? uuid : "" };
|
|
12021
|
+
}
|
|
12022
|
+
}
|
|
12023
|
+
return null;
|
|
12024
|
+
};
|
|
11659
12025
|
var generateUuid = () => {
|
|
11660
12026
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
11661
12027
|
const r = Math.random() * 16 | 0;
|
|
@@ -11675,10 +12041,10 @@ function extractJwtAuthData(token) {
|
|
|
11675
12041
|
if (!decoded) {
|
|
11676
12042
|
return { email: null, organizationId: null, workspaceId: null, organizationName: null };
|
|
11677
12043
|
}
|
|
11678
|
-
const
|
|
11679
|
-
const userEmail = decoded.contact || decoded.primary_email || decoded.email || decoded.user_uuid || decoded.sub || (userData && typeof userData === "object" ? userData.primary_email || userData.email || userData.contact : null) || null;
|
|
12044
|
+
const contact = resolveContactFromJwt(decoded);
|
|
11680
12045
|
return {
|
|
11681
|
-
|
|
12046
|
+
// `resolveContactFromJwt` already returns a trimmed, non-empty string or null.
|
|
12047
|
+
email: contact,
|
|
11682
12048
|
organizationId: decoded.organisation_uuid || null,
|
|
11683
12049
|
workspaceId: decoded.workspace_uuid || null,
|
|
11684
12050
|
organizationName: decoded.organisation_name || null
|
|
@@ -11687,20 +12053,82 @@ function extractJwtAuthData(token) {
|
|
|
11687
12053
|
function syncJwtDataToStore(token) {
|
|
11688
12054
|
const authData = extractJwtAuthData(token);
|
|
11689
12055
|
setStoredValue("access_token", token);
|
|
11690
|
-
if (authData.email)
|
|
12056
|
+
if (authData.email) {
|
|
12057
|
+
setStoredValue("email", authData.email);
|
|
12058
|
+
} else {
|
|
12059
|
+
removeStoredValue("email");
|
|
12060
|
+
}
|
|
11691
12061
|
if (authData.organizationId) setStoredValue("pc_org_id", authData.organizationId);
|
|
11692
12062
|
if (authData.workspaceId) setStoredValue("pc_workspace_id", authData.workspaceId);
|
|
11693
12063
|
return authData;
|
|
11694
12064
|
}
|
|
11695
|
-
function
|
|
11696
|
-
|
|
12065
|
+
function configureSandbox(props) {
|
|
12066
|
+
var _a3, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
12067
|
+
const token = (_a3 = props.token) == null ? void 0 : _a3.trim();
|
|
12068
|
+
if (!token) {
|
|
12069
|
+
setSandboxConfig(null);
|
|
12070
|
+
return null;
|
|
12071
|
+
}
|
|
12072
|
+
const organisationUuid = (_c = (_b = props.organisationUuid) == null ? void 0 : _b.trim()) != null ? _c : "";
|
|
12073
|
+
const workspaceUuid = (_e = (_d = props.workspaceUuid) == null ? void 0 : _d.trim()) != null ? _e : "";
|
|
12074
|
+
const ucic = (_g = (_f = props.sandboxUcic) == null ? void 0 : _f.trim()) != null ? _g : "";
|
|
12075
|
+
const subject = (_i = (_h = props.sandboxSubject) == null ? void 0 : _h.trim()) != null ? _i : "";
|
|
12076
|
+
const slug = (_k = (_j = props.slug) == null ? void 0 : _j.trim()) != null ? _k : "";
|
|
12077
|
+
if (!organisationUuid || !workspaceUuid) {
|
|
12078
|
+
throw new Error("Sandbox mode requires organisationUuid and workspaceUuid props");
|
|
12079
|
+
}
|
|
12080
|
+
if (!ucic && !subject) {
|
|
12081
|
+
throw new Error("Sandbox mode requires a UCIC, email, or mobile");
|
|
12082
|
+
}
|
|
12083
|
+
setSandboxConfig({
|
|
12084
|
+
token,
|
|
12085
|
+
ucic: ucic || void 0,
|
|
12086
|
+
subject,
|
|
12087
|
+
organisationUuid,
|
|
12088
|
+
workspaceUuid,
|
|
12089
|
+
slug
|
|
12090
|
+
});
|
|
12091
|
+
const contact = ucic || subject;
|
|
12092
|
+
setStoredValue("access_token", token);
|
|
12093
|
+
if (organisationUuid) setStoredValue("pc_org_id", organisationUuid);
|
|
12094
|
+
if (workspaceUuid) setStoredValue("pc_workspace_id", workspaceUuid);
|
|
12095
|
+
if (contact) setStoredValue("email", contact);
|
|
12096
|
+
return {
|
|
12097
|
+
email: contact || null,
|
|
12098
|
+
organizationId: organisationUuid || null,
|
|
12099
|
+
workspaceId: workspaceUuid || null,
|
|
12100
|
+
organizationName: null
|
|
12101
|
+
};
|
|
12102
|
+
}
|
|
12103
|
+
function AuthProvider(props) {
|
|
12104
|
+
const {
|
|
12105
|
+
children,
|
|
12106
|
+
accessToken: initialAccessToken,
|
|
12107
|
+
refreshToken: initialRefreshToken,
|
|
12108
|
+
token: sandboxToken,
|
|
12109
|
+
sandboxUcic,
|
|
12110
|
+
sandboxSubject,
|
|
12111
|
+
organisationUuid,
|
|
12112
|
+
workspaceUuid,
|
|
12113
|
+
slug,
|
|
12114
|
+
onError
|
|
12115
|
+
} = props;
|
|
12116
|
+
const [sandboxAuth] = useState(() => configureSandbox(props));
|
|
12117
|
+
const sandboxActive = sandboxAuth !== null;
|
|
12118
|
+
const initialAuth = sandboxAuth != null ? sandboxAuth : extractJwtAuthData(initialAccessToken);
|
|
11697
12119
|
const [accessToken, setAccessToken] = useState(() => {
|
|
12120
|
+
if (sandboxActive) {
|
|
12121
|
+
return sandboxToken != null ? sandboxToken : "";
|
|
12122
|
+
}
|
|
11698
12123
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11699
12124
|
syncJwtDataToStore(initialAccessToken);
|
|
11700
12125
|
}
|
|
11701
12126
|
return initialAccessToken;
|
|
11702
12127
|
});
|
|
11703
12128
|
const [refreshToken, setRefreshToken] = useState(() => {
|
|
12129
|
+
if (sandboxActive) {
|
|
12130
|
+
return "";
|
|
12131
|
+
}
|
|
11704
12132
|
if (initialRefreshToken && initialRefreshToken.trim() !== "") {
|
|
11705
12133
|
setStoredValue("refresh_token", initialRefreshToken);
|
|
11706
12134
|
}
|
|
@@ -11711,6 +12139,20 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11711
12139
|
const [workspaceId, setWorkspaceId] = useState(initialAuth.workspaceId);
|
|
11712
12140
|
const [organizationName, setOrganizationName] = useState(initialAuth.organizationName);
|
|
11713
12141
|
useEffect(() => {
|
|
12142
|
+
if (!sandboxActive) {
|
|
12143
|
+
return;
|
|
12144
|
+
}
|
|
12145
|
+
const seeded = configureSandbox(props);
|
|
12146
|
+
if (seeded) {
|
|
12147
|
+
setEmail(seeded.email);
|
|
12148
|
+
setOrganizationId(seeded.organizationId);
|
|
12149
|
+
setWorkspaceId(seeded.workspaceId);
|
|
12150
|
+
setOrganizationName(seeded.organizationName);
|
|
12151
|
+
}
|
|
12152
|
+
return () => setSandboxConfig(null);
|
|
12153
|
+
}, [sandboxActive, sandboxToken, sandboxUcic, sandboxSubject, organisationUuid, workspaceUuid, slug]);
|
|
12154
|
+
useEffect(() => {
|
|
12155
|
+
if (sandboxActive) return;
|
|
11714
12156
|
if (accessToken) {
|
|
11715
12157
|
const authData = syncJwtDataToStore(accessToken);
|
|
11716
12158
|
setEmail(authData.email);
|
|
@@ -11718,11 +12160,13 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11718
12160
|
setWorkspaceId(authData.workspaceId);
|
|
11719
12161
|
setOrganizationName(authData.organizationName);
|
|
11720
12162
|
}
|
|
11721
|
-
}, [accessToken]);
|
|
12163
|
+
}, [accessToken, sandboxActive]);
|
|
11722
12164
|
useEffect(() => {
|
|
12165
|
+
if (sandboxActive) return;
|
|
11723
12166
|
if (refreshToken) setStoredValue("refresh_token", refreshToken);
|
|
11724
|
-
}, [refreshToken]);
|
|
12167
|
+
}, [refreshToken, sandboxActive]);
|
|
11725
12168
|
useEffect(() => {
|
|
12169
|
+
if (sandboxActive) return;
|
|
11726
12170
|
setAccessToken(initialAccessToken);
|
|
11727
12171
|
if (initialAccessToken && initialAccessToken.trim() !== "") {
|
|
11728
12172
|
const authData = syncJwtDataToStore(initialAccessToken);
|
|
@@ -11731,10 +12175,11 @@ function AuthProvider({ children, accessToken: initialAccessToken, refreshToken:
|
|
|
11731
12175
|
setWorkspaceId(authData.workspaceId);
|
|
11732
12176
|
setOrganizationName(authData.organizationName);
|
|
11733
12177
|
}
|
|
11734
|
-
}, [initialAccessToken]);
|
|
12178
|
+
}, [initialAccessToken, sandboxActive]);
|
|
11735
12179
|
useEffect(() => {
|
|
12180
|
+
if (sandboxActive) return;
|
|
11736
12181
|
setRefreshToken(initialRefreshToken);
|
|
11737
|
-
}, [initialRefreshToken]);
|
|
12182
|
+
}, [initialRefreshToken, sandboxActive]);
|
|
11738
12183
|
const updateTokens = useCallback((newAccessToken, newRefreshToken) => {
|
|
11739
12184
|
setAccessToken(newAccessToken);
|
|
11740
12185
|
if (newRefreshToken) setRefreshToken(newRefreshToken);
|
|
@@ -11991,8 +12436,17 @@ function DataAvailabilityProvider({ children }) {
|
|
|
11991
12436
|
mountedRef.current = false;
|
|
11992
12437
|
};
|
|
11993
12438
|
}, []);
|
|
12439
|
+
useEffect3(() => {
|
|
12440
|
+
setSessionExpiredListener(() => {
|
|
12441
|
+
if (!mountedRef.current) return;
|
|
12442
|
+
runIdRef.current += 1;
|
|
12443
|
+
setStatus("session-expired");
|
|
12444
|
+
});
|
|
12445
|
+
return () => setSessionExpiredListener(null);
|
|
12446
|
+
}, []);
|
|
11994
12447
|
const runCheck = useCallback4(async () => {
|
|
11995
12448
|
if (!organizationId || !workspaceId) return;
|
|
12449
|
+
if (isRefreshBlocked(authContext)) return;
|
|
11996
12450
|
const runId = ++runIdRef.current;
|
|
11997
12451
|
setStatus("checking");
|
|
11998
12452
|
const contact = email;
|
|
@@ -14129,7 +14583,7 @@ import { useTranslation as useTranslation10 } from "react-i18next";
|
|
|
14129
14583
|
|
|
14130
14584
|
// src/RedactoPrivacyCenter/lib/consentManagerUtils.ts
|
|
14131
14585
|
function purposeItemToUserConsent(purpose, group) {
|
|
14132
|
-
var _a3, _b, _c, _d;
|
|
14586
|
+
var _a3, _b, _c, _d, _e;
|
|
14133
14587
|
return {
|
|
14134
14588
|
purpose_uuid: purpose.purpose_uuid,
|
|
14135
14589
|
purpose: purpose.name,
|
|
@@ -14142,7 +14596,9 @@ function purposeItemToUserConsent(purpose, group) {
|
|
|
14142
14596
|
product_uuid: group.product_uuid,
|
|
14143
14597
|
product_name: group.product_name,
|
|
14144
14598
|
product_description: group.product_description,
|
|
14145
|
-
nominator_info: (_d = group.nominator) != null ? _d : void 0
|
|
14599
|
+
nominator_info: (_d = group.nominator) != null ? _d : void 0,
|
|
14600
|
+
revoke_warning_message: (_e = purpose.revoke_warning_message) != null ? _e : null,
|
|
14601
|
+
notice_uuid: purpose.notice_uuid
|
|
14146
14602
|
};
|
|
14147
14603
|
}
|
|
14148
14604
|
function getDisplayProductGroups(detail, tab) {
|
|
@@ -14221,31 +14677,6 @@ var ConsentStatusEnum = /* @__PURE__ */ ((ConsentStatusEnum2) => {
|
|
|
14221
14677
|
})(ConsentStatusEnum || {});
|
|
14222
14678
|
|
|
14223
14679
|
// src/RedactoPrivacyCenter/lib/constants.ts
|
|
14224
|
-
var languageOptions = [
|
|
14225
|
-
{ value: "en", label: "English" },
|
|
14226
|
-
{ value: "hi", label: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)" },
|
|
14227
|
-
{ value: "te", label: "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)" },
|
|
14228
|
-
{ value: "mr", label: "\u092E\u0930\u093E\u0920\u0940 (Marathi)" },
|
|
14229
|
-
{ value: "ta", label: "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)" },
|
|
14230
|
-
{ value: "ur", label: "\u0627\u0631\u062F\u0648 (Urdu)" },
|
|
14231
|
-
{ value: "gu", label: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)" },
|
|
14232
|
-
{ value: "kn", label: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)" },
|
|
14233
|
-
{ value: "ml", label: "\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)" },
|
|
14234
|
-
{ value: "pa", label: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40 (Punjabi)" },
|
|
14235
|
-
{ value: "or", label: "\u0B13\u0B21\u0B3C\u0B3F\u0B06 (Odia)" },
|
|
14236
|
-
{ value: "as", label: "\u0985\u09B8\u09AE\u09C0\u09AF\u09BC\u09BE (Assamese)" },
|
|
14237
|
-
{ value: "bn", label: "\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)" },
|
|
14238
|
-
{ value: "mai", label: "\u092E\u0948\u0925\u093F\u0932\u0940 (Maithili)" },
|
|
14239
|
-
{ value: "ne", label: "\u0928\u0947\u092A\u093E\u0932\u0940 (Nepali)" },
|
|
14240
|
-
{ value: "sd", label: "\u0633\u0646\u068C\u064A (Sindhi)" },
|
|
14241
|
-
{ value: "doi", label: "\u0921\u094B\u0917\u0930\u0940 (Dogri)" },
|
|
14242
|
-
{ value: "mni-Mtei", label: "\uABC3\uABE9\uABC7\uABE9\uABC2\uABE3\uABDF (Manipuri)" },
|
|
14243
|
-
{ value: "gom", label: "\u0915\u094B\u0902\u0915\u0923\u0940 (Goan Konkani)" },
|
|
14244
|
-
{ value: "sa", label: "\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D (Sanskrit)" },
|
|
14245
|
-
{ value: "brx", label: "\u092C\u0921\u093C\u094B (Bodo)" },
|
|
14246
|
-
{ value: "ks", label: "\u0643\u0672\u0634\u064F\u0631 (Kashmiri)" },
|
|
14247
|
-
{ value: "sat", label: "\u1C65\u1C5F\u1C71\u1C5B\u1C5F\u1C72\u1C64 (Santali)" }
|
|
14248
|
-
];
|
|
14249
14680
|
var PAGE_CHROME_BY_PAGE = {
|
|
14250
14681
|
home: {
|
|
14251
14682
|
titleKey: "privacyCenter",
|
|
@@ -14323,7 +14754,14 @@ var useTimePeriodOptions = () => {
|
|
|
14323
14754
|
);
|
|
14324
14755
|
};
|
|
14325
14756
|
var MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL = 3;
|
|
14757
|
+
var PRODUCT_SCOPED_REQUEST_TYPES = [
|
|
14758
|
+
"ACCESS" /* ACCESS */,
|
|
14759
|
+
"erasure" /* ERASURE */,
|
|
14760
|
+
"CORRECTION" /* CORRECTION */
|
|
14761
|
+
];
|
|
14326
14762
|
var SEARCH_DEBOUNCE_DELAY = 500;
|
|
14763
|
+
var FORM_PICKER_GROUP_LIMIT = 100;
|
|
14764
|
+
var LEGACY_PRODUCT_GROUP_UUID = "__legacy_flat_purposes__";
|
|
14327
14765
|
var POLL_INTERVAL = 3e4;
|
|
14328
14766
|
var NOTIFICATION_PAGE_SIZE = 10;
|
|
14329
14767
|
var TAB_TO_CATEGORY = {
|
|
@@ -14432,7 +14870,7 @@ var ModifyConsentModal = ({
|
|
|
14432
14870
|
action: "revoke",
|
|
14433
14871
|
buttonLabel: t("revokeConsent"),
|
|
14434
14872
|
buttonColor: colors.error,
|
|
14435
|
-
warningMessage: t("revokeConsentWarning"),
|
|
14873
|
+
warningMessage: selectedRecord.revoke_warning_message || t("revokeConsentWarning"),
|
|
14436
14874
|
description: nominatorLabel ? t("aboutToModifyConsentOnBehalf", { nominator: nominatorLabel }) : t("aboutToModifyConsent")
|
|
14437
14875
|
};
|
|
14438
14876
|
}
|
|
@@ -15103,7 +15541,8 @@ function ConsentManager() {
|
|
|
15103
15541
|
dataElements: (_b = selectedRecord == null ? void 0 : selectedRecord.data_elements) == null ? void 0 : _b.map((de) => ({
|
|
15104
15542
|
uuid: de.uuid,
|
|
15105
15543
|
selected: de.selected
|
|
15106
|
-
}))
|
|
15544
|
+
})),
|
|
15545
|
+
language: langParam
|
|
15107
15546
|
});
|
|
15108
15547
|
setIsModalOpen(false);
|
|
15109
15548
|
setSelectedRecord(null);
|
|
@@ -15115,7 +15554,7 @@ function ConsentManager() {
|
|
|
15115
15554
|
setIsManageLoading(false);
|
|
15116
15555
|
}
|
|
15117
15556
|
},
|
|
15118
|
-
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, fetchData, t]
|
|
15557
|
+
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, langParam, fetchData, t]
|
|
15119
15558
|
);
|
|
15120
15559
|
const handleExport = useCallback6(async () => {
|
|
15121
15560
|
if (!consentData.length) return;
|
|
@@ -15478,6 +15917,7 @@ function ActivitiesList() {
|
|
|
15478
15917
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
15479
15918
|
[accessToken, refreshToken, onError, updateTokens]
|
|
15480
15919
|
);
|
|
15920
|
+
const { langParam } = useCurrentLanguage();
|
|
15481
15921
|
const [activities, setActivities] = useState14([]);
|
|
15482
15922
|
const [totalCount, setTotalCount] = useState14(0);
|
|
15483
15923
|
const [isLoading, setIsLoading] = useState14(true);
|
|
@@ -15489,7 +15929,7 @@ function ActivitiesList() {
|
|
|
15489
15929
|
var _a3, _b, _c;
|
|
15490
15930
|
if (!organizationId || !workspaceId) return;
|
|
15491
15931
|
try {
|
|
15492
|
-
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient);
|
|
15932
|
+
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient, langParam);
|
|
15493
15933
|
if (!response) return;
|
|
15494
15934
|
const rows = (_a3 = response.data) != null ? _a3 : [];
|
|
15495
15935
|
setActivities((prev) => append ? [...prev, ...rows] : rows);
|
|
@@ -15500,7 +15940,7 @@ function ActivitiesList() {
|
|
|
15500
15940
|
if (!append) setActivities([]);
|
|
15501
15941
|
}
|
|
15502
15942
|
},
|
|
15503
|
-
[organizationId, workspaceId, authContext, consentClient]
|
|
15943
|
+
[organizationId, workspaceId, authContext, consentClient, langParam]
|
|
15504
15944
|
);
|
|
15505
15945
|
useEffect12(() => {
|
|
15506
15946
|
setIsLoading(true);
|
|
@@ -15639,10 +16079,10 @@ import { useTranslation as useTranslation13 } from "react-i18next";
|
|
|
15639
16079
|
// src/RedactoPrivacyCenter/lib/dateGroup.ts
|
|
15640
16080
|
import { useCallback as useCallback8 } from "react";
|
|
15641
16081
|
import { useTranslation as useTranslation12 } from "react-i18next";
|
|
15642
|
-
function monthKey(ts) {
|
|
16082
|
+
function monthKey(ts, locale) {
|
|
15643
16083
|
if (!ts) return "";
|
|
15644
16084
|
try {
|
|
15645
|
-
return new Date(ts).toLocaleDateString(void 0, { month: "long", year: "numeric" });
|
|
16085
|
+
return new Date(ts).toLocaleDateString(locale || void 0, { month: "long", year: "numeric" });
|
|
15646
16086
|
} catch {
|
|
15647
16087
|
return "";
|
|
15648
16088
|
}
|
|
@@ -15718,7 +16158,7 @@ function groupByTime(items, getTs, classify) {
|
|
|
15718
16158
|
);
|
|
15719
16159
|
}
|
|
15720
16160
|
function useRelativeDate() {
|
|
15721
|
-
const { t } = useTranslation12();
|
|
16161
|
+
const { t, i18n: i18n2 } = useTranslation12();
|
|
15722
16162
|
return useCallback8(
|
|
15723
16163
|
(ts) => {
|
|
15724
16164
|
if (!ts) return "";
|
|
@@ -15731,7 +16171,7 @@ function useRelativeDate() {
|
|
|
15731
16171
|
if (dayDiff <= 0) return t("today", { defaultValue: "Today" });
|
|
15732
16172
|
if (dayDiff === 1) return t("yesterday", { defaultValue: "Yesterday" });
|
|
15733
16173
|
if (dayDiff < 7) return t("daysAgo", { count: dayDiff, defaultValue: "{{count}} days ago" });
|
|
15734
|
-
return d.toLocaleDateString(void 0, {
|
|
16174
|
+
return d.toLocaleDateString(i18n2.language || void 0, {
|
|
15735
16175
|
month: "short",
|
|
15736
16176
|
day: "numeric",
|
|
15737
16177
|
...d.getFullYear() !== now.getFullYear() ? { year: "numeric" } : {}
|
|
@@ -15740,10 +16180,28 @@ function useRelativeDate() {
|
|
|
15740
16180
|
return ts;
|
|
15741
16181
|
}
|
|
15742
16182
|
},
|
|
15743
|
-
[t]
|
|
16183
|
+
[t, i18n2.language]
|
|
15744
16184
|
);
|
|
15745
16185
|
}
|
|
15746
16186
|
|
|
16187
|
+
// src/RedactoPrivacyCenter/lib/receiptEvent.ts
|
|
16188
|
+
function eventLabelKey(eventType) {
|
|
16189
|
+
const v = String(eventType || "").toUpperCase();
|
|
16190
|
+
if (v.includes("GRANT")) {
|
|
16191
|
+
return "consentGranted";
|
|
16192
|
+
}
|
|
16193
|
+
if (v.includes("WITHDRAW") || v.includes("REVOK")) {
|
|
16194
|
+
return "consentRevoked";
|
|
16195
|
+
}
|
|
16196
|
+
if (v.includes("DECLIN")) {
|
|
16197
|
+
return "consentDeclined";
|
|
16198
|
+
}
|
|
16199
|
+
if (v.includes("EXPIR")) {
|
|
16200
|
+
return "consentExpired";
|
|
16201
|
+
}
|
|
16202
|
+
return void 0;
|
|
16203
|
+
}
|
|
16204
|
+
|
|
15747
16205
|
// src/RedactoPrivacyCenter/components/ReceiptsList.tsx
|
|
15748
16206
|
import { Fragment as Fragment7, jsx as jsx41, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
15749
16207
|
var PAGE_SIZE2 = 10;
|
|
@@ -15779,11 +16237,10 @@ function receiptBadgeStatus(eventType) {
|
|
|
15779
16237
|
if (v.includes("EXPIR")) return "warning";
|
|
15780
16238
|
return "secondary";
|
|
15781
16239
|
}
|
|
15782
|
-
var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel }) => {
|
|
16240
|
+
var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel, eventLabel }) => {
|
|
15783
16241
|
const product = item.product_name_display || item.product_name || "";
|
|
15784
|
-
const
|
|
15785
|
-
const
|
|
15786
|
-
const badgeLabel = event || "-";
|
|
16242
|
+
const primary = product || eventLabel || "-";
|
|
16243
|
+
const badgeLabel = eventLabel || "-";
|
|
15787
16244
|
return /* @__PURE__ */ jsxs25(View30, { style: styles31.row, children: [
|
|
15788
16245
|
/* @__PURE__ */ jsx41(NameAvatar, { name: primary, seed: item.uuid || primary, size: "sm" }),
|
|
15789
16246
|
/* @__PURE__ */ jsxs25(View30, { style: styles31.body, children: [
|
|
@@ -15810,7 +16267,7 @@ var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, download
|
|
|
15810
16267
|
});
|
|
15811
16268
|
ReceiptRow.displayName = "ReceiptRow";
|
|
15812
16269
|
function ReceiptsList() {
|
|
15813
|
-
const { t } = useTranslation13();
|
|
16270
|
+
const { t, i18n: i18n2 } = useTranslation13();
|
|
15814
16271
|
const { accessToken, refreshToken, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
15815
16272
|
const { consentClient } = useBaseUrl();
|
|
15816
16273
|
const { colors } = useTheme();
|
|
@@ -15895,14 +16352,18 @@ function ReceiptsList() {
|
|
|
15895
16352
|
const sections = useMemo13(() => {
|
|
15896
16353
|
const map = /* @__PURE__ */ new Map();
|
|
15897
16354
|
for (const r of receipts) {
|
|
15898
|
-
const key = monthKey(r.created_at);
|
|
16355
|
+
const key = monthKey(r.created_at, i18n2.language);
|
|
15899
16356
|
const arr = map.get(key);
|
|
15900
16357
|
if (arr) arr.push(r);
|
|
15901
16358
|
else map.set(key, [r]);
|
|
15902
16359
|
}
|
|
15903
16360
|
return Array.from(map, ([title, data]) => ({ title, data }));
|
|
15904
|
-
}, [receipts]);
|
|
16361
|
+
}, [receipts, i18n2.language]);
|
|
15905
16362
|
const downloadLabel = t("download") || "Download";
|
|
16363
|
+
const eventLabelFor = (r) => {
|
|
16364
|
+
const key = eventLabelKey(r.event_type);
|
|
16365
|
+
return key ? t(key) : r.event_type_display || r.event_type || "-";
|
|
16366
|
+
};
|
|
15906
16367
|
const handleScroll = useCallback9(
|
|
15907
16368
|
(e) => {
|
|
15908
16369
|
const { layoutMeasurement, contentOffset, contentSize } = e.nativeEvent;
|
|
@@ -15984,7 +16445,8 @@ function ReceiptsList() {
|
|
|
15984
16445
|
downloading: downloadingUuid === item.uuid,
|
|
15985
16446
|
onDownload: handleDownload,
|
|
15986
16447
|
downloadLabel,
|
|
15987
|
-
dateLabel: relativeLabel(item.created_at)
|
|
16448
|
+
dateLabel: relativeLabel(item.created_at),
|
|
16449
|
+
eventLabel: eventLabelFor(item)
|
|
15988
16450
|
}
|
|
15989
16451
|
)
|
|
15990
16452
|
] }, `${item.uuid || item.created_at}-${index}`)) }, section2.title)),
|
|
@@ -16140,6 +16602,25 @@ var uploadFileWithS2S = async ({
|
|
|
16140
16602
|
}
|
|
16141
16603
|
};
|
|
16142
16604
|
|
|
16605
|
+
// src/RedactoPrivacyCenter/lib/requestType.ts
|
|
16606
|
+
var isRequestType = (requestType, expected) => typeof requestType === "string" && requestType.toLowerCase() === expected.toLowerCase();
|
|
16607
|
+
var isProductScopedRequestType = (requestType) => PRODUCT_SCOPED_REQUEST_TYPES.some((type) => isRequestType(requestType, type));
|
|
16608
|
+
|
|
16609
|
+
// src/RedactoPrivacyCenter/lib/erasureConsent.ts
|
|
16610
|
+
var isErasureRequestType = (requestType) => isRequestType(requestType, "erasure" /* ERASURE */);
|
|
16611
|
+
var resolveErasurePurposeNames = (purposeNames, fallback) => {
|
|
16612
|
+
if (purposeNames.length === 0 || purposeNames.length > MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL) {
|
|
16613
|
+
return fallback;
|
|
16614
|
+
}
|
|
16615
|
+
return purposeNames.join(", ");
|
|
16616
|
+
};
|
|
16617
|
+
var erasureConsentPayload = (requestType, revokeConsentOnFulfilment) => {
|
|
16618
|
+
if (!isErasureRequestType(requestType)) {
|
|
16619
|
+
return {};
|
|
16620
|
+
}
|
|
16621
|
+
return { revoke_consent_on_fulfilment: revokeConsentOnFulfilment };
|
|
16622
|
+
};
|
|
16623
|
+
|
|
16143
16624
|
// src/RedactoPrivacyCenter/lib/filePicker.ts
|
|
16144
16625
|
import { Alert as Alert4 } from "react-native";
|
|
16145
16626
|
async function pickFile() {
|
|
@@ -16303,6 +16784,54 @@ var styles32 = StyleSheet33.create({
|
|
|
16303
16784
|
|
|
16304
16785
|
// src/RedactoPrivacyCenter/components/groupHelpers.ts
|
|
16305
16786
|
var productGroupKey = (group) => group.nominator ? `${group.product_uuid}:${group.nominator.uuid}` : group.product_uuid;
|
|
16787
|
+
var consentGroupToFormProductGroup = (group) => {
|
|
16788
|
+
var _a3;
|
|
16789
|
+
return {
|
|
16790
|
+
product_uuid: group.product_uuid,
|
|
16791
|
+
product_name: group.product_name,
|
|
16792
|
+
product_description: group.product_description,
|
|
16793
|
+
nominator: group.nominator,
|
|
16794
|
+
purposes: ((_a3 = group.purposes) != null ? _a3 : []).map(purposeItemToFormPurpose)
|
|
16795
|
+
};
|
|
16796
|
+
};
|
|
16797
|
+
var purposeItemToFormPurpose = (purpose) => {
|
|
16798
|
+
var _a3, _b, _c, _d, _e, _f;
|
|
16799
|
+
return {
|
|
16800
|
+
// The ledger keys purposes as `purpose_uuid`; the legacy Python
|
|
16801
|
+
// user-consents payload keys some of them as `uuid`. Accept either so the
|
|
16802
|
+
// picker and the submitted `purpose_uuid` resolve on both backends.
|
|
16803
|
+
uuid: (_b = (_a3 = purpose.purpose_uuid) != null ? _a3 : purpose.uuid) != null ? _b : "",
|
|
16804
|
+
purpose_uuid: (_d = (_c = purpose.purpose_uuid) != null ? _c : purpose.uuid) != null ? _d : "",
|
|
16805
|
+
name: purpose.name,
|
|
16806
|
+
description: (_e = purpose.description) != null ? _e : "",
|
|
16807
|
+
industries: "",
|
|
16808
|
+
selected: false,
|
|
16809
|
+
given_consent: false,
|
|
16810
|
+
status: purpose.status,
|
|
16811
|
+
validity: null,
|
|
16812
|
+
enabled: true,
|
|
16813
|
+
data_elements: ((_f = purpose.data_elements) != null ? _f : []).map(consentDataElementToFormDataElement)
|
|
16814
|
+
};
|
|
16815
|
+
};
|
|
16816
|
+
var legacyFlatGroup = (form, label) => {
|
|
16817
|
+
var _a3;
|
|
16818
|
+
return {
|
|
16819
|
+
product_uuid: LEGACY_PRODUCT_GROUP_UUID,
|
|
16820
|
+
product_name: label,
|
|
16821
|
+
product_description: null,
|
|
16822
|
+
nominator: null,
|
|
16823
|
+
purposes: ((_a3 = form.purposes) != null ? _a3 : []).map((wrapper) => wrapper == null ? void 0 : wrapper.purpose).filter((purpose) => Boolean(purpose))
|
|
16824
|
+
};
|
|
16825
|
+
};
|
|
16826
|
+
var consentDataElementToFormDataElement = (element) => ({
|
|
16827
|
+
uuid: element.uuid,
|
|
16828
|
+
name: element.name,
|
|
16829
|
+
description: "",
|
|
16830
|
+
enabled: element.enabled,
|
|
16831
|
+
required: element.required,
|
|
16832
|
+
given_consent: element.selected,
|
|
16833
|
+
selected: element.selected
|
|
16834
|
+
});
|
|
16306
16835
|
var buildGroupPurposes = (group) => group.purposes.filter((p) => p !== null && p !== void 0).map((p) => {
|
|
16307
16836
|
const validDataElements = Array.isArray(p.data_elements) ? p.data_elements.filter((de) => de !== null && de !== void 0 && Boolean(de.uuid)).map((de) => ({ ...de, selected: false })) : [];
|
|
16308
16837
|
return {
|
|
@@ -16328,12 +16857,6 @@ var buildGroupDataElements = (group) => {
|
|
|
16328
16857
|
// src/RedactoPrivacyCenter/components/Form.tsx
|
|
16329
16858
|
import { Fragment as Fragment9, jsx as jsx43, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
16330
16859
|
var TOTAL_STEPS = 3;
|
|
16331
|
-
var PRODUCT_SCOPED_REQUEST_TYPES = /* @__PURE__ */ new Set([
|
|
16332
|
-
"ACCESS" /* ACCESS */,
|
|
16333
|
-
"erasure" /* ERASURE */,
|
|
16334
|
-
"CORRECTION" /* CORRECTION */
|
|
16335
|
-
]);
|
|
16336
|
-
var isProductScopedRequestType = (rt) => PRODUCT_SCOPED_REQUEST_TYPES.has(rt);
|
|
16337
16860
|
function Form({ onCreateRequest }) {
|
|
16338
16861
|
const { t } = useTranslation15();
|
|
16339
16862
|
const { accessToken, refreshToken, email, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
@@ -16374,23 +16897,78 @@ function Form({ onCreateRequest }) {
|
|
|
16374
16897
|
});
|
|
16375
16898
|
const [uploadedDocs, setUploadedDocs] = useState16([]);
|
|
16376
16899
|
const [isUploading, setIsUploading] = useState16(false);
|
|
16900
|
+
const withUserConsentPickerGroups = useCallback10(
|
|
16901
|
+
async (form, language) => {
|
|
16902
|
+
var _a3, _b;
|
|
16903
|
+
if (!organizationId || !workspaceId) {
|
|
16904
|
+
return form;
|
|
16905
|
+
}
|
|
16906
|
+
const consents = await fetchUserConsents({
|
|
16907
|
+
organizationId,
|
|
16908
|
+
workspaceId,
|
|
16909
|
+
// No status filter: include every status (active / expired / withdrawn
|
|
16910
|
+
// / declined), matching Python form/data, so a DSAR can target products
|
|
16911
|
+
// the user no longer actively consents to.
|
|
16912
|
+
limit: FORM_PICKER_GROUP_LIMIT,
|
|
16913
|
+
nominatedLimit: FORM_PICKER_GROUP_LIMIT,
|
|
16914
|
+
language,
|
|
16915
|
+
authContext,
|
|
16916
|
+
consentClient
|
|
16917
|
+
});
|
|
16918
|
+
const direct = (_a3 = consents == null ? void 0 : consents.direct) != null ? _a3 : [];
|
|
16919
|
+
const nominated = (_b = consents == null ? void 0 : consents.nominated) != null ? _b : [];
|
|
16920
|
+
if (direct.length === 0 && nominated.length === 0) {
|
|
16921
|
+
return form;
|
|
16922
|
+
}
|
|
16923
|
+
return {
|
|
16924
|
+
...form,
|
|
16925
|
+
direct_groups: direct.map(consentGroupToFormProductGroup),
|
|
16926
|
+
nominated_groups: nominated.map(consentGroupToFormProductGroup)
|
|
16927
|
+
};
|
|
16928
|
+
},
|
|
16929
|
+
[organizationId, workspaceId, authContext, consentClient]
|
|
16930
|
+
);
|
|
16377
16931
|
useEffect14(() => {
|
|
16378
16932
|
if (!organizationId || !workspaceId || !contact) return;
|
|
16933
|
+
let isCancelled = false;
|
|
16379
16934
|
setIsLoading(true);
|
|
16380
|
-
getFormData(organizationId, workspaceId, contact, false, false, authContext, consentClient, langParam).then((data) => {
|
|
16381
|
-
if (data)
|
|
16935
|
+
getFormData(organizationId, workspaceId, contact, false, false, authContext, consentClient, langParam).then(async (data) => {
|
|
16936
|
+
if (!data) return;
|
|
16937
|
+
const withGroups = await withUserConsentPickerGroups(data, langParam);
|
|
16938
|
+
if (!isCancelled) setFormDataResponse(withGroups);
|
|
16382
16939
|
}).catch((error) => {
|
|
16383
16940
|
console.warn("Error fetching form data:", error);
|
|
16384
|
-
}).finally(() =>
|
|
16385
|
-
|
|
16941
|
+
}).finally(() => {
|
|
16942
|
+
if (!isCancelled) setIsLoading(false);
|
|
16943
|
+
});
|
|
16944
|
+
return () => {
|
|
16945
|
+
isCancelled = true;
|
|
16946
|
+
};
|
|
16947
|
+
}, [
|
|
16948
|
+
organizationId,
|
|
16949
|
+
workspaceId,
|
|
16950
|
+
contact,
|
|
16951
|
+
authContext,
|
|
16952
|
+
consentClient,
|
|
16953
|
+
langParam,
|
|
16954
|
+
withUserConsentPickerGroups
|
|
16955
|
+
]);
|
|
16386
16956
|
const allGroups = useMemo14(() => {
|
|
16387
16957
|
var _a3, _b;
|
|
16388
16958
|
if (!formDataResponse) return [];
|
|
16389
|
-
|
|
16959
|
+
const groups = [
|
|
16390
16960
|
...(_a3 = formDataResponse.direct_groups) != null ? _a3 : [],
|
|
16391
16961
|
...(_b = formDataResponse.nominated_groups) != null ? _b : []
|
|
16392
16962
|
];
|
|
16393
|
-
|
|
16963
|
+
if (groups.length > 0) {
|
|
16964
|
+
return groups;
|
|
16965
|
+
}
|
|
16966
|
+
const flatGroup = legacyFlatGroup(formDataResponse, t("yourData"));
|
|
16967
|
+
if (buildGroupPurposes(flatGroup).length === 0) {
|
|
16968
|
+
return [];
|
|
16969
|
+
}
|
|
16970
|
+
return [flatGroup];
|
|
16971
|
+
}, [formDataResponse, t]);
|
|
16394
16972
|
const skipProductStep = allGroups.length === 1;
|
|
16395
16973
|
const selectedGroup = useMemo14(() => {
|
|
16396
16974
|
var _a3, _b;
|
|
@@ -16422,7 +17000,7 @@ function Form({ onCreateRequest }) {
|
|
|
16422
17000
|
setSelectedProductKey(null);
|
|
16423
17001
|
}
|
|
16424
17002
|
setNominationData({ nominee_email: "", nominee_mobile: "" });
|
|
16425
|
-
if (requestType
|
|
17003
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */) && grievanceOptions.length > 0) {
|
|
16426
17004
|
const resetGrievances = grievanceOptions.reduce(
|
|
16427
17005
|
(acc, option) => {
|
|
16428
17006
|
acc[option.value] = false;
|
|
@@ -16451,12 +17029,10 @@ function Form({ onCreateRequest }) {
|
|
|
16451
17029
|
() => groupPurposes.filter((p) => selectedPurposes.has(p.uuid)).map((p) => p.name).filter(Boolean),
|
|
16452
17030
|
[groupPurposes, selectedPurposes]
|
|
16453
17031
|
);
|
|
16454
|
-
const selectedErasurePurposeNames = useMemo14(
|
|
16455
|
-
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
return selectedErasurePurposeList.join(", ");
|
|
16459
|
-
}, [selectedErasurePurposeList, t]);
|
|
17032
|
+
const selectedErasurePurposeNames = useMemo14(
|
|
17033
|
+
() => resolveErasurePurposeNames(selectedErasurePurposeList, t("revokeConsentModalYourPurposes")),
|
|
17034
|
+
[selectedErasurePurposeList, t]
|
|
17035
|
+
);
|
|
16460
17036
|
const togglePurpose = useCallback10(
|
|
16461
17037
|
(purpose) => {
|
|
16462
17038
|
const uuid = purpose.uuid;
|
|
@@ -16563,7 +17139,7 @@ function Form({ onCreateRequest }) {
|
|
|
16563
17139
|
if (isProductScopedRequestType(requestType)) {
|
|
16564
17140
|
if (allGroups.length === 0) return false;
|
|
16565
17141
|
if (!selectedGroup) return false;
|
|
16566
|
-
if (requestType
|
|
17142
|
+
if (isRequestType(requestType, "CORRECTION" /* CORRECTION */)) {
|
|
16567
17143
|
if (selectedCorrectionFields.size === 0) return false;
|
|
16568
17144
|
return Array.from(selectedCorrectionFields).every((fieldUuid) => {
|
|
16569
17145
|
var _a3, _b;
|
|
@@ -16571,15 +17147,15 @@ function Form({ onCreateRequest }) {
|
|
|
16571
17147
|
return Boolean(((_a3 = v == null ? void 0 : v.current) == null ? void 0 : _a3.trim()) && ((_b = v == null ? void 0 : v.updated) == null ? void 0 : _b.trim()));
|
|
16572
17148
|
});
|
|
16573
17149
|
}
|
|
16574
|
-
if (requestType
|
|
17150
|
+
if (isRequestType(requestType, "ACCESS" /* ACCESS */) || isErasureRequestType(requestType)) {
|
|
16575
17151
|
return selectedPurposes.size > 0;
|
|
16576
17152
|
}
|
|
16577
17153
|
return false;
|
|
16578
17154
|
}
|
|
16579
|
-
if (requestType
|
|
17155
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
16580
17156
|
return Object.values(selectedGrievances).some(Boolean);
|
|
16581
17157
|
}
|
|
16582
|
-
if (requestType
|
|
17158
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
16583
17159
|
return Boolean(nominationData.nominee_email);
|
|
16584
17160
|
}
|
|
16585
17161
|
return false;
|
|
@@ -16593,9 +17169,17 @@ function Form({ onCreateRequest }) {
|
|
|
16593
17169
|
selectedGrievances,
|
|
16594
17170
|
nominationData
|
|
16595
17171
|
]);
|
|
16596
|
-
const isFormValid = useMemo14(
|
|
17172
|
+
const isFormValid = useMemo14(
|
|
17173
|
+
() => Boolean(contact.trim()) && detailsValid && confirmChecked,
|
|
17174
|
+
[contact, detailsValid, confirmChecked]
|
|
17175
|
+
);
|
|
16597
17176
|
const handleUpload = useCallback10(async () => {
|
|
16598
17177
|
if (!organizationId || !workspaceId) return;
|
|
17178
|
+
const caseUuid = formDataResponse == null ? void 0 : formDataResponse.uuid;
|
|
17179
|
+
if (!caseUuid) {
|
|
17180
|
+
Alert5.alert(t("uploadFile"), t("unableToUpload") || "Unable to upload file. Please try again.");
|
|
17181
|
+
return;
|
|
17182
|
+
}
|
|
16599
17183
|
try {
|
|
16600
17184
|
const file = await pickFile();
|
|
16601
17185
|
if (!file) return;
|
|
@@ -16612,11 +17196,11 @@ function Form({ onCreateRequest }) {
|
|
|
16612
17196
|
"payload",
|
|
16613
17197
|
JSON.stringify({
|
|
16614
17198
|
organization_uuid: organizationId || "",
|
|
16615
|
-
space: `privacy/${
|
|
17199
|
+
space: `privacy/${caseUuid}`,
|
|
16616
17200
|
uuid: docUuid,
|
|
16617
17201
|
is_public: true,
|
|
16618
17202
|
allow_ai_processing: true,
|
|
16619
|
-
metadata: { group_by: "privacy", product: "privacy_center" }
|
|
17203
|
+
metadata: { group_by: "privacy", case_uuid: caseUuid, product: "privacy_center" }
|
|
16620
17204
|
})
|
|
16621
17205
|
);
|
|
16622
17206
|
const result = await uploadFileWithS2S({
|
|
@@ -16636,18 +17220,28 @@ function Form({ onCreateRequest }) {
|
|
|
16636
17220
|
} finally {
|
|
16637
17221
|
setIsUploading(false);
|
|
16638
17222
|
}
|
|
16639
|
-
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t]);
|
|
17223
|
+
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t, formDataResponse]);
|
|
16640
17224
|
const removeUploadedDoc = useCallback10((uuid) => {
|
|
16641
17225
|
setUploadedDocs((prev) => prev.filter((d) => d.uuid !== uuid));
|
|
16642
17226
|
}, []);
|
|
17227
|
+
const alertSubmitFailed = useCallback10(
|
|
17228
|
+
(message) => {
|
|
17229
|
+
Alert5.alert(t("submit"), message || t("unableToSubmit") || "Unable to submit request. Please try again.");
|
|
17230
|
+
},
|
|
17231
|
+
[t]
|
|
17232
|
+
);
|
|
16643
17233
|
const handleSubmit = useCallback10(async (revoke = false) => {
|
|
16644
|
-
var _a3
|
|
16645
|
-
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse)
|
|
17234
|
+
var _a3;
|
|
17235
|
+
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse) {
|
|
17236
|
+
alertSubmitFailed();
|
|
17237
|
+
return;
|
|
17238
|
+
}
|
|
16646
17239
|
setRevokeConsentOnFulfilment(revoke);
|
|
16647
17240
|
setIsSubmitting(true);
|
|
16648
17241
|
try {
|
|
16649
17242
|
const isProductScoped = isProductScopedRequestType(requestType);
|
|
16650
|
-
const
|
|
17243
|
+
const isLegacyFlatSelection = (selectedGroup == null ? void 0 : selectedGroup.product_uuid) === LEGACY_PRODUCT_GROUP_UUID;
|
|
17244
|
+
const anchorGroup = isProductScoped && !isLegacyFlatSelection ? selectedGroup : null;
|
|
16651
17245
|
const updatePurposes = Array.from(selectedPurposes).map((uuid) => ({
|
|
16652
17246
|
purpose_uuid: uuid,
|
|
16653
17247
|
data_element_uuids: Array.from(selectedDataElements.get(uuid) || [])
|
|
@@ -16668,27 +17262,27 @@ function Form({ onCreateRequest }) {
|
|
|
16668
17262
|
purposes: updatePurposes,
|
|
16669
17263
|
correction_data: correctionData,
|
|
16670
17264
|
grievance_types: grievanceTypes,
|
|
16671
|
-
...requestType
|
|
17265
|
+
...isRequestType(requestType, "nomination" /* NOMINATION */) ? { nomination_data: nominationData } : {}
|
|
16672
17266
|
},
|
|
16673
|
-
time_period: requestType
|
|
17267
|
+
time_period: isRequestType(requestType, "ACCESS" /* ACCESS */) ? parseInt(timePeriod || "30", 10) : 0,
|
|
16674
17268
|
requestor_note: additionalNote || "",
|
|
16675
|
-
...requestType
|
|
17269
|
+
...erasureConsentPayload(requestType, revoke),
|
|
16676
17270
|
...anchorGroup ? { product_uuid: anchorGroup.product_uuid } : {},
|
|
16677
17271
|
...(anchorGroup == null ? void 0 : anchorGroup.nominator) ? { data_principal_uuid: anchorGroup.nominator.uuid } : {}
|
|
16678
17272
|
};
|
|
16679
17273
|
const response = await createCaseRequest(organizationId, workspaceId, request, false, false, authContext, consentClient);
|
|
16680
|
-
const
|
|
16681
|
-
const newCaseId = (
|
|
17274
|
+
const caseRef = extractCaseRef(response);
|
|
17275
|
+
const newCaseId = (caseRef == null ? void 0 : caseRef.case_id) || (caseRef == null ? void 0 : caseRef.uuid) || null;
|
|
16682
17276
|
if (newCaseId) {
|
|
16683
17277
|
setCaseId(newCaseId);
|
|
16684
|
-
setSubmittedProductName((
|
|
17278
|
+
setSubmittedProductName((_a3 = anchorGroup == null ? void 0 : anchorGroup.product_name) != null ? _a3 : "");
|
|
16685
17279
|
setIsSubmitted(true);
|
|
16686
17280
|
} else {
|
|
16687
|
-
|
|
17281
|
+
alertSubmitFailed();
|
|
16688
17282
|
}
|
|
16689
17283
|
} catch (error) {
|
|
16690
17284
|
console.warn("Error submitting request:", error);
|
|
16691
|
-
|
|
17285
|
+
alertSubmitFailed(error == null ? void 0 : error.message);
|
|
16692
17286
|
} finally {
|
|
16693
17287
|
setIsSubmitting(false);
|
|
16694
17288
|
}
|
|
@@ -16711,11 +17305,13 @@ function Form({ onCreateRequest }) {
|
|
|
16711
17305
|
consentClient,
|
|
16712
17306
|
groupDataElements,
|
|
16713
17307
|
uploadedDocs,
|
|
16714
|
-
|
|
17308
|
+
alertSubmitFailed
|
|
16715
17309
|
]);
|
|
16716
17310
|
const handleSubmitClick = useCallback10(() => {
|
|
16717
|
-
if (!isFormValid)
|
|
16718
|
-
|
|
17311
|
+
if (!isFormValid) {
|
|
17312
|
+
return;
|
|
17313
|
+
}
|
|
17314
|
+
if (isErasureRequestType(requestType)) {
|
|
16719
17315
|
setIsErasureConsentModalOpen(true);
|
|
16720
17316
|
return;
|
|
16721
17317
|
}
|
|
@@ -16804,7 +17400,7 @@ function Form({ onCreateRequest }) {
|
|
|
16804
17400
|
if (groupPurposes.length === 0) {
|
|
16805
17401
|
return /* @__PURE__ */ jsx43(Text25, { style: [styles33.placeholder, { color: colors.textSecondary }], children: t("noPurposesAvailable") || "No purposes available" });
|
|
16806
17402
|
}
|
|
16807
|
-
const isErasure = requestType
|
|
17403
|
+
const isErasure = isErasureRequestType(requestType);
|
|
16808
17404
|
const allPurposesSelected = groupPurposes.every(
|
|
16809
17405
|
(p) => (p.data_elements || []).every((de) => {
|
|
16810
17406
|
var _a3;
|
|
@@ -16924,18 +17520,18 @@ function Form({ onCreateRequest }) {
|
|
|
16924
17520
|
] }),
|
|
16925
17521
|
selectedGroup ? /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
16926
17522
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("requestDetails") }),
|
|
16927
|
-
/* @__PURE__ */ jsx43(View32, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: requestType
|
|
17523
|
+
/* @__PURE__ */ jsx43(View32, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: isRequestType(requestType, "CORRECTION" /* CORRECTION */) ? renderCorrectionFields() : renderPurposeFields() })
|
|
16928
17524
|
] }) : /* @__PURE__ */ jsxs27(View32, { style: [styles33.hintCard, { backgroundColor: colors.surfaceAlt }], children: [
|
|
16929
17525
|
/* @__PURE__ */ jsx43(Icon, { name: "circle-alert", size: 18, color: colors.textSecondary }),
|
|
16930
17526
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.hintText, { color: colors.textSecondary }], children: t("selectProductFirst", { defaultValue: "Select a product to continue" }) })
|
|
16931
17527
|
] }),
|
|
16932
|
-
requestType
|
|
17528
|
+
isRequestType(requestType, "ACCESS" /* ACCESS */) && selectedGroup ? /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
16933
17529
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("timePeriod") }),
|
|
16934
17530
|
/* @__PURE__ */ jsx43(PCSelect, { value: timePeriod, options: timePeriodOptions, onChange: setTimePeriod, placeholder: t("timePeriod") })
|
|
16935
17531
|
] }) : null
|
|
16936
17532
|
] });
|
|
16937
17533
|
}
|
|
16938
|
-
if (requestType
|
|
17534
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
16939
17535
|
if (grievanceOptions.length === 0) {
|
|
16940
17536
|
return /* @__PURE__ */ jsx43(View32, { style: styles33.stepBody, children: /* @__PURE__ */ jsx43(Text25, { style: [styles33.placeholder, { color: colors.textSecondary }], children: t("noPurposesAvailable") || "No grievance types available" }) });
|
|
16941
17537
|
}
|
|
@@ -16951,7 +17547,7 @@ function Form({ onCreateRequest }) {
|
|
|
16951
17547
|
] })
|
|
16952
17548
|
] }) });
|
|
16953
17549
|
}
|
|
16954
|
-
if (requestType
|
|
17550
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
16955
17551
|
return /* @__PURE__ */ jsx43(View32, { style: styles33.stepBody, children: /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
16956
17552
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("enterNomineeDetails") }),
|
|
16957
17553
|
/* @__PURE__ */ jsxs27(View32, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
@@ -18016,6 +18612,7 @@ function useUnreadCount() {
|
|
|
18016
18612
|
const loadRef = useRef8();
|
|
18017
18613
|
loadRef.current = async () => {
|
|
18018
18614
|
if (!organizationId || !workspaceId) return;
|
|
18615
|
+
if (isRefreshBlocked(authContext)) return;
|
|
18019
18616
|
const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
|
|
18020
18617
|
if (res && typeof res.count === "number") setCount(res.count);
|
|
18021
18618
|
};
|
|
@@ -18341,17 +18938,255 @@ function PrivacyCenterEmptyState() {
|
|
|
18341
18938
|
return /* @__PURE__ */ jsx49(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
|
|
18342
18939
|
}
|
|
18343
18940
|
|
|
18941
|
+
// src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
|
|
18942
|
+
import { useTranslation as useTranslation20 } from "react-i18next";
|
|
18943
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
18944
|
+
function PrivacyCenterSessionExpired() {
|
|
18945
|
+
const { t } = useTranslation20();
|
|
18946
|
+
return /* @__PURE__ */ jsx50(
|
|
18947
|
+
PCEmpty,
|
|
18948
|
+
{
|
|
18949
|
+
iconName: "shield",
|
|
18950
|
+
title: t("sessionExpiredTitle"),
|
|
18951
|
+
description: t("sessionExpiredDescription")
|
|
18952
|
+
}
|
|
18953
|
+
);
|
|
18954
|
+
}
|
|
18955
|
+
|
|
18956
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
18957
|
+
import { useCallback as useCallback11, useEffect as useEffect16, useState as useState22 } from "react";
|
|
18958
|
+
import { StyleSheet as StyleSheet41, View as View39 } from "react-native";
|
|
18959
|
+
|
|
18960
|
+
// src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
|
|
18961
|
+
import { createContext as createContext7, useContext as useContext7 } from "react";
|
|
18962
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
18963
|
+
var ProfileSwitchContext = createContext7({
|
|
18964
|
+
switchProfile: null
|
|
18965
|
+
});
|
|
18966
|
+
function ProfileSwitchProvider({
|
|
18967
|
+
switchProfile,
|
|
18968
|
+
children
|
|
18969
|
+
}) {
|
|
18970
|
+
return /* @__PURE__ */ jsx51(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
|
|
18971
|
+
}
|
|
18972
|
+
function useProfileSwitch() {
|
|
18973
|
+
return useContext7(ProfileSwitchContext);
|
|
18974
|
+
}
|
|
18975
|
+
|
|
18976
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18977
|
+
import { ScrollView as ScrollView8, StyleSheet as StyleSheet40, Text as Text30, TouchableOpacity as TouchableOpacity15, View as View38 } from "react-native";
|
|
18978
|
+
import { useTranslation as useTranslation21 } from "react-i18next";
|
|
18979
|
+
|
|
18980
|
+
// src/RedactoPrivacyCenter/lib/identityLabels.ts
|
|
18981
|
+
var identityPrimaryValue = (candidate) => {
|
|
18982
|
+
const orgUserId = candidate.org_user_id || "";
|
|
18983
|
+
const email = candidate.primary_email || "";
|
|
18984
|
+
const mobile = candidate.primary_mobile || "";
|
|
18985
|
+
return { orgUserId, fallback: email || mobile || candidate.uuid };
|
|
18986
|
+
};
|
|
18987
|
+
var identitySecondaryLabels = (candidate, primaryLabel) => {
|
|
18988
|
+
const email = candidate.primary_email || "";
|
|
18989
|
+
const mobile = candidate.primary_mobile || "";
|
|
18990
|
+
return [email, mobile].filter(
|
|
18991
|
+
(value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
|
|
18992
|
+
);
|
|
18993
|
+
};
|
|
18994
|
+
var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
|
|
18995
|
+
|
|
18996
|
+
// src/RedactoPrivacyCenter/components/SelectUser.tsx
|
|
18997
|
+
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
18998
|
+
var SelectUser = ({
|
|
18999
|
+
candidates,
|
|
19000
|
+
onSelect,
|
|
19001
|
+
busyUuid,
|
|
19002
|
+
error
|
|
19003
|
+
}) => {
|
|
19004
|
+
const { t } = useTranslation21();
|
|
19005
|
+
const { colors } = useTheme();
|
|
19006
|
+
const selectable = selectableIdentities(candidates);
|
|
19007
|
+
const busy = busyUuid !== null;
|
|
19008
|
+
return /* @__PURE__ */ jsxs32(ScrollView8, { contentContainerStyle: styles39.container, children: [
|
|
19009
|
+
/* @__PURE__ */ jsx52(Text30, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
|
|
19010
|
+
/* @__PURE__ */ jsx52(Text30, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
|
|
19011
|
+
error ? /* @__PURE__ */ jsx52(Text30, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
|
|
19012
|
+
selectable.map((candidate) => {
|
|
19013
|
+
const { orgUserId, fallback } = identityPrimaryValue(candidate);
|
|
19014
|
+
const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
|
|
19015
|
+
const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
|
|
19016
|
+
const isBusy = busyUuid === candidate.uuid;
|
|
19017
|
+
return /* @__PURE__ */ jsxs32(
|
|
19018
|
+
TouchableOpacity15,
|
|
19019
|
+
{
|
|
19020
|
+
accessibilityRole: "button",
|
|
19021
|
+
disabled: busy,
|
|
19022
|
+
onPress: () => onSelect(candidate.uuid),
|
|
19023
|
+
style: [
|
|
19024
|
+
styles39.row,
|
|
19025
|
+
{
|
|
19026
|
+
backgroundColor: colors.surface,
|
|
19027
|
+
borderColor: isBusy ? colors.primary : colors.border
|
|
19028
|
+
}
|
|
19029
|
+
],
|
|
19030
|
+
children: [
|
|
19031
|
+
/* @__PURE__ */ jsxs32(View38, { style: styles39.rowText, children: [
|
|
19032
|
+
/* @__PURE__ */ jsx52(Text30, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
|
|
19033
|
+
secondaryLabels.map((label) => /* @__PURE__ */ jsx52(
|
|
19034
|
+
Text30,
|
|
19035
|
+
{
|
|
19036
|
+
style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
|
|
19037
|
+
children: label
|
|
19038
|
+
},
|
|
19039
|
+
label
|
|
19040
|
+
))
|
|
19041
|
+
] }),
|
|
19042
|
+
isBusy ? /* @__PURE__ */ jsx52(Text30, { style: [typography.caption, { color: colors.textSecondary }], children: t("signingInEllipsis") }) : /* @__PURE__ */ jsx52(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary })
|
|
19043
|
+
]
|
|
19044
|
+
},
|
|
19045
|
+
candidate.uuid
|
|
19046
|
+
);
|
|
19047
|
+
})
|
|
19048
|
+
] });
|
|
19049
|
+
};
|
|
19050
|
+
var styles39 = StyleSheet40.create({
|
|
19051
|
+
container: { padding: spacing.lg },
|
|
19052
|
+
heading: { textAlign: "center" },
|
|
19053
|
+
subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
|
|
19054
|
+
error: { textAlign: "center", marginBottom: spacing.md },
|
|
19055
|
+
row: {
|
|
19056
|
+
flexDirection: "row",
|
|
19057
|
+
alignItems: "center",
|
|
19058
|
+
borderWidth: 1,
|
|
19059
|
+
borderRadius: radii.md,
|
|
19060
|
+
padding: spacing.md,
|
|
19061
|
+
marginBottom: spacing.sm
|
|
19062
|
+
},
|
|
19063
|
+
rowText: { flex: 1 },
|
|
19064
|
+
secondary: { marginTop: 2 }
|
|
19065
|
+
});
|
|
19066
|
+
|
|
19067
|
+
// src/RedactoPrivacyCenter/components/SelectUserGate.tsx
|
|
19068
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
19069
|
+
function SelectUserGate({ children }) {
|
|
19070
|
+
var _a3, _b;
|
|
19071
|
+
const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
|
|
19072
|
+
const { consentClient } = useBaseUrl();
|
|
19073
|
+
const { colors } = useTheme();
|
|
19074
|
+
const insets = useSafeInsets();
|
|
19075
|
+
const [phase, setPhase] = useState22("checking");
|
|
19076
|
+
const [candidates, setCandidates] = useState22([]);
|
|
19077
|
+
const [busyUuid, setBusyUuid] = useState22(null);
|
|
19078
|
+
const [selectError, setSelectError] = useState22(null);
|
|
19079
|
+
const [pinnedOrgUserId, setPinnedOrgUserId] = useState22(null);
|
|
19080
|
+
const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
|
|
19081
|
+
useEffect16(() => {
|
|
19082
|
+
let cancelled = false;
|
|
19083
|
+
if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
|
|
19084
|
+
setPhase("resolved");
|
|
19085
|
+
return;
|
|
19086
|
+
}
|
|
19087
|
+
const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
|
|
19088
|
+
setPhase(isPinned ? "resolved" : "checking");
|
|
19089
|
+
(async () => {
|
|
19090
|
+
var _a4;
|
|
19091
|
+
try {
|
|
19092
|
+
const res = await consentClient.listIdentities({
|
|
19093
|
+
organisationUuid: organizationId,
|
|
19094
|
+
workspaceUuid: workspaceId,
|
|
19095
|
+
authToken: accessToken
|
|
19096
|
+
});
|
|
19097
|
+
if (cancelled) return;
|
|
19098
|
+
const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
|
|
19099
|
+
setCandidates(list);
|
|
19100
|
+
setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
|
|
19101
|
+
} catch {
|
|
19102
|
+
if (cancelled) return;
|
|
19103
|
+
setCandidates([]);
|
|
19104
|
+
setPhase("resolved");
|
|
19105
|
+
}
|
|
19106
|
+
})();
|
|
19107
|
+
return () => {
|
|
19108
|
+
cancelled = true;
|
|
19109
|
+
};
|
|
19110
|
+
}, [organizationId, workspaceId, tokenOrgUserId]);
|
|
19111
|
+
const handleSelect = useCallback11(
|
|
19112
|
+
async (principalUuid) => {
|
|
19113
|
+
var _a4, _b2;
|
|
19114
|
+
if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
|
|
19115
|
+
setBusyUuid(principalUuid);
|
|
19116
|
+
setSelectError(null);
|
|
19117
|
+
try {
|
|
19118
|
+
const res = await consentClient.selectPrincipal(
|
|
19119
|
+
{
|
|
19120
|
+
organisationUuid: organizationId,
|
|
19121
|
+
workspaceUuid: workspaceId,
|
|
19122
|
+
authToken: accessToken
|
|
19123
|
+
},
|
|
19124
|
+
principalUuid
|
|
19125
|
+
);
|
|
19126
|
+
if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
|
|
19127
|
+
throw new Error("select-principal returned no tokens");
|
|
19128
|
+
}
|
|
19129
|
+
const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
|
|
19130
|
+
setPinnedOrgUserId(pinned);
|
|
19131
|
+
setPhase("resolved");
|
|
19132
|
+
updateTokens(res.token, res.refresh_token);
|
|
19133
|
+
} catch (error) {
|
|
19134
|
+
setSelectError(
|
|
19135
|
+
error instanceof Error ? error.message : "Failed to switch profile"
|
|
19136
|
+
);
|
|
19137
|
+
} finally {
|
|
19138
|
+
setBusyUuid(null);
|
|
19139
|
+
}
|
|
19140
|
+
},
|
|
19141
|
+
[accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
|
|
19142
|
+
);
|
|
19143
|
+
const canSwitch = candidates.length > 1;
|
|
19144
|
+
const switchProfile = useCallback11(() => {
|
|
19145
|
+
if (!canSwitch) return;
|
|
19146
|
+
setSelectError(null);
|
|
19147
|
+
setPhase("picking");
|
|
19148
|
+
}, [canSwitch]);
|
|
19149
|
+
if (phase === "checking" || phase === "picking") {
|
|
19150
|
+
return /* @__PURE__ */ jsx53(
|
|
19151
|
+
View39,
|
|
19152
|
+
{
|
|
19153
|
+
style: [
|
|
19154
|
+
styles40.screen,
|
|
19155
|
+
{
|
|
19156
|
+
backgroundColor: colors.canvasSubtle,
|
|
19157
|
+
paddingTop: insets.top,
|
|
19158
|
+
paddingBottom: insets.bottom
|
|
19159
|
+
}
|
|
19160
|
+
],
|
|
19161
|
+
children: phase === "checking" ? /* @__PURE__ */ jsx53(PCLoader, {}) : /* @__PURE__ */ jsx53(
|
|
19162
|
+
SelectUser,
|
|
19163
|
+
{
|
|
19164
|
+
candidates,
|
|
19165
|
+
onSelect: handleSelect,
|
|
19166
|
+
busyUuid,
|
|
19167
|
+
error: selectError
|
|
19168
|
+
}
|
|
19169
|
+
)
|
|
19170
|
+
}
|
|
19171
|
+
);
|
|
19172
|
+
}
|
|
19173
|
+
return /* @__PURE__ */ jsx53(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
|
|
19174
|
+
}
|
|
19175
|
+
var styles40 = StyleSheet41.create({
|
|
19176
|
+
screen: { flex: 1 }
|
|
19177
|
+
});
|
|
19178
|
+
|
|
18344
19179
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
18345
|
-
import { useState as
|
|
18346
|
-
import { View as
|
|
18347
|
-
import { useTranslation as
|
|
19180
|
+
import { useState as useState24, useMemo as useMemo20, useEffect as useEffect19 } from "react";
|
|
19181
|
+
import { View as View47, Text as Text38, StyleSheet as StyleSheet49, ActivityIndicator as ActivityIndicator8, Platform as Platform7 } from "react-native";
|
|
19182
|
+
import { useTranslation as useTranslation27 } from "react-i18next";
|
|
18348
19183
|
|
|
18349
19184
|
// src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
|
|
18350
|
-
import { View as
|
|
18351
|
-
import { useTranslation as
|
|
18352
|
-
import { jsx as
|
|
19185
|
+
import { View as View40, Text as Text31, ScrollView as ScrollView9, StyleSheet as StyleSheet42 } from "react-native";
|
|
19186
|
+
import { useTranslation as useTranslation22 } from "react-i18next";
|
|
19187
|
+
import { jsx as jsx54, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
18353
19188
|
function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
18354
|
-
const { t } =
|
|
19189
|
+
const { t } = useTranslation22();
|
|
18355
19190
|
const { colors } = useTheme();
|
|
18356
19191
|
const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
|
|
18357
19192
|
const details = selectedCase.request_details;
|
|
@@ -18383,36 +19218,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18383
19218
|
}
|
|
18384
19219
|
const description = selectedCase.description_display || selectedCase.description;
|
|
18385
19220
|
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);
|
|
18386
|
-
return /* @__PURE__ */
|
|
18387
|
-
/* @__PURE__ */
|
|
19221
|
+
return /* @__PURE__ */ jsxs33(ScrollView9, { style: [styles41.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles41.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
|
|
19222
|
+
/* @__PURE__ */ jsx54(View40, { style: styles41.timeline, children: steps.map((step, i) => {
|
|
18388
19223
|
const isLast = i === steps.length - 1;
|
|
18389
|
-
return /* @__PURE__ */
|
|
18390
|
-
/* @__PURE__ */
|
|
18391
|
-
/* @__PURE__ */
|
|
18392
|
-
|
|
19224
|
+
return /* @__PURE__ */ jsxs33(View40, { style: styles41.stepRow, children: [
|
|
19225
|
+
/* @__PURE__ */ jsxs33(View40, { style: styles41.gutter, children: [
|
|
19226
|
+
/* @__PURE__ */ jsx54(
|
|
19227
|
+
View40,
|
|
18393
19228
|
{
|
|
18394
19229
|
style: [
|
|
18395
|
-
|
|
19230
|
+
styles41.dot,
|
|
18396
19231
|
step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
|
|
18397
19232
|
],
|
|
18398
|
-
children: step.state === "done" ? /* @__PURE__ */
|
|
19233
|
+
children: step.state === "done" ? /* @__PURE__ */ jsx54(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ jsx54(View40, { style: [styles41.dotInner, { backgroundColor: colors.primaryText }] }) : null
|
|
18399
19234
|
}
|
|
18400
19235
|
),
|
|
18401
|
-
!isLast ? /* @__PURE__ */
|
|
19236
|
+
!isLast ? /* @__PURE__ */ jsx54(View40, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
|
|
18402
19237
|
] }),
|
|
18403
|
-
/* @__PURE__ */
|
|
18404
|
-
/* @__PURE__ */
|
|
18405
|
-
step.date ? /* @__PURE__ */
|
|
19238
|
+
/* @__PURE__ */ jsxs33(View40, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
|
|
19239
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
|
|
19240
|
+
step.date ? /* @__PURE__ */ jsx54(Text31, { style: [styles41.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
|
|
18406
19241
|
] })
|
|
18407
19242
|
] }, `${step.label}-${i}`);
|
|
18408
19243
|
}) }),
|
|
18409
|
-
hasDetails ? /* @__PURE__ */
|
|
18410
|
-
description ? /* @__PURE__ */
|
|
18411
|
-
/* @__PURE__ */
|
|
18412
|
-
/* @__PURE__ */
|
|
19244
|
+
hasDetails ? /* @__PURE__ */ jsxs33(View40, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
19245
|
+
description ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
|
|
19246
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
|
|
19247
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.descriptionText, { color: colors.text }], children: description })
|
|
18413
19248
|
] }) : null,
|
|
18414
|
-
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */
|
|
18415
|
-
/* @__PURE__ */
|
|
19249
|
+
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
|
|
19250
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
|
|
18416
19251
|
details.purposes.map((rawP, idx) => {
|
|
18417
19252
|
const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
|
|
18418
19253
|
const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
|
|
@@ -18420,10 +19255,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18420
19255
|
const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
|
|
18421
19256
|
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)) : [];
|
|
18422
19257
|
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 : [];
|
|
18423
|
-
return /* @__PURE__ */
|
|
18424
|
-
/* @__PURE__ */
|
|
18425
|
-
purposeDescription ? /* @__PURE__ */
|
|
18426
|
-
dataElements.length > 0 ? /* @__PURE__ */
|
|
19258
|
+
return /* @__PURE__ */ jsxs33(View40, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet42.hairlineWidth }], children: [
|
|
19259
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
|
|
19260
|
+
purposeDescription ? /* @__PURE__ */ jsx54(Text31, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
|
|
19261
|
+
dataElements.length > 0 ? /* @__PURE__ */ jsx54(View40, { style: styles41.chipRow, children: dataElements.map((de) => /* @__PURE__ */ jsx54(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ jsxs33(Text31, { style: [styles41.itemDesc, { color: colors.textSecondary }], children: [
|
|
18427
19262
|
dataElementUuids.length,
|
|
18428
19263
|
" ",
|
|
18429
19264
|
t("dataElements") || "data elements"
|
|
@@ -18431,44 +19266,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18431
19266
|
] }, purposeId);
|
|
18432
19267
|
})
|
|
18433
19268
|
] }) : null,
|
|
18434
|
-
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */
|
|
18435
|
-
/* @__PURE__ */
|
|
18436
|
-
details.correction_data.map((item, idx) => /* @__PURE__ */
|
|
18437
|
-
/* @__PURE__ */
|
|
18438
|
-
/* @__PURE__ */
|
|
18439
|
-
/* @__PURE__ */
|
|
18440
|
-
/* @__PURE__ */
|
|
18441
|
-
/* @__PURE__ */
|
|
19269
|
+
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
|
|
19270
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
|
|
19271
|
+
details.correction_data.map((item, idx) => /* @__PURE__ */ jsxs33(View40, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet42.hairlineWidth }], children: [
|
|
19272
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
|
|
19273
|
+
/* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValues, children: [
|
|
19274
|
+
/* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValue, children: [
|
|
19275
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
|
|
19276
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
|
|
18442
19277
|
] }),
|
|
18443
|
-
/* @__PURE__ */
|
|
18444
|
-
/* @__PURE__ */
|
|
18445
|
-
/* @__PURE__ */
|
|
18446
|
-
/* @__PURE__ */
|
|
19278
|
+
/* @__PURE__ */ jsx54(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
19279
|
+
/* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValue, children: [
|
|
19280
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
|
|
19281
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
|
|
18447
19282
|
] })
|
|
18448
19283
|
] })
|
|
18449
19284
|
] }, idx))
|
|
18450
19285
|
] }) : null,
|
|
18451
|
-
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */
|
|
18452
|
-
/* @__PURE__ */
|
|
18453
|
-
/* @__PURE__ */
|
|
19286
|
+
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
|
|
19287
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
|
|
19288
|
+
/* @__PURE__ */ jsx54(View40, { style: styles41.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ jsx54(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
|
|
18454
19289
|
] }) : null,
|
|
18455
|
-
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */
|
|
18456
|
-
/* @__PURE__ */
|
|
18457
|
-
details.nomination_data.nominee_email ? /* @__PURE__ */
|
|
18458
|
-
/* @__PURE__ */
|
|
18459
|
-
/* @__PURE__ */
|
|
19290
|
+
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
|
|
19291
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
|
|
19292
|
+
details.nomination_data.nominee_email ? /* @__PURE__ */ jsxs33(View40, { style: styles41.kvRow, children: [
|
|
19293
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
|
|
19294
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
|
|
18460
19295
|
] }) : null,
|
|
18461
|
-
details.nomination_data.nominee_mobile ? /* @__PURE__ */
|
|
18462
|
-
/* @__PURE__ */
|
|
18463
|
-
/* @__PURE__ */
|
|
19296
|
+
details.nomination_data.nominee_mobile ? /* @__PURE__ */ jsxs33(View40, { style: styles41.kvRow, children: [
|
|
19297
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
|
|
19298
|
+
/* @__PURE__ */ jsx54(Text31, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
|
|
18464
19299
|
] }) : null
|
|
18465
19300
|
] }) : null
|
|
18466
19301
|
] }) : null,
|
|
18467
|
-
/* @__PURE__ */
|
|
19302
|
+
/* @__PURE__ */ jsx54(View40, { style: { marginTop: "auto" }, children: /* @__PURE__ */ jsx54(Footer, {}) })
|
|
18468
19303
|
] });
|
|
18469
19304
|
}
|
|
18470
19305
|
var DOT = 22;
|
|
18471
|
-
var
|
|
19306
|
+
var styles41 = StyleSheet42.create({
|
|
18472
19307
|
container: {
|
|
18473
19308
|
flex: 1
|
|
18474
19309
|
},
|
|
@@ -18589,21 +19424,21 @@ var styles39 = StyleSheet40.create({
|
|
|
18589
19424
|
});
|
|
18590
19425
|
|
|
18591
19426
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
18592
|
-
import { useState as
|
|
18593
|
-
import { View as
|
|
18594
|
-
import { useTranslation as
|
|
19427
|
+
import { useState as useState23, useRef as useRef10, useEffect as useEffect18, useCallback as useCallback12, useMemo as useMemo19 } from "react";
|
|
19428
|
+
import { View as View46, Text as Text37, FlatList as FlatList2, StyleSheet as StyleSheet48, ActivityIndicator as ActivityIndicator7 } from "react-native";
|
|
19429
|
+
import { useTranslation as useTranslation26 } from "react-i18next";
|
|
18595
19430
|
|
|
18596
19431
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18597
|
-
import
|
|
18598
|
-
import { useTranslation as
|
|
19432
|
+
import React23 from "react";
|
|
19433
|
+
import { useTranslation as useTranslation24 } from "react-i18next";
|
|
18599
19434
|
|
|
18600
19435
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18601
|
-
import
|
|
18602
|
-
import { StyleSheet as
|
|
19436
|
+
import React22 from "react";
|
|
19437
|
+
import { StyleSheet as StyleSheet44, Text as Text33, View as View42 } from "react-native";
|
|
18603
19438
|
|
|
18604
19439
|
// src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
|
|
18605
|
-
import { View as
|
|
18606
|
-
import { jsx as
|
|
19440
|
+
import { View as View41, Text as Text32, TouchableOpacity as TouchableOpacity16, Linking, StyleSheet as StyleSheet43 } from "react-native";
|
|
19441
|
+
import { jsx as jsx55, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
18607
19442
|
function AttachmentCard({ doc }) {
|
|
18608
19443
|
const { colors } = useTheme();
|
|
18609
19444
|
const downloadUrl = getDownloadUrl(doc.file_url);
|
|
@@ -18612,28 +19447,28 @@ function AttachmentCard({ doc }) {
|
|
|
18612
19447
|
Linking.openURL(downloadUrl);
|
|
18613
19448
|
}
|
|
18614
19449
|
};
|
|
18615
|
-
return /* @__PURE__ */
|
|
18616
|
-
|
|
19450
|
+
return /* @__PURE__ */ jsxs34(
|
|
19451
|
+
TouchableOpacity16,
|
|
18617
19452
|
{
|
|
18618
|
-
style: [
|
|
19453
|
+
style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
|
|
18619
19454
|
onPress: handlePress,
|
|
18620
19455
|
disabled: !downloadUrl,
|
|
18621
19456
|
activeOpacity: 0.7,
|
|
18622
19457
|
children: [
|
|
18623
|
-
/* @__PURE__ */
|
|
18624
|
-
/* @__PURE__ */
|
|
18625
|
-
/* @__PURE__ */
|
|
18626
|
-
doc.file_size ? /* @__PURE__ */
|
|
19458
|
+
/* @__PURE__ */ jsx55(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
|
|
19459
|
+
/* @__PURE__ */ jsxs34(View41, { style: styles42.info, children: [
|
|
19460
|
+
/* @__PURE__ */ jsx55(Text32, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
|
|
19461
|
+
doc.file_size ? /* @__PURE__ */ jsx55(Text32, { style: [styles42.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
|
|
18627
19462
|
] })
|
|
18628
19463
|
]
|
|
18629
19464
|
}
|
|
18630
19465
|
);
|
|
18631
19466
|
}
|
|
18632
|
-
var
|
|
19467
|
+
var styles42 = StyleSheet43.create({
|
|
18633
19468
|
container: {
|
|
18634
19469
|
flexDirection: "row",
|
|
18635
19470
|
alignItems: "center",
|
|
18636
|
-
borderWidth:
|
|
19471
|
+
borderWidth: StyleSheet43.hairlineWidth,
|
|
18637
19472
|
borderRadius: radii.md,
|
|
18638
19473
|
paddingHorizontal: spacing.sm + 2,
|
|
18639
19474
|
paddingVertical: spacing.sm,
|
|
@@ -18653,11 +19488,11 @@ var styles40 = StyleSheet41.create({
|
|
|
18653
19488
|
});
|
|
18654
19489
|
|
|
18655
19490
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18656
|
-
import { jsx as
|
|
19491
|
+
import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
18657
19492
|
var AVATAR_SIZE = 28;
|
|
18658
19493
|
var AVATAR_GUTTER = 36;
|
|
18659
19494
|
function TeamAvatar({ tint }) {
|
|
18660
|
-
return /* @__PURE__ */
|
|
19495
|
+
return /* @__PURE__ */ jsx56(View42, { style: [styles43.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ jsx56(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
|
|
18661
19496
|
}
|
|
18662
19497
|
function ChatBubbleImpl({
|
|
18663
19498
|
message,
|
|
@@ -18684,28 +19519,28 @@ function ChatBubbleImpl({
|
|
|
18684
19519
|
borderBottomRightRadius: BUBBLE_RADIUS,
|
|
18685
19520
|
borderBottomLeftRadius: tailRadius
|
|
18686
19521
|
};
|
|
18687
|
-
const bubble = /* @__PURE__ */
|
|
18688
|
-
!isPrincipal && isFirstInGroup ? /* @__PURE__ */
|
|
18689
|
-
message.body ? /* @__PURE__ */
|
|
18690
|
-
message.documents && message.documents.length > 0 ? /* @__PURE__ */
|
|
19522
|
+
const bubble = /* @__PURE__ */ jsxs35(View42, { style: [styles43.bubble, bubbleStyle], children: [
|
|
19523
|
+
!isPrincipal && isFirstInGroup ? /* @__PURE__ */ jsx56(Text33, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
|
|
19524
|
+
message.body ? /* @__PURE__ */ jsx56(Text33, { style: [styles43.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
|
|
19525
|
+
message.documents && message.documents.length > 0 ? /* @__PURE__ */ jsx56(View42, { style: styles43.attachments, children: message.documents.map((doc) => /* @__PURE__ */ jsx56(AttachmentCard, { doc }, doc.uuid)) }) : null
|
|
18691
19526
|
] });
|
|
18692
|
-
return /* @__PURE__ */
|
|
18693
|
-
|
|
19527
|
+
return /* @__PURE__ */ jsxs35(
|
|
19528
|
+
View42,
|
|
18694
19529
|
{
|
|
18695
19530
|
style: [
|
|
18696
|
-
|
|
18697
|
-
isPrincipal ?
|
|
19531
|
+
styles43.row,
|
|
19532
|
+
isPrincipal ? styles43.rowRight : styles43.rowLeft,
|
|
18698
19533
|
{ marginTop: isFirstInGroup ? spacing.md : 2 }
|
|
18699
19534
|
],
|
|
18700
19535
|
children: [
|
|
18701
|
-
!isPrincipal ? /* @__PURE__ */
|
|
18702
|
-
/* @__PURE__ */
|
|
19536
|
+
!isPrincipal ? /* @__PURE__ */ jsx56(View42, { style: styles43.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ jsx56(TeamAvatar, { tint: colors.primary }) : null }) : null,
|
|
19537
|
+
/* @__PURE__ */ jsxs35(View42, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
|
|
18703
19538
|
bubble,
|
|
18704
|
-
isLastInGroup ? /* @__PURE__ */
|
|
18705
|
-
|
|
19539
|
+
isLastInGroup ? /* @__PURE__ */ jsx56(
|
|
19540
|
+
Text33,
|
|
18706
19541
|
{
|
|
18707
19542
|
style: [
|
|
18708
|
-
|
|
19543
|
+
styles43.timestamp,
|
|
18709
19544
|
{ color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
|
|
18710
19545
|
],
|
|
18711
19546
|
children: formatMessageTime(timestamp)
|
|
@@ -18716,8 +19551,8 @@ function ChatBubbleImpl({
|
|
|
18716
19551
|
}
|
|
18717
19552
|
);
|
|
18718
19553
|
}
|
|
18719
|
-
var ChatBubble =
|
|
18720
|
-
var
|
|
19554
|
+
var ChatBubble = React22.memo(ChatBubbleImpl);
|
|
19555
|
+
var styles43 = StyleSheet44.create({
|
|
18721
19556
|
row: {
|
|
18722
19557
|
flexDirection: "row",
|
|
18723
19558
|
paddingHorizontal: spacing.md,
|
|
@@ -18777,9 +19612,9 @@ var styles41 = StyleSheet42.create({
|
|
|
18777
19612
|
});
|
|
18778
19613
|
|
|
18779
19614
|
// src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
|
|
18780
|
-
import { View as
|
|
18781
|
-
import { useTranslation as
|
|
18782
|
-
import { jsx as
|
|
19615
|
+
import { View as View43, Text as Text34, TouchableOpacity as TouchableOpacity17, StyleSheet as StyleSheet45 } from "react-native";
|
|
19616
|
+
import { useTranslation as useTranslation23 } from "react-i18next";
|
|
19617
|
+
import { jsx as jsx57, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
18783
19618
|
var STATUS_BADGE_MAP = {
|
|
18784
19619
|
pending: "warning",
|
|
18785
19620
|
under_review: "info",
|
|
@@ -18799,20 +19634,20 @@ function humanize(value) {
|
|
|
18799
19634
|
}
|
|
18800
19635
|
function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
|
|
18801
19636
|
var _a3;
|
|
18802
|
-
const { t } =
|
|
19637
|
+
const { t } = useTranslation23();
|
|
18803
19638
|
const { colors } = useTheme();
|
|
18804
19639
|
const meta = message.document_request_metadata;
|
|
18805
19640
|
if (!meta) return null;
|
|
18806
19641
|
const status = meta.document_request_status;
|
|
18807
19642
|
const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
|
|
18808
19643
|
const requestEventUuid = meta.document_request_uuid;
|
|
18809
|
-
return /* @__PURE__ */
|
|
18810
|
-
/* @__PURE__ */
|
|
18811
|
-
/* @__PURE__ */
|
|
18812
|
-
/* @__PURE__ */
|
|
18813
|
-
/* @__PURE__ */
|
|
19644
|
+
return /* @__PURE__ */ jsxs36(View43, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
|
|
19645
|
+
/* @__PURE__ */ jsxs36(View43, { style: styles44.header, children: [
|
|
19646
|
+
/* @__PURE__ */ jsxs36(View43, { style: styles44.titleRow, children: [
|
|
19647
|
+
/* @__PURE__ */ jsx57(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
|
|
19648
|
+
/* @__PURE__ */ jsx57(Text34, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
|
|
18814
19649
|
] }),
|
|
18815
|
-
/* @__PURE__ */
|
|
19650
|
+
/* @__PURE__ */ jsx57(
|
|
18816
19651
|
PCBadge,
|
|
18817
19652
|
{
|
|
18818
19653
|
status: STATUS_BADGE_MAP[status] || "info",
|
|
@@ -18820,30 +19655,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
|
|
|
18820
19655
|
}
|
|
18821
19656
|
)
|
|
18822
19657
|
] }),
|
|
18823
|
-
meta.accepted_document ? /* @__PURE__ */
|
|
19658
|
+
meta.accepted_document ? /* @__PURE__ */ jsx57(Text34, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
|
|
18824
19659
|
accepted: meta.accepted_document,
|
|
18825
19660
|
defaultValue: `Accepted: ${meta.accepted_document}`
|
|
18826
19661
|
}) }) : null,
|
|
18827
|
-
meta.rejection_reason ? /* @__PURE__ */
|
|
18828
|
-
/* @__PURE__ */
|
|
19662
|
+
meta.rejection_reason ? /* @__PURE__ */ jsxs36(View43, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
|
|
19663
|
+
/* @__PURE__ */ jsxs36(Text34, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
|
|
18829
19664
|
t("rejectionReasonLabel") || "Rejection reason",
|
|
18830
19665
|
":"
|
|
18831
19666
|
] }),
|
|
18832
|
-
/* @__PURE__ */
|
|
19667
|
+
/* @__PURE__ */ jsx57(Text34, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
|
|
18833
19668
|
] }) : null,
|
|
18834
|
-
canUpload && requestEventUuid ? /* @__PURE__ */
|
|
18835
|
-
|
|
19669
|
+
canUpload && requestEventUuid ? /* @__PURE__ */ jsx57(
|
|
19670
|
+
TouchableOpacity17,
|
|
18836
19671
|
{
|
|
18837
|
-
style: [
|
|
19672
|
+
style: [styles44.uploadButton, { backgroundColor: colors.primary }],
|
|
18838
19673
|
onPress: () => onUpload(requestEventUuid),
|
|
18839
19674
|
disabled: isSubmitting,
|
|
18840
19675
|
activeOpacity: 0.7,
|
|
18841
|
-
children: /* @__PURE__ */
|
|
19676
|
+
children: /* @__PURE__ */ jsx57(Text34, { style: [styles44.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
|
|
18842
19677
|
}
|
|
18843
19678
|
) : null
|
|
18844
19679
|
] });
|
|
18845
19680
|
}
|
|
18846
|
-
var
|
|
19681
|
+
var styles44 = StyleSheet45.create({
|
|
18847
19682
|
container: {
|
|
18848
19683
|
borderWidth: 1.5,
|
|
18849
19684
|
borderStyle: "dashed",
|
|
@@ -18896,20 +19731,20 @@ var styles42 = StyleSheet43.create({
|
|
|
18896
19731
|
});
|
|
18897
19732
|
|
|
18898
19733
|
// src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
|
|
18899
|
-
import { StyleSheet as
|
|
18900
|
-
import { jsx as
|
|
19734
|
+
import { StyleSheet as StyleSheet46, Text as Text35, View as View44 } from "react-native";
|
|
19735
|
+
import { jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
18901
19736
|
function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
|
|
18902
19737
|
const { colors } = useTheme();
|
|
18903
|
-
return /* @__PURE__ */
|
|
18904
|
-
/* @__PURE__ */
|
|
18905
|
-
/* @__PURE__ */
|
|
18906
|
-
/* @__PURE__ */
|
|
18907
|
-
subText ? /* @__PURE__ */
|
|
19738
|
+
return /* @__PURE__ */ jsxs37(View44, { style: [styles45.container, { backgroundColor: bgColor }], children: [
|
|
19739
|
+
/* @__PURE__ */ jsx58(View44, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
|
|
19740
|
+
/* @__PURE__ */ jsxs37(View44, { style: styles45.textContainer, children: [
|
|
19741
|
+
/* @__PURE__ */ jsx58(Text35, { style: [styles45.text, { color }], children: text }),
|
|
19742
|
+
subText ? /* @__PURE__ */ jsx58(Text35, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
|
|
18908
19743
|
] }),
|
|
18909
|
-
/* @__PURE__ */
|
|
19744
|
+
/* @__PURE__ */ jsx58(Text35, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
|
|
18910
19745
|
] });
|
|
18911
19746
|
}
|
|
18912
|
-
var
|
|
19747
|
+
var styles45 = StyleSheet46.create({
|
|
18913
19748
|
container: {
|
|
18914
19749
|
flexDirection: "row",
|
|
18915
19750
|
alignItems: "center",
|
|
@@ -18948,10 +19783,10 @@ var styles43 = StyleSheet44.create({
|
|
|
18948
19783
|
});
|
|
18949
19784
|
|
|
18950
19785
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18951
|
-
import { Fragment as Fragment12, jsx as
|
|
18952
|
-
var CheckIcon = ({ color }) => /* @__PURE__ */
|
|
18953
|
-
var XIcon = ({ color }) => /* @__PURE__ */
|
|
18954
|
-
var RefreshIcon = ({ color }) => /* @__PURE__ */
|
|
19786
|
+
import { Fragment as Fragment12, jsx as jsx59, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
19787
|
+
var CheckIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
|
|
19788
|
+
var XIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
|
|
19789
|
+
var RefreshIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
|
|
18955
19790
|
function MessageItemImpl({
|
|
18956
19791
|
message,
|
|
18957
19792
|
onUploadForRequest,
|
|
@@ -18961,14 +19796,14 @@ function MessageItemImpl({
|
|
|
18961
19796
|
isLastInGroup = true
|
|
18962
19797
|
}) {
|
|
18963
19798
|
var _a3, _b;
|
|
18964
|
-
const { t } =
|
|
19799
|
+
const { t } = useTranslation24();
|
|
18965
19800
|
const isPrincipal = message.sender_role === "data_principal";
|
|
18966
19801
|
const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
|
|
18967
19802
|
switch (message.message_type) {
|
|
18968
19803
|
case "message_sent":
|
|
18969
19804
|
case "document_submitted":
|
|
18970
19805
|
case "document_replaced":
|
|
18971
|
-
return /* @__PURE__ */
|
|
19806
|
+
return /* @__PURE__ */ jsx59(
|
|
18972
19807
|
ChatBubble,
|
|
18973
19808
|
{
|
|
18974
19809
|
message,
|
|
@@ -18980,8 +19815,8 @@ function MessageItemImpl({
|
|
|
18980
19815
|
}
|
|
18981
19816
|
);
|
|
18982
19817
|
case "document_requested":
|
|
18983
|
-
return /* @__PURE__ */
|
|
18984
|
-
/* @__PURE__ */
|
|
19818
|
+
return /* @__PURE__ */ jsxs38(Fragment12, { children: [
|
|
19819
|
+
/* @__PURE__ */ jsx59(
|
|
18985
19820
|
ChatBubble,
|
|
18986
19821
|
{
|
|
18987
19822
|
message,
|
|
@@ -18992,7 +19827,7 @@ function MessageItemImpl({
|
|
|
18992
19827
|
isLastInGroup
|
|
18993
19828
|
}
|
|
18994
19829
|
),
|
|
18995
|
-
/* @__PURE__ */
|
|
19830
|
+
/* @__PURE__ */ jsx59(
|
|
18996
19831
|
DocumentRequestCard,
|
|
18997
19832
|
{
|
|
18998
19833
|
message,
|
|
@@ -19003,10 +19838,10 @@ function MessageItemImpl({
|
|
|
19003
19838
|
)
|
|
19004
19839
|
] });
|
|
19005
19840
|
case "document_approved":
|
|
19006
|
-
return /* @__PURE__ */
|
|
19841
|
+
return /* @__PURE__ */ jsx59(
|
|
19007
19842
|
StatusEvent,
|
|
19008
19843
|
{
|
|
19009
|
-
icon: /* @__PURE__ */
|
|
19844
|
+
icon: /* @__PURE__ */ jsx59(CheckIcon, { color: "#059669" }),
|
|
19010
19845
|
color: "#059669",
|
|
19011
19846
|
bgColor: "rgba(16, 185, 129, 0.08)",
|
|
19012
19847
|
borderColor: "rgba(16, 185, 129, 0.2)",
|
|
@@ -19015,10 +19850,10 @@ function MessageItemImpl({
|
|
|
19015
19850
|
}
|
|
19016
19851
|
);
|
|
19017
19852
|
case "document_rejected":
|
|
19018
|
-
return /* @__PURE__ */
|
|
19853
|
+
return /* @__PURE__ */ jsx59(
|
|
19019
19854
|
StatusEvent,
|
|
19020
19855
|
{
|
|
19021
|
-
icon: /* @__PURE__ */
|
|
19856
|
+
icon: /* @__PURE__ */ jsx59(XIcon, { color: "#DC2626" }),
|
|
19022
19857
|
color: "#DC2626",
|
|
19023
19858
|
bgColor: "rgba(220, 38, 38, 0.08)",
|
|
19024
19859
|
borderColor: "rgba(220, 38, 38, 0.2)",
|
|
@@ -19028,10 +19863,10 @@ function MessageItemImpl({
|
|
|
19028
19863
|
}
|
|
19029
19864
|
);
|
|
19030
19865
|
case "document_replacement_requested":
|
|
19031
|
-
return /* @__PURE__ */
|
|
19866
|
+
return /* @__PURE__ */ jsx59(
|
|
19032
19867
|
StatusEvent,
|
|
19033
19868
|
{
|
|
19034
|
-
icon: /* @__PURE__ */
|
|
19869
|
+
icon: /* @__PURE__ */ jsx59(RefreshIcon, { color: "#D97706" }),
|
|
19035
19870
|
color: "#D97706",
|
|
19036
19871
|
bgColor: "rgba(245, 158, 11, 0.08)",
|
|
19037
19872
|
borderColor: "rgba(245, 158, 11, 0.2)",
|
|
@@ -19041,7 +19876,7 @@ function MessageItemImpl({
|
|
|
19041
19876
|
}
|
|
19042
19877
|
);
|
|
19043
19878
|
default:
|
|
19044
|
-
return /* @__PURE__ */
|
|
19879
|
+
return /* @__PURE__ */ jsx59(
|
|
19045
19880
|
ChatBubble,
|
|
19046
19881
|
{
|
|
19047
19882
|
message,
|
|
@@ -19054,22 +19889,22 @@ function MessageItemImpl({
|
|
|
19054
19889
|
);
|
|
19055
19890
|
}
|
|
19056
19891
|
}
|
|
19057
|
-
var MessageItem =
|
|
19892
|
+
var MessageItem = React23.memo(MessageItemImpl);
|
|
19058
19893
|
|
|
19059
19894
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
|
|
19060
|
-
import { useEffect as
|
|
19895
|
+
import { useEffect as useEffect17, useRef as useRef9 } from "react";
|
|
19061
19896
|
import {
|
|
19062
19897
|
ActivityIndicator as ActivityIndicator6,
|
|
19063
19898
|
Animated as Animated12,
|
|
19064
19899
|
Easing as Easing3,
|
|
19065
|
-
StyleSheet as
|
|
19066
|
-
Text as
|
|
19900
|
+
StyleSheet as StyleSheet47,
|
|
19901
|
+
Text as Text36,
|
|
19067
19902
|
TextInput as TextInput3,
|
|
19068
|
-
TouchableOpacity as
|
|
19069
|
-
View as
|
|
19903
|
+
TouchableOpacity as TouchableOpacity18,
|
|
19904
|
+
View as View45
|
|
19070
19905
|
} from "react-native";
|
|
19071
|
-
import { useTranslation as
|
|
19072
|
-
import { jsx as
|
|
19906
|
+
import { useTranslation as useTranslation25 } from "react-i18next";
|
|
19907
|
+
import { jsx as jsx60, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
19073
19908
|
function MessageComposer({
|
|
19074
19909
|
messageText,
|
|
19075
19910
|
onMessageTextChange,
|
|
@@ -19081,11 +19916,11 @@ function MessageComposer({
|
|
|
19081
19916
|
isUploading,
|
|
19082
19917
|
isCaseFinalized = false
|
|
19083
19918
|
}) {
|
|
19084
|
-
const { t } =
|
|
19919
|
+
const { t } = useTranslation25();
|
|
19085
19920
|
const { colors } = useTheme();
|
|
19086
19921
|
const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
|
|
19087
19922
|
const activate = useRef9(new Animated12.Value(canSend ? 1 : 0)).current;
|
|
19088
|
-
|
|
19923
|
+
useEffect17(() => {
|
|
19089
19924
|
Animated12.timing(activate, {
|
|
19090
19925
|
toValue: canSend ? 1 : 0,
|
|
19091
19926
|
duration: 180,
|
|
@@ -19105,7 +19940,7 @@ function MessageComposer({
|
|
|
19105
19940
|
Animated12.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
|
|
19106
19941
|
};
|
|
19107
19942
|
const pillIn = useRef9(new Animated12.Value(0)).current;
|
|
19108
|
-
|
|
19943
|
+
useEffect17(() => {
|
|
19109
19944
|
Animated12.timing(pillIn, {
|
|
19110
19945
|
toValue: pendingUpload ? 1 : 0,
|
|
19111
19946
|
duration: 220,
|
|
@@ -19115,12 +19950,12 @@ function MessageComposer({
|
|
|
19115
19950
|
}, [pendingUpload, pillIn]);
|
|
19116
19951
|
const pillOpacity = pillIn;
|
|
19117
19952
|
const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
|
|
19118
|
-
return /* @__PURE__ */
|
|
19119
|
-
pendingUpload && /* @__PURE__ */
|
|
19953
|
+
return /* @__PURE__ */ jsxs39(View45, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
|
|
19954
|
+
pendingUpload && /* @__PURE__ */ jsxs39(
|
|
19120
19955
|
Animated12.View,
|
|
19121
19956
|
{
|
|
19122
19957
|
style: [
|
|
19123
|
-
|
|
19958
|
+
styles46.uploadPill,
|
|
19124
19959
|
{
|
|
19125
19960
|
backgroundColor: colors.primarySoft,
|
|
19126
19961
|
opacity: pillOpacity,
|
|
@@ -19128,34 +19963,34 @@ function MessageComposer({
|
|
|
19128
19963
|
}
|
|
19129
19964
|
],
|
|
19130
19965
|
children: [
|
|
19131
|
-
/* @__PURE__ */
|
|
19132
|
-
/* @__PURE__ */
|
|
19966
|
+
/* @__PURE__ */ jsx60(Icon, { name: "file", size: 14, color: colors.primary }),
|
|
19967
|
+
/* @__PURE__ */ jsxs39(Text36, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
|
|
19133
19968
|
pendingUpload.file_name,
|
|
19134
19969
|
" (",
|
|
19135
19970
|
formatFileSize(pendingUpload.file_size),
|
|
19136
19971
|
")"
|
|
19137
19972
|
] }),
|
|
19138
|
-
/* @__PURE__ */
|
|
19973
|
+
/* @__PURE__ */ jsx60(TouchableOpacity18, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ jsx60(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
|
|
19139
19974
|
]
|
|
19140
19975
|
}
|
|
19141
19976
|
),
|
|
19142
|
-
/* @__PURE__ */
|
|
19143
|
-
/* @__PURE__ */
|
|
19144
|
-
|
|
19977
|
+
/* @__PURE__ */ jsxs39(View45, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
|
|
19978
|
+
/* @__PURE__ */ jsx60(
|
|
19979
|
+
TouchableOpacity18,
|
|
19145
19980
|
{
|
|
19146
|
-
style:
|
|
19981
|
+
style: styles46.attachButton,
|
|
19147
19982
|
onPress: onAttachClick,
|
|
19148
19983
|
disabled: isUploading || isCaseFinalized,
|
|
19149
19984
|
activeOpacity: 0.6,
|
|
19150
19985
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
19151
19986
|
accessibilityLabel: t("uploadFile") || "Attach file",
|
|
19152
|
-
children: isUploading ? /* @__PURE__ */
|
|
19987
|
+
children: isUploading ? /* @__PURE__ */ jsx60(ActivityIndicator6, { size: "small", color: colors.primary }) : /* @__PURE__ */ jsx60(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
|
|
19153
19988
|
}
|
|
19154
19989
|
),
|
|
19155
|
-
/* @__PURE__ */
|
|
19990
|
+
/* @__PURE__ */ jsx60(
|
|
19156
19991
|
TextInput3,
|
|
19157
19992
|
{
|
|
19158
|
-
style: [
|
|
19993
|
+
style: [styles46.input, { color: colors.text }],
|
|
19159
19994
|
value: messageText,
|
|
19160
19995
|
onChangeText: onMessageTextChange,
|
|
19161
19996
|
placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
|
|
@@ -19165,8 +20000,8 @@ function MessageComposer({
|
|
|
19165
20000
|
editable: !isSending && !isCaseFinalized
|
|
19166
20001
|
}
|
|
19167
20002
|
),
|
|
19168
|
-
/* @__PURE__ */
|
|
19169
|
-
|
|
20003
|
+
/* @__PURE__ */ jsx60(Animated12.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ jsx60(
|
|
20004
|
+
TouchableOpacity18,
|
|
19170
20005
|
{
|
|
19171
20006
|
onPress: onSend,
|
|
19172
20007
|
onPressIn: handlePressIn,
|
|
@@ -19174,15 +20009,15 @@ function MessageComposer({
|
|
|
19174
20009
|
disabled: !canSend,
|
|
19175
20010
|
activeOpacity: 0.85,
|
|
19176
20011
|
accessibilityLabel: t("send") || "Send",
|
|
19177
|
-
children: /* @__PURE__ */
|
|
20012
|
+
children: /* @__PURE__ */ jsx60(Animated12.View, { style: [styles46.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ jsx60(ActivityIndicator6, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ jsx60(View45, { style: styles46.sendIcon, children: /* @__PURE__ */ jsx60(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
|
|
19178
20013
|
}
|
|
19179
20014
|
) })
|
|
19180
20015
|
] })
|
|
19181
20016
|
] });
|
|
19182
20017
|
}
|
|
19183
|
-
var
|
|
20018
|
+
var styles46 = StyleSheet47.create({
|
|
19184
20019
|
container: {
|
|
19185
|
-
borderTopWidth:
|
|
20020
|
+
borderTopWidth: StyleSheet47.hairlineWidth,
|
|
19186
20021
|
paddingHorizontal: spacing.md,
|
|
19187
20022
|
paddingVertical: spacing.sm
|
|
19188
20023
|
},
|
|
@@ -19205,7 +20040,7 @@ var styles44 = StyleSheet45.create({
|
|
|
19205
20040
|
pill: {
|
|
19206
20041
|
flexDirection: "row",
|
|
19207
20042
|
alignItems: "center",
|
|
19208
|
-
borderWidth:
|
|
20043
|
+
borderWidth: StyleSheet47.hairlineWidth,
|
|
19209
20044
|
borderRadius: radii.xxl + 4,
|
|
19210
20045
|
paddingHorizontal: spacing.xs + 2,
|
|
19211
20046
|
paddingVertical: spacing.xs,
|
|
@@ -19244,7 +20079,7 @@ var styles44 = StyleSheet45.create({
|
|
|
19244
20079
|
});
|
|
19245
20080
|
|
|
19246
20081
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
19247
|
-
import { Fragment as Fragment13, jsx as
|
|
20082
|
+
import { Fragment as Fragment13, jsx as jsx61, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
19248
20083
|
var STREAK_GAP_MS = 5 * 60 * 1e3;
|
|
19249
20084
|
function isStreakBoundary(a, b) {
|
|
19250
20085
|
if (!a || !b) return true;
|
|
@@ -19274,7 +20109,7 @@ function sameDay(a, b) {
|
|
|
19274
20109
|
}
|
|
19275
20110
|
var MESSAGE_POLL_INTERVAL = 3e4;
|
|
19276
20111
|
function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
19277
|
-
const { t } =
|
|
20112
|
+
const { t } = useTranslation26();
|
|
19278
20113
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19279
20114
|
const { consentClient } = useBaseUrl();
|
|
19280
20115
|
const { colors } = useTheme();
|
|
@@ -19290,13 +20125,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19290
20125
|
caseUuid,
|
|
19291
20126
|
authContext
|
|
19292
20127
|
);
|
|
19293
|
-
const [messageText, setMessageText] =
|
|
19294
|
-
const [pendingUpload, setPendingUpload] =
|
|
19295
|
-
const [isSending, setIsSending] =
|
|
19296
|
-
const [isUploading, setIsUploading] =
|
|
19297
|
-
const [isSubmittingForRequest, setIsSubmittingForRequest] =
|
|
20128
|
+
const [messageText, setMessageText] = useState23("");
|
|
20129
|
+
const [pendingUpload, setPendingUpload] = useState23(null);
|
|
20130
|
+
const [isSending, setIsSending] = useState23(false);
|
|
20131
|
+
const [isUploading, setIsUploading] = useState23(false);
|
|
20132
|
+
const [isSubmittingForRequest, setIsSubmittingForRequest] = useState23(false);
|
|
19298
20133
|
const flatListRef = useRef10(null);
|
|
19299
|
-
|
|
20134
|
+
useEffect18(() => {
|
|
19300
20135
|
if (messages && messages.length > 0) {
|
|
19301
20136
|
setTimeout(() => {
|
|
19302
20137
|
var _a3;
|
|
@@ -19306,14 +20141,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19306
20141
|
}, [messages == null ? void 0 : messages.length]);
|
|
19307
20142
|
const refetchRef = useRef10(refetch);
|
|
19308
20143
|
refetchRef.current = refetch;
|
|
19309
|
-
|
|
20144
|
+
const authContextRef = useRef10(authContext);
|
|
20145
|
+
authContextRef.current = authContext;
|
|
20146
|
+
useEffect18(() => {
|
|
19310
20147
|
if (isCaseFinalized) return;
|
|
19311
20148
|
const id = setInterval(() => {
|
|
20149
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
19312
20150
|
refetchRef.current();
|
|
19313
20151
|
}, MESSAGE_POLL_INTERVAL);
|
|
19314
20152
|
return () => clearInterval(id);
|
|
19315
20153
|
}, [isCaseFinalized]);
|
|
19316
|
-
const handleSend =
|
|
20154
|
+
const handleSend = useCallback12(async () => {
|
|
19317
20155
|
if (isCaseFinalized) return;
|
|
19318
20156
|
if (!messageText.trim() && !pendingUpload) return;
|
|
19319
20157
|
if (!organizationId || !workspaceId) return;
|
|
@@ -19338,7 +20176,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19338
20176
|
setIsSending(false);
|
|
19339
20177
|
}
|
|
19340
20178
|
}, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
|
|
19341
|
-
const handleAttach =
|
|
20179
|
+
const handleAttach = useCallback12(async () => {
|
|
19342
20180
|
if (isCaseFinalized) return;
|
|
19343
20181
|
if (!organizationId || !workspaceId) return;
|
|
19344
20182
|
try {
|
|
@@ -19373,7 +20211,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19373
20211
|
setIsUploading(false);
|
|
19374
20212
|
}
|
|
19375
20213
|
}, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
|
|
19376
|
-
const handleUploadForRequest =
|
|
20214
|
+
const handleUploadForRequest = useCallback12((_requestEventUuid) => {
|
|
19377
20215
|
handleAttach();
|
|
19378
20216
|
}, [handleAttach]);
|
|
19379
20217
|
const messagesList = useMemo19(() => {
|
|
@@ -19385,17 +20223,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19385
20223
|
});
|
|
19386
20224
|
return list;
|
|
19387
20225
|
}, [messages]);
|
|
19388
|
-
const keyExtractor =
|
|
19389
|
-
const renderMessage =
|
|
20226
|
+
const keyExtractor = useCallback12((item) => item.uuid, []);
|
|
20227
|
+
const renderMessage = useCallback12(
|
|
19390
20228
|
({ item, index }) => {
|
|
19391
20229
|
const prev = index > 0 ? messagesList[index - 1] : void 0;
|
|
19392
20230
|
const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
|
|
19393
20231
|
const isFirstInGroup = isStreakBoundary(prev, item);
|
|
19394
20232
|
const isLastInGroup = isStreakBoundary(item, next);
|
|
19395
20233
|
const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
|
|
19396
|
-
return /* @__PURE__ */
|
|
19397
|
-
dateSeparator ? /* @__PURE__ */
|
|
19398
|
-
/* @__PURE__ */
|
|
20234
|
+
return /* @__PURE__ */ jsxs40(Fragment13, { children: [
|
|
20235
|
+
dateSeparator ? /* @__PURE__ */ jsx61(View46, { style: styles47.daySeparator, children: /* @__PURE__ */ jsx61(View46, { style: [styles47.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ jsx61(Text37, { style: [styles47.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
|
|
20236
|
+
/* @__PURE__ */ jsx61(
|
|
19399
20237
|
MessageItem,
|
|
19400
20238
|
{
|
|
19401
20239
|
message: item,
|
|
@@ -19411,32 +20249,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19411
20249
|
[messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
|
|
19412
20250
|
);
|
|
19413
20251
|
if (isLoading) {
|
|
19414
|
-
return /* @__PURE__ */
|
|
20252
|
+
return /* @__PURE__ */ jsx61(View46, { style: styles47.centered, children: /* @__PURE__ */ jsx61(ActivityIndicator7, { size: "large", color: colors.primary }) });
|
|
19415
20253
|
}
|
|
19416
20254
|
if (error) {
|
|
19417
|
-
return /* @__PURE__ */
|
|
20255
|
+
return /* @__PURE__ */ jsx61(View46, { style: styles47.centered, children: /* @__PURE__ */ jsx61(Text37, { style: [styles47.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
|
|
19418
20256
|
}
|
|
19419
|
-
return /* @__PURE__ */
|
|
19420
|
-
/* @__PURE__ */
|
|
19421
|
-
/* @__PURE__ */
|
|
19422
|
-
/* @__PURE__ */
|
|
20257
|
+
return /* @__PURE__ */ jsxs40(View46, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
20258
|
+
/* @__PURE__ */ jsxs40(View46, { style: styles47.secureRow, children: [
|
|
20259
|
+
/* @__PURE__ */ jsx61(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
|
|
20260
|
+
/* @__PURE__ */ jsx61(Text37, { 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"}` })
|
|
19423
20261
|
] }),
|
|
19424
|
-
/* @__PURE__ */
|
|
20262
|
+
/* @__PURE__ */ jsx61(
|
|
19425
20263
|
FlatList2,
|
|
19426
20264
|
{
|
|
19427
20265
|
ref: flatListRef,
|
|
19428
|
-
style:
|
|
20266
|
+
style: styles47.list,
|
|
19429
20267
|
data: messagesList,
|
|
19430
20268
|
keyExtractor,
|
|
19431
20269
|
renderItem: renderMessage,
|
|
19432
20270
|
contentContainerStyle: [
|
|
19433
|
-
|
|
19434
|
-
messagesList.length ?
|
|
20271
|
+
styles47.messagesList,
|
|
20272
|
+
messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
|
|
19435
20273
|
],
|
|
19436
|
-
ListEmptyComponent: /* @__PURE__ */
|
|
19437
|
-
/* @__PURE__ */
|
|
19438
|
-
/* @__PURE__ */
|
|
19439
|
-
/* @__PURE__ */
|
|
20274
|
+
ListEmptyComponent: /* @__PURE__ */ jsxs40(View46, { style: styles47.emptyContainer, children: [
|
|
20275
|
+
/* @__PURE__ */ jsx61(View46, { style: [styles47.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ jsx61(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
|
|
20276
|
+
/* @__PURE__ */ jsx61(Text37, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
|
|
20277
|
+
/* @__PURE__ */ jsx61(Text37, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
|
|
19440
20278
|
] }),
|
|
19441
20279
|
onContentSizeChange: () => {
|
|
19442
20280
|
var _a3;
|
|
@@ -19448,7 +20286,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19448
20286
|
removeClippedSubviews: true
|
|
19449
20287
|
}
|
|
19450
20288
|
),
|
|
19451
|
-
/* @__PURE__ */
|
|
20289
|
+
/* @__PURE__ */ jsx61(
|
|
19452
20290
|
MessageComposer,
|
|
19453
20291
|
{
|
|
19454
20292
|
messageText,
|
|
@@ -19464,7 +20302,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19464
20302
|
)
|
|
19465
20303
|
] });
|
|
19466
20304
|
}
|
|
19467
|
-
var
|
|
20305
|
+
var styles47 = StyleSheet48.create({
|
|
19468
20306
|
container: {
|
|
19469
20307
|
flex: 1
|
|
19470
20308
|
},
|
|
@@ -19547,16 +20385,16 @@ var styles45 = StyleSheet46.create({
|
|
|
19547
20385
|
});
|
|
19548
20386
|
|
|
19549
20387
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
19550
|
-
import { jsx as
|
|
20388
|
+
import { jsx as jsx62, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
19551
20389
|
function CaseDetailsPage() {
|
|
19552
20390
|
var _a3, _b;
|
|
19553
|
-
const { t } =
|
|
20391
|
+
const { t } = useTranslation27();
|
|
19554
20392
|
const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
|
|
19555
20393
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19556
20394
|
const { colors } = useTheme();
|
|
19557
20395
|
const { keyboardOffset } = usePrivacyCenterInsets();
|
|
19558
20396
|
const requestTypeLabels = useRequestTypeLabels();
|
|
19559
|
-
const [activeTab, setActiveTab] =
|
|
20397
|
+
const [activeTab, setActiveTab] = useState24("request-details");
|
|
19560
20398
|
const authContext = useMemo20(() => ({
|
|
19561
20399
|
accessToken,
|
|
19562
20400
|
refreshToken,
|
|
@@ -19570,7 +20408,7 @@ function CaseDetailsPage() {
|
|
|
19570
20408
|
email != null ? email : void 0,
|
|
19571
20409
|
authContext
|
|
19572
20410
|
);
|
|
19573
|
-
|
|
20411
|
+
useEffect19(() => {
|
|
19574
20412
|
if (!cases) return;
|
|
19575
20413
|
if (cases.length === 0) {
|
|
19576
20414
|
navigateTo("form");
|
|
@@ -19584,33 +20422,33 @@ function CaseDetailsPage() {
|
|
|
19584
20422
|
navigateTo("form");
|
|
19585
20423
|
}
|
|
19586
20424
|
}, [cases, targetUuid, setSelectedCase, navigateTo]);
|
|
19587
|
-
|
|
20425
|
+
useEffect19(() => {
|
|
19588
20426
|
if (!selectedCase && !targetUuid && !isLoading) {
|
|
19589
20427
|
navigateTo("form");
|
|
19590
20428
|
}
|
|
19591
20429
|
}, [selectedCase, targetUuid, isLoading, navigateTo]);
|
|
19592
20430
|
if (!selectedCase) {
|
|
19593
|
-
return /* @__PURE__ */
|
|
20431
|
+
return /* @__PURE__ */ jsx62(View47, { style: styles48.centered, children: isLoading ? /* @__PURE__ */ jsx62(ActivityIndicator8, { size: "large", color: colors.primary }) : /* @__PURE__ */ jsx62(Text38, { style: [styles48.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
|
|
19594
20432
|
}
|
|
19595
20433
|
const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
|
|
19596
20434
|
const tabs = [
|
|
19597
20435
|
{ id: "request-details", label: t("requestDetails") || "Request Details" },
|
|
19598
20436
|
{ id: "messages", label: t("messages") || "Messages" }
|
|
19599
20437
|
];
|
|
19600
|
-
return /* @__PURE__ */
|
|
20438
|
+
return /* @__PURE__ */ jsxs41(
|
|
19601
20439
|
KeyboardAvoidingViewCompat,
|
|
19602
20440
|
{
|
|
19603
|
-
style: [
|
|
20441
|
+
style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
|
|
19604
20442
|
behavior: "padding",
|
|
19605
20443
|
keyboardVerticalOffset: Platform7.OS === "ios" ? keyboardOffset : 0,
|
|
19606
20444
|
children: [
|
|
19607
|
-
/* @__PURE__ */
|
|
19608
|
-
/* @__PURE__ */
|
|
19609
|
-
/* @__PURE__ */
|
|
19610
|
-
/* @__PURE__ */
|
|
19611
|
-
/* @__PURE__ */
|
|
19612
|
-
/* @__PURE__ */
|
|
19613
|
-
/* @__PURE__ */
|
|
20445
|
+
/* @__PURE__ */ jsxs41(View47, { style: styles48.headerWrap, children: [
|
|
20446
|
+
/* @__PURE__ */ jsx62(View47, { style: [styles48.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ jsxs41(View47, { style: styles48.heroInner, children: [
|
|
20447
|
+
/* @__PURE__ */ jsx62(View47, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
|
|
20448
|
+
/* @__PURE__ */ jsxs41(View47, { style: styles48.heroBody, children: [
|
|
20449
|
+
/* @__PURE__ */ jsxs41(View47, { style: styles48.heroTopRow, children: [
|
|
20450
|
+
/* @__PURE__ */ jsx62(View47, { style: [styles48.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ jsx62(Text38, { style: [styles48.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
|
|
20451
|
+
/* @__PURE__ */ jsx62(
|
|
19614
20452
|
PCBadge,
|
|
19615
20453
|
{
|
|
19616
20454
|
status: getCaseStatusVariant(selectedCase.status),
|
|
@@ -19619,10 +20457,10 @@ function CaseDetailsPage() {
|
|
|
19619
20457
|
}
|
|
19620
20458
|
)
|
|
19621
20459
|
] }),
|
|
19622
|
-
/* @__PURE__ */
|
|
20460
|
+
/* @__PURE__ */ jsx62(Text38, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
|
|
19623
20461
|
] })
|
|
19624
20462
|
] }) }),
|
|
19625
|
-
/* @__PURE__ */
|
|
20463
|
+
/* @__PURE__ */ jsx62(
|
|
19626
20464
|
Segmented,
|
|
19627
20465
|
{
|
|
19628
20466
|
options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
|
|
@@ -19631,18 +20469,18 @@ function CaseDetailsPage() {
|
|
|
19631
20469
|
}
|
|
19632
20470
|
)
|
|
19633
20471
|
] }),
|
|
19634
|
-
/* @__PURE__ */
|
|
20472
|
+
/* @__PURE__ */ jsx62(View47, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ jsx62(
|
|
19635
20473
|
RequestDetailsTab,
|
|
19636
20474
|
{
|
|
19637
20475
|
selectedCase,
|
|
19638
20476
|
requestTypeLabel
|
|
19639
20477
|
}
|
|
19640
|
-
) : /* @__PURE__ */
|
|
20478
|
+
) : /* @__PURE__ */ jsx62(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
|
|
19641
20479
|
]
|
|
19642
20480
|
}
|
|
19643
20481
|
);
|
|
19644
20482
|
}
|
|
19645
|
-
var
|
|
20483
|
+
var styles48 = StyleSheet49.create({
|
|
19646
20484
|
container: {
|
|
19647
20485
|
flex: 1
|
|
19648
20486
|
},
|
|
@@ -19707,36 +20545,36 @@ var styles46 = StyleSheet47.create({
|
|
|
19707
20545
|
});
|
|
19708
20546
|
|
|
19709
20547
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
19710
|
-
import { useCallback as
|
|
19711
|
-
import { FlatList as FlatList3, RefreshControl as RefreshControl5, StyleSheet as
|
|
19712
|
-
import { useTranslation as
|
|
20548
|
+
import { useCallback as useCallback14, useEffect as useEffect20, useMemo as useMemo23, useRef as useRef12, useState as useState25 } from "react";
|
|
20549
|
+
import { FlatList as FlatList3, RefreshControl as RefreshControl5, StyleSheet as StyleSheet54, Text as Text42, TouchableOpacity as TouchableOpacity22, View as View51 } from "react-native";
|
|
20550
|
+
import { useTranslation as useTranslation29 } from "react-i18next";
|
|
19713
20551
|
|
|
19714
20552
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19715
|
-
import { StyleSheet as
|
|
19716
|
-
import { useTranslation as
|
|
20553
|
+
import { StyleSheet as StyleSheet53, Text as Text41, TouchableOpacity as TouchableOpacity21, View as View50 } from "react-native";
|
|
20554
|
+
import { useTranslation as useTranslation28 } from "react-i18next";
|
|
19717
20555
|
|
|
19718
20556
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
|
|
19719
|
-
import { StyleSheet as
|
|
19720
|
-
import { jsx as
|
|
20557
|
+
import { StyleSheet as StyleSheet50, Text as Text39, TouchableOpacity as TouchableOpacity19 } from "react-native";
|
|
20558
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
19721
20559
|
var NotificationCTAButton = ({ cta, onPress }) => {
|
|
19722
20560
|
const { colors } = useTheme();
|
|
19723
20561
|
const tone = cta.style === "danger" ? colors.error : colors.primary;
|
|
19724
20562
|
const isPrimary = cta.style === "primary" || cta.style === "danger";
|
|
19725
|
-
return /* @__PURE__ */
|
|
19726
|
-
|
|
20563
|
+
return /* @__PURE__ */ jsx63(
|
|
20564
|
+
TouchableOpacity19,
|
|
19727
20565
|
{
|
|
19728
20566
|
onPress,
|
|
19729
20567
|
activeOpacity: 0.7,
|
|
19730
20568
|
style: [
|
|
19731
|
-
|
|
20569
|
+
styles49.button,
|
|
19732
20570
|
isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
|
|
19733
20571
|
],
|
|
19734
20572
|
accessibilityRole: "button",
|
|
19735
|
-
children: /* @__PURE__ */
|
|
20573
|
+
children: /* @__PURE__ */ jsx63(Text39, { style: [styles49.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
|
|
19736
20574
|
}
|
|
19737
20575
|
);
|
|
19738
20576
|
};
|
|
19739
|
-
var
|
|
20577
|
+
var styles49 = StyleSheet50.create({
|
|
19740
20578
|
button: {
|
|
19741
20579
|
paddingHorizontal: spacing.lg,
|
|
19742
20580
|
paddingVertical: spacing.sm,
|
|
@@ -19751,8 +20589,8 @@ var styles47 = StyleSheet48.create({
|
|
|
19751
20589
|
});
|
|
19752
20590
|
|
|
19753
20591
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
|
|
19754
|
-
import { StyleSheet as
|
|
19755
|
-
import { jsx as
|
|
20592
|
+
import { StyleSheet as StyleSheet51, View as View48 } from "react-native";
|
|
20593
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
19756
20594
|
var CATEGORY_ICON = {
|
|
19757
20595
|
guardian: "user-round",
|
|
19758
20596
|
consent: "clock",
|
|
@@ -19765,18 +20603,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
|
|
|
19765
20603
|
var _a3;
|
|
19766
20604
|
const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
|
|
19767
20605
|
const color = ICON_COLORS[category];
|
|
19768
|
-
return /* @__PURE__ */
|
|
19769
|
-
|
|
20606
|
+
return /* @__PURE__ */ jsx64(
|
|
20607
|
+
View48,
|
|
19770
20608
|
{
|
|
19771
20609
|
style: [
|
|
19772
|
-
|
|
20610
|
+
styles50.wrap,
|
|
19773
20611
|
{ width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
|
|
19774
20612
|
],
|
|
19775
|
-
children: /* @__PURE__ */
|
|
20613
|
+
children: /* @__PURE__ */ jsx64(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
|
|
19776
20614
|
}
|
|
19777
20615
|
);
|
|
19778
20616
|
};
|
|
19779
|
-
var
|
|
20617
|
+
var styles50 = StyleSheet51.create({
|
|
19780
20618
|
wrap: {
|
|
19781
20619
|
alignItems: "center",
|
|
19782
20620
|
justifyContent: "center"
|
|
@@ -19785,8 +20623,8 @@ var styles48 = StyleSheet49.create({
|
|
|
19785
20623
|
|
|
19786
20624
|
// src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
|
|
19787
20625
|
import { useMemo as useMemo21, useRef as useRef11 } from "react";
|
|
19788
|
-
import { Animated as Animated13, PanResponder as PanResponder2, StyleSheet as
|
|
19789
|
-
import { Fragment as Fragment14, jsx as
|
|
20626
|
+
import { Animated as Animated13, PanResponder as PanResponder2, StyleSheet as StyleSheet52, Text as Text40, TouchableOpacity as TouchableOpacity20, View as View49 } from "react-native";
|
|
20627
|
+
import { Fragment as Fragment14, jsx as jsx65, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
19790
20628
|
var ACTION_WIDTH = 80;
|
|
19791
20629
|
var CLAIM_THRESHOLD = 8;
|
|
19792
20630
|
var SwipeableRow = ({ actions, background, children }) => {
|
|
@@ -19825,37 +20663,37 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19825
20663
|
[maxOpen]
|
|
19826
20664
|
);
|
|
19827
20665
|
if (actions.length === 0) {
|
|
19828
|
-
return /* @__PURE__ */
|
|
20666
|
+
return /* @__PURE__ */ jsx65(Fragment14, { children });
|
|
19829
20667
|
}
|
|
19830
20668
|
const runAction = (action) => {
|
|
19831
20669
|
settle(0);
|
|
19832
20670
|
action.onPress();
|
|
19833
20671
|
};
|
|
19834
|
-
return /* @__PURE__ */
|
|
19835
|
-
/* @__PURE__ */
|
|
19836
|
-
|
|
20672
|
+
return /* @__PURE__ */ jsxs42(View49, { style: styles51.root, children: [
|
|
20673
|
+
/* @__PURE__ */ jsx65(View49, { style: styles51.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ jsxs42(
|
|
20674
|
+
TouchableOpacity20,
|
|
19837
20675
|
{
|
|
19838
|
-
style: [
|
|
20676
|
+
style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
|
|
19839
20677
|
onPress: () => runAction(action),
|
|
19840
20678
|
activeOpacity: 0.85,
|
|
19841
20679
|
accessibilityRole: "button",
|
|
19842
20680
|
accessibilityLabel: action.label,
|
|
19843
20681
|
children: [
|
|
19844
|
-
/* @__PURE__ */
|
|
19845
|
-
/* @__PURE__ */
|
|
20682
|
+
/* @__PURE__ */ jsx65(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
|
|
20683
|
+
/* @__PURE__ */ jsx65(Text40, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
|
|
19846
20684
|
]
|
|
19847
20685
|
},
|
|
19848
20686
|
action.key
|
|
19849
20687
|
)) }),
|
|
19850
|
-
/* @__PURE__ */
|
|
20688
|
+
/* @__PURE__ */ jsx65(Animated13.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
|
|
19851
20689
|
] });
|
|
19852
20690
|
};
|
|
19853
|
-
var
|
|
20691
|
+
var styles51 = StyleSheet52.create({
|
|
19854
20692
|
root: {
|
|
19855
20693
|
position: "relative"
|
|
19856
20694
|
},
|
|
19857
20695
|
actionsLayer: {
|
|
19858
|
-
...
|
|
20696
|
+
...StyleSheet52.absoluteFillObject,
|
|
19859
20697
|
flexDirection: "row",
|
|
19860
20698
|
justifyContent: "flex-end"
|
|
19861
20699
|
},
|
|
@@ -19888,10 +20726,10 @@ var formatTimeAgo = (dateString, t) => {
|
|
|
19888
20726
|
};
|
|
19889
20727
|
|
|
19890
20728
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19891
|
-
import { Fragment as Fragment15, jsx as
|
|
20729
|
+
import { Fragment as Fragment15, jsx as jsx66, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
19892
20730
|
var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
|
|
19893
20731
|
var _a3, _b;
|
|
19894
|
-
const { t } =
|
|
20732
|
+
const { t } = useTranslation28();
|
|
19895
20733
|
const { colors } = useTheme();
|
|
19896
20734
|
const isUnread = !notification.is_read;
|
|
19897
20735
|
const statusLabel = notification.status_label_display || notification.status_label;
|
|
@@ -19918,35 +20756,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
|
|
|
19918
20756
|
onPress: onAcknowledge
|
|
19919
20757
|
});
|
|
19920
20758
|
}
|
|
19921
|
-
return /* @__PURE__ */
|
|
19922
|
-
isUnread ? /* @__PURE__ */
|
|
19923
|
-
/* @__PURE__ */
|
|
19924
|
-
/* @__PURE__ */
|
|
19925
|
-
/* @__PURE__ */
|
|
19926
|
-
/* @__PURE__ */
|
|
19927
|
-
|
|
20759
|
+
return /* @__PURE__ */ jsx66(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ jsxs43(TouchableOpacity21, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles52.row, children: [
|
|
20760
|
+
isUnread ? /* @__PURE__ */ jsx66(View50, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
|
|
20761
|
+
/* @__PURE__ */ jsx66(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
|
|
20762
|
+
/* @__PURE__ */ jsxs43(View50, { style: styles52.content, children: [
|
|
20763
|
+
/* @__PURE__ */ jsxs43(View50, { style: styles52.titleRow, children: [
|
|
20764
|
+
/* @__PURE__ */ jsx66(
|
|
20765
|
+
Text41,
|
|
19928
20766
|
{
|
|
19929
|
-
style: [
|
|
20767
|
+
style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
|
|
19930
20768
|
numberOfLines: 2,
|
|
19931
20769
|
children: notification.title
|
|
19932
20770
|
}
|
|
19933
20771
|
),
|
|
19934
|
-
isUnread ? /* @__PURE__ */
|
|
20772
|
+
isUnread ? /* @__PURE__ */ jsx66(View50, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
|
|
19935
20773
|
] }),
|
|
19936
|
-
/* @__PURE__ */
|
|
19937
|
-
statusLabel ? /* @__PURE__ */
|
|
19938
|
-
/* @__PURE__ */
|
|
19939
|
-
/* @__PURE__ */
|
|
19940
|
-
/* @__PURE__ */
|
|
20774
|
+
/* @__PURE__ */ jsxs43(View50, { style: styles52.metaRow, children: [
|
|
20775
|
+
statusLabel ? /* @__PURE__ */ jsxs43(Fragment15, { children: [
|
|
20776
|
+
/* @__PURE__ */ jsx66(View50, { style: [styles52.statusDot, { backgroundColor: accent }] }),
|
|
20777
|
+
/* @__PURE__ */ jsx66(Text41, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
|
|
20778
|
+
/* @__PURE__ */ jsx66(Text41, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
|
|
19941
20779
|
] }) : null,
|
|
19942
|
-
/* @__PURE__ */
|
|
20780
|
+
/* @__PURE__ */ jsx66(Text41, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
|
|
19943
20781
|
] }),
|
|
19944
|
-
showAcknowledge && ackCta ? /* @__PURE__ */
|
|
20782
|
+
showAcknowledge && ackCta ? /* @__PURE__ */ jsx66(View50, { style: styles52.ackWrap, children: /* @__PURE__ */ jsx66(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
|
|
19945
20783
|
] }),
|
|
19946
|
-
/* @__PURE__ */
|
|
20784
|
+
/* @__PURE__ */ jsx66(View50, { style: styles52.chevron, children: /* @__PURE__ */ jsx66(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
|
|
19947
20785
|
] }) });
|
|
19948
20786
|
};
|
|
19949
|
-
var
|
|
20787
|
+
var styles52 = StyleSheet53.create({
|
|
19950
20788
|
row: {
|
|
19951
20789
|
flexDirection: "row",
|
|
19952
20790
|
alignItems: "center",
|
|
@@ -20009,7 +20847,7 @@ var styles50 = StyleSheet51.create({
|
|
|
20009
20847
|
});
|
|
20010
20848
|
|
|
20011
20849
|
// src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
|
|
20012
|
-
import { useCallback as
|
|
20850
|
+
import { useCallback as useCallback13, useMemo as useMemo22 } from "react";
|
|
20013
20851
|
import { Linking as Linking2 } from "react-native";
|
|
20014
20852
|
var useNotificationActions = () => {
|
|
20015
20853
|
const { navigateTo, setSelectedCase } = useInternalNavigation();
|
|
@@ -20020,14 +20858,14 @@ var useNotificationActions = () => {
|
|
|
20020
20858
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
20021
20859
|
[accessToken, refreshToken, onError, updateTokens]
|
|
20022
20860
|
);
|
|
20023
|
-
const hasAcknowledgeCTA =
|
|
20861
|
+
const hasAcknowledgeCTA = useCallback13(
|
|
20024
20862
|
(notification) => {
|
|
20025
20863
|
var _a3, _b;
|
|
20026
20864
|
return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
|
|
20027
20865
|
},
|
|
20028
20866
|
[]
|
|
20029
20867
|
);
|
|
20030
|
-
const handleMarkRead =
|
|
20868
|
+
const handleMarkRead = useCallback13(
|
|
20031
20869
|
async (notificationUuid) => {
|
|
20032
20870
|
if (!organizationId || !workspaceId) return false;
|
|
20033
20871
|
const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20035,12 +20873,12 @@ var useNotificationActions = () => {
|
|
|
20035
20873
|
},
|
|
20036
20874
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20037
20875
|
);
|
|
20038
|
-
const handleMarkAllRead =
|
|
20876
|
+
const handleMarkAllRead = useCallback13(async () => {
|
|
20039
20877
|
if (!organizationId || !workspaceId) return false;
|
|
20040
20878
|
const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
|
|
20041
20879
|
return result !== null;
|
|
20042
20880
|
}, [organizationId, workspaceId, authContext, consentClient]);
|
|
20043
|
-
const handleAcknowledge =
|
|
20881
|
+
const handleAcknowledge = useCallback13(
|
|
20044
20882
|
async (notificationUuid) => {
|
|
20045
20883
|
if (!organizationId || !workspaceId) return false;
|
|
20046
20884
|
const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20048,7 +20886,7 @@ var useNotificationActions = () => {
|
|
|
20048
20886
|
},
|
|
20049
20887
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20050
20888
|
);
|
|
20051
|
-
const handleCTAClick =
|
|
20889
|
+
const handleCTAClick = useCallback13(
|
|
20052
20890
|
async (notification, cta) => {
|
|
20053
20891
|
var _a3;
|
|
20054
20892
|
if (cta.action_type === "acknowledge") {
|
|
@@ -20105,7 +20943,7 @@ var useNotificationActions = () => {
|
|
|
20105
20943
|
};
|
|
20106
20944
|
|
|
20107
20945
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
20108
|
-
import { Fragment as Fragment16, jsx as
|
|
20946
|
+
import { Fragment as Fragment16, jsx as jsx67, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
20109
20947
|
var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
|
|
20110
20948
|
var READ_FILTER_TO_PARAM = {
|
|
20111
20949
|
all: void 0,
|
|
@@ -20113,7 +20951,7 @@ var READ_FILTER_TO_PARAM = {
|
|
|
20113
20951
|
read: true
|
|
20114
20952
|
};
|
|
20115
20953
|
var NotificationsScreen = () => {
|
|
20116
|
-
const { t } =
|
|
20954
|
+
const { t } = useTranslation29();
|
|
20117
20955
|
const { colors } = useTheme();
|
|
20118
20956
|
const { langParam } = useCurrentLanguage();
|
|
20119
20957
|
const { listBottom } = usePrivacyCenterInsets();
|
|
@@ -20130,15 +20968,15 @@ var NotificationsScreen = () => {
|
|
|
20130
20968
|
handleAcknowledge,
|
|
20131
20969
|
handleCTAClick
|
|
20132
20970
|
} = useNotificationActions();
|
|
20133
|
-
const [notifications, setNotifications] =
|
|
20134
|
-
const [summary, setSummary] =
|
|
20135
|
-
const [activeTab, setActiveTab] =
|
|
20136
|
-
const [readFilter, setReadFilter] =
|
|
20137
|
-
const [isLoading, setIsLoading] =
|
|
20138
|
-
const [isRefreshing2, setIsRefreshing] =
|
|
20139
|
-
const [filterOpen, setFilterOpen] =
|
|
20971
|
+
const [notifications, setNotifications] = useState25([]);
|
|
20972
|
+
const [summary, setSummary] = useState25(EMPTY_SUMMARY);
|
|
20973
|
+
const [activeTab, setActiveTab] = useState25("all");
|
|
20974
|
+
const [readFilter, setReadFilter] = useState25("all");
|
|
20975
|
+
const [isLoading, setIsLoading] = useState25(true);
|
|
20976
|
+
const [isRefreshing2, setIsRefreshing] = useState25(false);
|
|
20977
|
+
const [filterOpen, setFilterOpen] = useState25(false);
|
|
20140
20978
|
const isFiltered = activeTab !== "all" || readFilter !== "all";
|
|
20141
|
-
const loadNotifications =
|
|
20979
|
+
const loadNotifications = useCallback14(
|
|
20142
20980
|
async (includeSummary = false, silent = false) => {
|
|
20143
20981
|
if (!organizationId || !workspaceId) return;
|
|
20144
20982
|
if (!silent) setIsLoading(true);
|
|
@@ -20168,18 +21006,21 @@ var NotificationsScreen = () => {
|
|
|
20168
21006
|
},
|
|
20169
21007
|
[organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
|
|
20170
21008
|
);
|
|
20171
|
-
|
|
21009
|
+
useEffect20(() => {
|
|
20172
21010
|
loadNotifications(true);
|
|
20173
21011
|
}, [loadNotifications]);
|
|
20174
21012
|
const loadRef = useRef12(loadNotifications);
|
|
20175
21013
|
loadRef.current = loadNotifications;
|
|
20176
|
-
|
|
21014
|
+
const authContextRef = useRef12(authContext);
|
|
21015
|
+
authContextRef.current = authContext;
|
|
21016
|
+
useEffect20(() => {
|
|
20177
21017
|
const id = setInterval(() => {
|
|
21018
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
20178
21019
|
loadRef.current(false, true);
|
|
20179
21020
|
}, POLL_INTERVAL);
|
|
20180
21021
|
return () => clearInterval(id);
|
|
20181
21022
|
}, []);
|
|
20182
|
-
const onNotificationClick =
|
|
21023
|
+
const onNotificationClick = useCallback14(
|
|
20183
21024
|
async (notification) => {
|
|
20184
21025
|
const shouldMarkRead = !notification.is_read;
|
|
20185
21026
|
const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
|
|
@@ -20200,7 +21041,7 @@ var NotificationsScreen = () => {
|
|
|
20200
21041
|
},
|
|
20201
21042
|
[hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
|
|
20202
21043
|
);
|
|
20203
|
-
const onRowPress =
|
|
21044
|
+
const onRowPress = useCallback14(
|
|
20204
21045
|
async (notification) => {
|
|
20205
21046
|
var _a3;
|
|
20206
21047
|
const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
|
|
@@ -20218,7 +21059,7 @@ var NotificationsScreen = () => {
|
|
|
20218
21059
|
},
|
|
20219
21060
|
[handleCTAClick, onNotificationClick]
|
|
20220
21061
|
);
|
|
20221
|
-
const onMarkReadRow =
|
|
21062
|
+
const onMarkReadRow = useCallback14(
|
|
20222
21063
|
async (notification) => {
|
|
20223
21064
|
if (notification.is_read) return;
|
|
20224
21065
|
const ok = await handleMarkRead(notification.uuid);
|
|
@@ -20228,7 +21069,7 @@ var NotificationsScreen = () => {
|
|
|
20228
21069
|
},
|
|
20229
21070
|
[handleMarkRead]
|
|
20230
21071
|
);
|
|
20231
|
-
const onAcknowledgeRow =
|
|
21072
|
+
const onAcknowledgeRow = useCallback14(
|
|
20232
21073
|
async (notification) => {
|
|
20233
21074
|
if (notification.is_acknowledged) return;
|
|
20234
21075
|
const ok = await handleAcknowledge(notification.uuid);
|
|
@@ -20245,7 +21086,14 @@ var NotificationsScreen = () => {
|
|
|
20245
21086
|
},
|
|
20246
21087
|
[handleAcknowledge]
|
|
20247
21088
|
);
|
|
20248
|
-
const
|
|
21089
|
+
const onMarkAllRead = useCallback14(async () => {
|
|
21090
|
+
const ok = await handleMarkAllRead();
|
|
21091
|
+
if (!ok) return;
|
|
21092
|
+
setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
|
|
21093
|
+
setSummary((prev) => ({ ...prev, unread: 0 }));
|
|
21094
|
+
if (readFilter !== "all") loadNotifications(true, true);
|
|
21095
|
+
}, [handleMarkAllRead, readFilter, loadNotifications]);
|
|
21096
|
+
const onRefresh = useCallback14(() => {
|
|
20249
21097
|
setIsRefreshing(true);
|
|
20250
21098
|
loadNotifications(true, true);
|
|
20251
21099
|
}, [loadNotifications]);
|
|
@@ -20253,14 +21101,14 @@ var NotificationsScreen = () => {
|
|
|
20253
21101
|
() => groupByTime(notifications, (item) => item.created_at, classifyTime),
|
|
20254
21102
|
[notifications, classifyTime]
|
|
20255
21103
|
);
|
|
20256
|
-
const header = /* @__PURE__ */
|
|
20257
|
-
/* @__PURE__ */
|
|
20258
|
-
/* @__PURE__ */
|
|
20259
|
-
/* @__PURE__ */
|
|
20260
|
-
|
|
21104
|
+
const header = /* @__PURE__ */ jsxs44(View51, { style: styles53.header, children: [
|
|
21105
|
+
/* @__PURE__ */ jsxs44(View51, { style: styles53.titleRow, children: [
|
|
21106
|
+
/* @__PURE__ */ jsx67(Text42, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
|
|
21107
|
+
/* @__PURE__ */ jsx67(
|
|
21108
|
+
TouchableOpacity22,
|
|
20261
21109
|
{
|
|
20262
21110
|
style: [
|
|
20263
|
-
|
|
21111
|
+
styles53.filterBtn,
|
|
20264
21112
|
{
|
|
20265
21113
|
backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
|
|
20266
21114
|
borderColor: isFiltered ? colors.primary : colors.border
|
|
@@ -20269,30 +21117,30 @@ var NotificationsScreen = () => {
|
|
|
20269
21117
|
onPress: () => setFilterOpen(true),
|
|
20270
21118
|
accessibilityRole: "button",
|
|
20271
21119
|
accessibilityLabel: t("filter") || "Filter",
|
|
20272
|
-
children: /* @__PURE__ */
|
|
21120
|
+
children: /* @__PURE__ */ jsx67(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
|
|
20273
21121
|
}
|
|
20274
21122
|
)
|
|
20275
21123
|
] }),
|
|
20276
|
-
summary.unread > 0 ? /* @__PURE__ */
|
|
20277
|
-
/* @__PURE__ */
|
|
20278
|
-
/* @__PURE__ */
|
|
21124
|
+
summary.unread > 0 ? /* @__PURE__ */ jsxs44(TouchableOpacity22, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
|
|
21125
|
+
/* @__PURE__ */ jsx67(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
|
|
21126
|
+
/* @__PURE__ */ jsx67(Text42, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
|
|
20279
21127
|
] }) : null
|
|
20280
21128
|
] });
|
|
20281
|
-
return /* @__PURE__ */
|
|
20282
|
-
/* @__PURE__ */
|
|
21129
|
+
return /* @__PURE__ */ jsxs44(Fragment16, { children: [
|
|
21130
|
+
/* @__PURE__ */ jsx67(
|
|
20283
21131
|
FlatList3,
|
|
20284
21132
|
{
|
|
20285
21133
|
data: sections,
|
|
20286
21134
|
keyExtractor: (section2) => section2.key,
|
|
20287
|
-
style: [
|
|
20288
|
-
contentContainerStyle: [
|
|
21135
|
+
style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
|
|
21136
|
+
contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
|
|
20289
21137
|
ListHeaderComponent: header,
|
|
20290
21138
|
showsVerticalScrollIndicator: false,
|
|
20291
|
-
refreshControl: /* @__PURE__ */
|
|
20292
|
-
renderItem: ({ item: section2 }) => /* @__PURE__ */
|
|
20293
|
-
/* @__PURE__ */
|
|
20294
|
-
/* @__PURE__ */
|
|
20295
|
-
/* @__PURE__ */
|
|
21139
|
+
refreshControl: /* @__PURE__ */ jsx67(RefreshControl5, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
|
|
21140
|
+
renderItem: ({ item: section2 }) => /* @__PURE__ */ jsxs44(View51, { style: styles53.section, children: [
|
|
21141
|
+
/* @__PURE__ */ jsx67(Text42, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
|
|
21142
|
+
/* @__PURE__ */ jsx67(View51, { style: [styles53.cardShadow, elevation.card], children: /* @__PURE__ */ jsx67(View51, { style: [styles53.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ jsxs44(View51, { children: [
|
|
21143
|
+
/* @__PURE__ */ jsx67(
|
|
20296
21144
|
NotificationRow,
|
|
20297
21145
|
{
|
|
20298
21146
|
notification: item,
|
|
@@ -20301,19 +21149,19 @@ var NotificationsScreen = () => {
|
|
|
20301
21149
|
onAcknowledge: () => onAcknowledgeRow(item)
|
|
20302
21150
|
}
|
|
20303
21151
|
),
|
|
20304
|
-
index < section2.data.length - 1 ? /* @__PURE__ */
|
|
21152
|
+
index < section2.data.length - 1 ? /* @__PURE__ */ jsx67(View51, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
20305
21153
|
] }, item.uuid)) }) })
|
|
20306
21154
|
] }),
|
|
20307
|
-
ListEmptyComponent: isLoading ? /* @__PURE__ */
|
|
20308
|
-
/* @__PURE__ */
|
|
20309
|
-
/* @__PURE__ */
|
|
20310
|
-
/* @__PURE__ */
|
|
20311
|
-
/* @__PURE__ */
|
|
20312
|
-
/* @__PURE__ */
|
|
21155
|
+
ListEmptyComponent: isLoading ? /* @__PURE__ */ jsx67(View51, { style: styles53.skeletonWrap, children: /* @__PURE__ */ jsx67(View51, { style: [styles53.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs44(View51, { children: [
|
|
21156
|
+
/* @__PURE__ */ jsxs44(View51, { style: styles53.skeletonRow, children: [
|
|
21157
|
+
/* @__PURE__ */ jsx67(Skeleton, { width: 36, height: 36, radius: radii.md }),
|
|
21158
|
+
/* @__PURE__ */ jsxs44(View51, { style: styles53.skeletonLines, children: [
|
|
21159
|
+
/* @__PURE__ */ jsx67(Skeleton, { width: "70%", height: 13 }),
|
|
21160
|
+
/* @__PURE__ */ jsx67(Skeleton, { width: "40%", height: 10 })
|
|
20313
21161
|
] })
|
|
20314
21162
|
] }),
|
|
20315
|
-
i < 3 ? /* @__PURE__ */
|
|
20316
|
-
] }, i)) }) }) : /* @__PURE__ */
|
|
21163
|
+
i < 3 ? /* @__PURE__ */ jsx67(View51, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
21164
|
+
] }, i)) }) }) : /* @__PURE__ */ jsx67(View51, { style: styles53.emptyWrap, children: /* @__PURE__ */ jsx67(
|
|
20317
21165
|
PCEmpty,
|
|
20318
21166
|
{
|
|
20319
21167
|
iconName: "circle-check",
|
|
@@ -20322,14 +21170,14 @@ var NotificationsScreen = () => {
|
|
|
20322
21170
|
}
|
|
20323
21171
|
) }),
|
|
20324
21172
|
ListFooterComponentStyle: { marginTop: "auto" },
|
|
20325
|
-
ListFooterComponent: /* @__PURE__ */
|
|
21173
|
+
ListFooterComponent: /* @__PURE__ */ jsx67(Footer, {})
|
|
20326
21174
|
}
|
|
20327
21175
|
),
|
|
20328
|
-
/* @__PURE__ */
|
|
20329
|
-
/* @__PURE__ */
|
|
20330
|
-
/* @__PURE__ */
|
|
21176
|
+
/* @__PURE__ */ jsx67(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ jsxs44(View51, { style: styles53.filterSheet, children: [
|
|
21177
|
+
/* @__PURE__ */ jsx67(Text42, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
|
|
21178
|
+
/* @__PURE__ */ jsx67(View51, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
|
|
20331
21179
|
const selected = tab.key === activeTab;
|
|
20332
|
-
return /* @__PURE__ */
|
|
21180
|
+
return /* @__PURE__ */ jsx67(
|
|
20333
21181
|
FilterChip,
|
|
20334
21182
|
{
|
|
20335
21183
|
label: tab.label,
|
|
@@ -20339,12 +21187,12 @@ var NotificationsScreen = () => {
|
|
|
20339
21187
|
tab.key
|
|
20340
21188
|
);
|
|
20341
21189
|
}) }),
|
|
20342
|
-
/* @__PURE__ */
|
|
20343
|
-
/* @__PURE__ */
|
|
21190
|
+
/* @__PURE__ */ jsx67(Text42, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
|
|
21191
|
+
/* @__PURE__ */ jsx67(View51, { style: styles53.chipWrap, children: [
|
|
20344
21192
|
{ key: "all", label: t("all") || "All" },
|
|
20345
21193
|
{ key: "unread", label: t("unread") || "Unread" },
|
|
20346
21194
|
{ key: "read", label: t("read", { defaultValue: "Read" }) }
|
|
20347
|
-
].map((opt) => /* @__PURE__ */
|
|
21195
|
+
].map((opt) => /* @__PURE__ */ jsx67(
|
|
20348
21196
|
FilterChip,
|
|
20349
21197
|
{
|
|
20350
21198
|
label: opt.label,
|
|
@@ -20353,13 +21201,13 @@ var NotificationsScreen = () => {
|
|
|
20353
21201
|
},
|
|
20354
21202
|
opt.key
|
|
20355
21203
|
)) }),
|
|
20356
|
-
/* @__PURE__ */
|
|
20357
|
-
|
|
21204
|
+
/* @__PURE__ */ jsx67(
|
|
21205
|
+
TouchableOpacity22,
|
|
20358
21206
|
{
|
|
20359
|
-
style: [
|
|
21207
|
+
style: [styles53.applyBtn, { backgroundColor: colors.primary }],
|
|
20360
21208
|
onPress: () => setFilterOpen(false),
|
|
20361
21209
|
accessibilityRole: "button",
|
|
20362
|
-
children: /* @__PURE__ */
|
|
21210
|
+
children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
|
|
20363
21211
|
}
|
|
20364
21212
|
)
|
|
20365
21213
|
] }) })
|
|
@@ -20367,25 +21215,25 @@ var NotificationsScreen = () => {
|
|
|
20367
21215
|
};
|
|
20368
21216
|
var FilterChip = ({ label, selected, onPress }) => {
|
|
20369
21217
|
const { colors } = useTheme();
|
|
20370
|
-
return /* @__PURE__ */
|
|
20371
|
-
|
|
21218
|
+
return /* @__PURE__ */ jsx67(
|
|
21219
|
+
TouchableOpacity22,
|
|
20372
21220
|
{
|
|
20373
21221
|
onPress,
|
|
20374
21222
|
activeOpacity: 0.7,
|
|
20375
21223
|
accessibilityRole: "button",
|
|
20376
21224
|
accessibilityState: { selected },
|
|
20377
21225
|
style: [
|
|
20378
|
-
|
|
21226
|
+
styles53.chip,
|
|
20379
21227
|
{
|
|
20380
21228
|
backgroundColor: selected ? colors.primary : colors.surfaceAlt,
|
|
20381
21229
|
borderColor: selected ? colors.primary : colors.border
|
|
20382
21230
|
}
|
|
20383
21231
|
],
|
|
20384
|
-
children: /* @__PURE__ */
|
|
21232
|
+
children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
|
|
20385
21233
|
}
|
|
20386
21234
|
);
|
|
20387
21235
|
};
|
|
20388
|
-
var
|
|
21236
|
+
var styles53 = StyleSheet54.create({
|
|
20389
21237
|
list: {
|
|
20390
21238
|
flex: 1
|
|
20391
21239
|
},
|
|
@@ -20419,7 +21267,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20419
21267
|
filterBtn: {
|
|
20420
21268
|
width: 40,
|
|
20421
21269
|
height: 40,
|
|
20422
|
-
borderWidth:
|
|
21270
|
+
borderWidth: StyleSheet54.hairlineWidth,
|
|
20423
21271
|
borderRadius: radii.md,
|
|
20424
21272
|
justifyContent: "center",
|
|
20425
21273
|
alignItems: "center"
|
|
@@ -20440,7 +21288,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20440
21288
|
overflow: "hidden"
|
|
20441
21289
|
},
|
|
20442
21290
|
separator: {
|
|
20443
|
-
height:
|
|
21291
|
+
height: StyleSheet54.hairlineWidth,
|
|
20444
21292
|
marginLeft: spacing.lg + 36 + spacing.md
|
|
20445
21293
|
},
|
|
20446
21294
|
emptyWrap: {
|
|
@@ -20478,7 +21326,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20478
21326
|
justifyContent: "center",
|
|
20479
21327
|
paddingHorizontal: spacing.lg,
|
|
20480
21328
|
borderRadius: radii.pill,
|
|
20481
|
-
borderWidth:
|
|
21329
|
+
borderWidth: StyleSheet54.hairlineWidth
|
|
20482
21330
|
},
|
|
20483
21331
|
chipLabel: {
|
|
20484
21332
|
...typography.label
|
|
@@ -20497,7 +21345,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20497
21345
|
});
|
|
20498
21346
|
|
|
20499
21347
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
20500
|
-
import { Fragment as Fragment17, jsx as
|
|
21348
|
+
import { Fragment as Fragment17, jsx as jsx68, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
20501
21349
|
var privacyCenterQueryClient = new QueryClient();
|
|
20502
21350
|
function PrivacyCenterContent({ onBack }) {
|
|
20503
21351
|
const { currentPage } = useInternalNavigation();
|
|
@@ -20507,24 +21355,24 @@ function PrivacyCenterContent({ onBack }) {
|
|
|
20507
21355
|
const chromeMode = getPageChromeMode(currentPage);
|
|
20508
21356
|
const canvasIsLight = isLightColor(colors.canvasSubtle);
|
|
20509
21357
|
const barStyle = canvasIsLight ? "dark-content" : "light-content";
|
|
20510
|
-
|
|
21358
|
+
useEffect21(() => {
|
|
20511
21359
|
StatusBar2.setBarStyle(barStyle, true);
|
|
20512
21360
|
if (Platform8.OS === "android") {
|
|
20513
21361
|
setNavBarIconStyle(canvasIsLight ? "dark" : "light");
|
|
20514
21362
|
}
|
|
20515
21363
|
}, [barStyle, canvasIsLight]);
|
|
20516
|
-
return /* @__PURE__ */
|
|
20517
|
-
/* @__PURE__ */
|
|
20518
|
-
/* @__PURE__ */
|
|
20519
|
-
/* @__PURE__ */
|
|
20520
|
-
/* @__PURE__ */
|
|
20521
|
-
currentPage === "home" && /* @__PURE__ */
|
|
20522
|
-
currentPage === "consent-manager" && /* @__PURE__ */
|
|
20523
|
-
currentPage === "form" && /* @__PURE__ */
|
|
20524
|
-
currentPage === "activity" && /* @__PURE__ */
|
|
20525
|
-
currentPage === "receipts" && /* @__PURE__ */
|
|
20526
|
-
currentPage === "case-details" && /* @__PURE__ */
|
|
20527
|
-
currentPage === "notifications" && /* @__PURE__ */
|
|
21364
|
+
return /* @__PURE__ */ jsxs45(View52, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
|
|
21365
|
+
/* @__PURE__ */ jsx68(StatusBar2, { barStyle, translucent: true }),
|
|
21366
|
+
/* @__PURE__ */ jsx68(View52, { style: styles54.mainColumn, children: brandingLoading ? /* @__PURE__ */ jsx68(PCLoader, {}) : /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
21367
|
+
/* @__PURE__ */ jsx68(SlimTopBar, { mode: chromeMode, onBack }),
|
|
21368
|
+
/* @__PURE__ */ jsx68(View52, { style: [styles54.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ jsx68(PCLoader, {}) : status === "session-expired" ? /* @__PURE__ */ jsx68(PrivacyCenterSessionExpired, {}) : status === "empty" ? /* @__PURE__ */ jsx68(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
21369
|
+
currentPage === "home" && /* @__PURE__ */ jsx68(HomeHub, {}),
|
|
21370
|
+
currentPage === "consent-manager" && /* @__PURE__ */ jsx68(ConsentManager, {}),
|
|
21371
|
+
currentPage === "form" && /* @__PURE__ */ jsx68(FormPage, {}),
|
|
21372
|
+
currentPage === "activity" && /* @__PURE__ */ jsx68(ActivitiesList, {}),
|
|
21373
|
+
currentPage === "receipts" && /* @__PURE__ */ jsx68(ReceiptsList, {}),
|
|
21374
|
+
currentPage === "case-details" && /* @__PURE__ */ jsx68(CaseDetailsPage, {}),
|
|
21375
|
+
currentPage === "notifications" && /* @__PURE__ */ jsx68(NotificationsScreen, {})
|
|
20528
21376
|
] }) })
|
|
20529
21377
|
] }) })
|
|
20530
21378
|
] });
|
|
@@ -20538,22 +21386,34 @@ function RedactoPrivacyCenter({
|
|
|
20538
21386
|
theme: _theme,
|
|
20539
21387
|
accessToken,
|
|
20540
21388
|
refreshToken,
|
|
21389
|
+
token,
|
|
21390
|
+
email,
|
|
21391
|
+
mobile,
|
|
21392
|
+
ucic,
|
|
21393
|
+
organisationUuid,
|
|
21394
|
+
workspaceUuid,
|
|
20541
21395
|
onError,
|
|
20542
21396
|
initialPage = "home",
|
|
20543
21397
|
initialCaseUuid,
|
|
20544
21398
|
onBack
|
|
20545
21399
|
}) {
|
|
20546
|
-
return /* @__PURE__ */
|
|
21400
|
+
return /* @__PURE__ */ jsx68(SafeAreaBoundary, { children: /* @__PURE__ */ jsx68(KeyboardProviderCompat, { children: /* @__PURE__ */ jsx68(QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ jsx68(I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ jsx68(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ jsx68(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ jsx68(
|
|
20547
21401
|
AuthProvider,
|
|
20548
21402
|
{
|
|
20549
|
-
accessToken,
|
|
20550
|
-
refreshToken,
|
|
21403
|
+
accessToken: accessToken != null ? accessToken : "",
|
|
21404
|
+
refreshToken: refreshToken != null ? refreshToken : "",
|
|
21405
|
+
token,
|
|
21406
|
+
sandboxUcic: ucic,
|
|
21407
|
+
sandboxSubject: email || mobile,
|
|
21408
|
+
organisationUuid,
|
|
21409
|
+
workspaceUuid,
|
|
21410
|
+
slug,
|
|
20551
21411
|
onError,
|
|
20552
|
-
children: /* @__PURE__ */
|
|
21412
|
+
children: /* @__PURE__ */ jsx68(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ jsx68(SelectUserGate, { children: /* @__PURE__ */ jsx68(DataAvailabilityProvider, { children: /* @__PURE__ */ jsx68(PageStatusProvider, { children: /* @__PURE__ */ jsx68(PrivacyCenterContent, { onBack }) }) }) }) })
|
|
20553
21413
|
}
|
|
20554
21414
|
) }) }) }) }) }) });
|
|
20555
21415
|
}
|
|
20556
|
-
var
|
|
21416
|
+
var styles54 = StyleSheet55.create({
|
|
20557
21417
|
container: {
|
|
20558
21418
|
flex: 1
|
|
20559
21419
|
},
|
|
@@ -20568,78 +21428,78 @@ var styles52 = StyleSheet53.create({
|
|
|
20568
21428
|
|
|
20569
21429
|
// src/RedactoPrivacyCenter/components/SideMenu.tsx
|
|
20570
21430
|
import {
|
|
20571
|
-
StyleSheet as
|
|
20572
|
-
Text as
|
|
20573
|
-
TouchableOpacity as
|
|
20574
|
-
View as
|
|
21431
|
+
StyleSheet as StyleSheet56,
|
|
21432
|
+
Text as Text43,
|
|
21433
|
+
TouchableOpacity as TouchableOpacity23,
|
|
21434
|
+
View as View53
|
|
20575
21435
|
} from "react-native";
|
|
20576
|
-
import { useTranslation as
|
|
21436
|
+
import { useTranslation as useTranslation30 } from "react-i18next";
|
|
20577
21437
|
import Svg2, { Path as Path2 } from "react-native-svg";
|
|
20578
|
-
import { Fragment as Fragment18, jsx as
|
|
21438
|
+
import { Fragment as Fragment18, jsx as jsx69, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
20579
21439
|
var MENU_ITEMS = [
|
|
20580
21440
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
|
|
20581
21441
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
|
|
20582
21442
|
{ page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
|
|
20583
21443
|
];
|
|
20584
21444
|
function SideMenu({ onBack } = {}) {
|
|
20585
|
-
const { t } =
|
|
21445
|
+
const { t } = useTranslation30();
|
|
20586
21446
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20587
21447
|
const { organizationName, email } = useAuth();
|
|
20588
21448
|
const { colors } = useTheme();
|
|
20589
21449
|
const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
|
|
20590
21450
|
const displayName = organizationName || "Organization";
|
|
20591
|
-
return /* @__PURE__ */
|
|
20592
|
-
/* @__PURE__ */
|
|
20593
|
-
/* @__PURE__ */
|
|
20594
|
-
/* @__PURE__ */
|
|
20595
|
-
/* @__PURE__ */
|
|
20596
|
-
email ? /* @__PURE__ */
|
|
21451
|
+
return /* @__PURE__ */ jsxs46(View53, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
|
|
21452
|
+
/* @__PURE__ */ jsxs46(View53, { style: styles55.orgSection, children: [
|
|
21453
|
+
/* @__PURE__ */ jsx69(View53, { style: [styles55.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ jsx69(Text43, { style: [styles55.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
|
|
21454
|
+
/* @__PURE__ */ jsxs46(View53, { style: styles55.orgInfo, children: [
|
|
21455
|
+
/* @__PURE__ */ jsx69(Text43, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
|
|
21456
|
+
email ? /* @__PURE__ */ jsx69(Text43, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20597
21457
|
] })
|
|
20598
21458
|
] }),
|
|
20599
|
-
/* @__PURE__ */
|
|
20600
|
-
/* @__PURE__ */
|
|
21459
|
+
/* @__PURE__ */ jsx69(View53, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21460
|
+
/* @__PURE__ */ jsx69(View53, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
|
|
20601
21461
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
20602
|
-
return /* @__PURE__ */
|
|
20603
|
-
|
|
21462
|
+
return /* @__PURE__ */ jsxs46(
|
|
21463
|
+
TouchableOpacity23,
|
|
20604
21464
|
{
|
|
20605
21465
|
style: [
|
|
20606
|
-
|
|
20607
|
-
isActive && [
|
|
21466
|
+
styles55.menuItem,
|
|
21467
|
+
isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
|
|
20608
21468
|
],
|
|
20609
21469
|
onPress: () => navigateTo(item.page),
|
|
20610
21470
|
activeOpacity: 0.7,
|
|
20611
21471
|
accessibilityRole: "button",
|
|
20612
21472
|
accessibilityState: { selected: isActive },
|
|
20613
21473
|
children: [
|
|
20614
|
-
/* @__PURE__ */
|
|
20615
|
-
/* @__PURE__ */
|
|
20616
|
-
|
|
21474
|
+
/* @__PURE__ */ jsx69(View53, { style: styles55.menuIconWrap, children: /* @__PURE__ */ jsx69(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
|
|
21475
|
+
/* @__PURE__ */ jsx69(
|
|
21476
|
+
Text43,
|
|
20617
21477
|
{
|
|
20618
21478
|
style: [
|
|
20619
|
-
|
|
21479
|
+
styles55.menuLabel,
|
|
20620
21480
|
{ color: isActive ? colors.primary : colors.text },
|
|
20621
|
-
isActive &&
|
|
21481
|
+
isActive && styles55.menuLabelActive
|
|
20622
21482
|
],
|
|
20623
21483
|
children: t(item.labelKey) || item.fallback
|
|
20624
21484
|
}
|
|
20625
21485
|
),
|
|
20626
|
-
isActive ? /* @__PURE__ */
|
|
21486
|
+
isActive ? /* @__PURE__ */ jsx69(View53, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
|
|
20627
21487
|
]
|
|
20628
21488
|
},
|
|
20629
21489
|
item.page
|
|
20630
21490
|
);
|
|
20631
21491
|
}) }),
|
|
20632
|
-
onBack ? /* @__PURE__ */
|
|
20633
|
-
/* @__PURE__ */
|
|
20634
|
-
/* @__PURE__ */
|
|
20635
|
-
/* @__PURE__ */
|
|
20636
|
-
|
|
21492
|
+
onBack ? /* @__PURE__ */ jsxs46(Fragment18, { children: [
|
|
21493
|
+
/* @__PURE__ */ jsx69(View53, { style: { flex: 1 } }),
|
|
21494
|
+
/* @__PURE__ */ jsx69(View53, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21495
|
+
/* @__PURE__ */ jsxs46(
|
|
21496
|
+
TouchableOpacity23,
|
|
20637
21497
|
{
|
|
20638
|
-
style:
|
|
21498
|
+
style: styles55.backBtn,
|
|
20639
21499
|
onPress: () => navigateBack(onBack),
|
|
20640
21500
|
activeOpacity: 0.7,
|
|
20641
21501
|
children: [
|
|
20642
|
-
/* @__PURE__ */
|
|
21502
|
+
/* @__PURE__ */ jsx69(Svg2, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ jsx69(
|
|
20643
21503
|
Path2,
|
|
20644
21504
|
{
|
|
20645
21505
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20648,7 +21508,7 @@ function SideMenu({ onBack } = {}) {
|
|
|
20648
21508
|
strokeLinecap: "round",
|
|
20649
21509
|
strokeLinejoin: "round"
|
|
20650
21510
|
}
|
|
20651
|
-
) : /* @__PURE__ */
|
|
21511
|
+
) : /* @__PURE__ */ jsx69(
|
|
20652
21512
|
Path2,
|
|
20653
21513
|
{
|
|
20654
21514
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20658,14 +21518,14 @@ function SideMenu({ onBack } = {}) {
|
|
|
20658
21518
|
strokeLinejoin: "round"
|
|
20659
21519
|
}
|
|
20660
21520
|
) }),
|
|
20661
|
-
/* @__PURE__ */
|
|
21521
|
+
/* @__PURE__ */ jsx69(Text43, { style: [styles55.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
|
|
20662
21522
|
]
|
|
20663
21523
|
}
|
|
20664
21524
|
)
|
|
20665
21525
|
] }) : null
|
|
20666
21526
|
] });
|
|
20667
21527
|
}
|
|
20668
|
-
var
|
|
21528
|
+
var styles55 = StyleSheet56.create({
|
|
20669
21529
|
container: {
|
|
20670
21530
|
flex: 1,
|
|
20671
21531
|
paddingTop: 12
|
|
@@ -20751,42 +21611,68 @@ var styles53 = StyleSheet54.create({
|
|
|
20751
21611
|
});
|
|
20752
21612
|
|
|
20753
21613
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20754
|
-
import { useCallback as
|
|
20755
|
-
import { StyleSheet as
|
|
20756
|
-
import { useTranslation as
|
|
21614
|
+
import { useCallback as useCallback15, useEffect as useEffect22, useState as useState26 } from "react";
|
|
21615
|
+
import { StyleSheet as StyleSheet58, Text as Text45, TouchableOpacity as TouchableOpacity25, View as View55 } from "react-native";
|
|
21616
|
+
import { useTranslation as useTranslation32 } from "react-i18next";
|
|
20757
21617
|
import Svg4, { Path as Path4 } from "react-native-svg";
|
|
20758
21618
|
|
|
20759
21619
|
// src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
|
|
20760
|
-
import { Image as Image4, StyleSheet as
|
|
20761
|
-
import { useTranslation as
|
|
21620
|
+
import { Image as Image4, StyleSheet as StyleSheet57, Text as Text44, TouchableOpacity as TouchableOpacity24, View as View54 } from "react-native";
|
|
21621
|
+
import { useTranslation as useTranslation31 } from "react-i18next";
|
|
20762
21622
|
import Svg3, { Path as Path3 } from "react-native-svg";
|
|
20763
|
-
import { jsx as
|
|
21623
|
+
import { jsx as jsx70, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
20764
21624
|
var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
20765
|
-
const { t } =
|
|
21625
|
+
const { t } = useTranslation31();
|
|
20766
21626
|
const { organizationName, email } = useAuth();
|
|
20767
21627
|
const { colors, branding } = useTheme();
|
|
21628
|
+
const { switchProfile } = useProfileSwitch();
|
|
20768
21629
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20769
21630
|
const handleAction = () => {
|
|
20770
21631
|
onClose();
|
|
20771
21632
|
navigateBack(onBack);
|
|
20772
21633
|
};
|
|
20773
|
-
return /* @__PURE__ */
|
|
20774
|
-
/* @__PURE__ */
|
|
20775
|
-
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */
|
|
20776
|
-
/* @__PURE__ */
|
|
20777
|
-
/* @__PURE__ */
|
|
20778
|
-
email ? /* @__PURE__ */
|
|
21634
|
+
return /* @__PURE__ */ jsxs47(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
|
|
21635
|
+
/* @__PURE__ */ jsxs47(View54, { style: styles56.identity, children: [
|
|
21636
|
+
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx70(Image4, { source: { uri: branding.logo_url }, style: styles56.logo, resizeMode: "contain" }) : /* @__PURE__ */ jsx70(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
|
|
21637
|
+
/* @__PURE__ */ jsxs47(View54, { style: styles56.identityText, children: [
|
|
21638
|
+
/* @__PURE__ */ jsx70(Text44, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
|
|
21639
|
+
email ? /* @__PURE__ */ jsx70(Text44, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
|
|
20779
21640
|
] })
|
|
20780
21641
|
] }),
|
|
20781
|
-
|
|
20782
|
-
|
|
21642
|
+
switchProfile ? /* @__PURE__ */ jsxs47(
|
|
21643
|
+
TouchableOpacity24,
|
|
20783
21644
|
{
|
|
20784
|
-
style: [
|
|
21645
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
|
|
21646
|
+
onPress: () => {
|
|
21647
|
+
onClose();
|
|
21648
|
+
switchProfile();
|
|
21649
|
+
},
|
|
21650
|
+
activeOpacity: 0.7,
|
|
21651
|
+
accessibilityRole: "button",
|
|
21652
|
+
children: [
|
|
21653
|
+
/* @__PURE__ */ jsx70(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx70(
|
|
21654
|
+
Path3,
|
|
21655
|
+
{
|
|
21656
|
+
d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
|
|
21657
|
+
stroke: colors.primary,
|
|
21658
|
+
strokeWidth: 2,
|
|
21659
|
+
strokeLinecap: "round",
|
|
21660
|
+
strokeLinejoin: "round"
|
|
21661
|
+
}
|
|
21662
|
+
) }),
|
|
21663
|
+
/* @__PURE__ */ jsx70(Text44, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
|
|
21664
|
+
]
|
|
21665
|
+
}
|
|
21666
|
+
) : null,
|
|
21667
|
+
onBack ? /* @__PURE__ */ jsxs47(
|
|
21668
|
+
TouchableOpacity24,
|
|
21669
|
+
{
|
|
21670
|
+
style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
|
|
20785
21671
|
onPress: handleAction,
|
|
20786
21672
|
activeOpacity: 0.7,
|
|
20787
21673
|
accessibilityRole: "button",
|
|
20788
21674
|
children: [
|
|
20789
|
-
/* @__PURE__ */
|
|
21675
|
+
/* @__PURE__ */ jsx70(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ jsx70(
|
|
20790
21676
|
Path3,
|
|
20791
21677
|
{
|
|
20792
21678
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20795,7 +21681,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20795
21681
|
strokeLinecap: "round",
|
|
20796
21682
|
strokeLinejoin: "round"
|
|
20797
21683
|
}
|
|
20798
|
-
) : /* @__PURE__ */
|
|
21684
|
+
) : /* @__PURE__ */ jsx70(
|
|
20799
21685
|
Path3,
|
|
20800
21686
|
{
|
|
20801
21687
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20805,13 +21691,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20805
21691
|
strokeLinejoin: "round"
|
|
20806
21692
|
}
|
|
20807
21693
|
) }),
|
|
20808
|
-
/* @__PURE__ */
|
|
21694
|
+
/* @__PURE__ */ jsx70(Text44, { style: [styles56.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
|
|
20809
21695
|
]
|
|
20810
21696
|
}
|
|
20811
21697
|
) : null
|
|
20812
21698
|
] });
|
|
20813
21699
|
};
|
|
20814
|
-
var
|
|
21700
|
+
var styles56 = StyleSheet57.create({
|
|
20815
21701
|
identity: {
|
|
20816
21702
|
flexDirection: "row",
|
|
20817
21703
|
alignItems: "center",
|
|
@@ -20852,33 +21738,33 @@ var styles54 = StyleSheet55.create({
|
|
|
20852
21738
|
});
|
|
20853
21739
|
|
|
20854
21740
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20855
|
-
import { Fragment as Fragment19, jsx as
|
|
21741
|
+
import { Fragment as Fragment19, jsx as jsx71, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
20856
21742
|
function Navbar({ mode = "primary", onBack }) {
|
|
20857
|
-
const { t } =
|
|
21743
|
+
const { t } = useTranslation32();
|
|
20858
21744
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20859
21745
|
const { organizationName, email } = useAuth();
|
|
20860
21746
|
const { colors, branding } = useTheme();
|
|
20861
|
-
const [locale, setLocale] =
|
|
20862
|
-
const [menuOpen, setMenuOpen] =
|
|
21747
|
+
const [locale, setLocale] = useState26(i18n_default.language || "en");
|
|
21748
|
+
const [menuOpen, setMenuOpen] = useState26(false);
|
|
20863
21749
|
const unreadCount = useUnreadCount();
|
|
20864
21750
|
const { status: pageStatus } = usePageStatus();
|
|
20865
21751
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
|
|
20866
21752
|
const isDetail = mode === "detail";
|
|
20867
|
-
|
|
21753
|
+
useEffect22(() => {
|
|
20868
21754
|
const handleLanguageChanged = () => setLocale(i18n_default.language);
|
|
20869
21755
|
i18n_default.on("languageChanged", handleLanguageChanged);
|
|
20870
21756
|
return () => {
|
|
20871
21757
|
i18n_default.off("languageChanged", handleLanguageChanged);
|
|
20872
21758
|
};
|
|
20873
21759
|
}, []);
|
|
20874
|
-
const handleLanguageChange =
|
|
21760
|
+
const handleLanguageChange = useCallback15((value) => {
|
|
20875
21761
|
i18n_default.changeLanguage(value);
|
|
20876
21762
|
}, []);
|
|
20877
21763
|
const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20878
21764
|
const accountLabel = brandLabel || email || t("account") || "Account";
|
|
20879
|
-
const brandLockup = /* @__PURE__ */
|
|
20880
|
-
/* @__PURE__ */
|
|
20881
|
-
/* @__PURE__ */
|
|
21765
|
+
const brandLockup = /* @__PURE__ */ jsxs48(View55, { style: styles57.brandRow, children: [
|
|
21766
|
+
/* @__PURE__ */ jsx71(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
|
|
21767
|
+
/* @__PURE__ */ jsx71(Text45, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
|
|
20882
21768
|
] });
|
|
20883
21769
|
const handleDetailBack = () => {
|
|
20884
21770
|
if (currentPage === "case-details") {
|
|
@@ -20890,26 +21776,26 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20890
21776
|
}
|
|
20891
21777
|
};
|
|
20892
21778
|
if (isDetail) {
|
|
20893
|
-
return /* @__PURE__ */
|
|
20894
|
-
/* @__PURE__ */
|
|
20895
|
-
|
|
21779
|
+
return /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
21780
|
+
/* @__PURE__ */ jsx71(
|
|
21781
|
+
View55,
|
|
20896
21782
|
{
|
|
20897
21783
|
style: [
|
|
20898
|
-
|
|
20899
|
-
|
|
21784
|
+
styles57.container,
|
|
21785
|
+
styles57.detailContainer,
|
|
20900
21786
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20901
21787
|
],
|
|
20902
|
-
children: /* @__PURE__ */
|
|
20903
|
-
/* @__PURE__ */
|
|
20904
|
-
|
|
21788
|
+
children: /* @__PURE__ */ jsxs48(View55, { style: styles57.detailRow, children: [
|
|
21789
|
+
/* @__PURE__ */ jsx71(
|
|
21790
|
+
TouchableOpacity25,
|
|
20905
21791
|
{
|
|
20906
|
-
style:
|
|
21792
|
+
style: styles57.backButton,
|
|
20907
21793
|
onPress: handleDetailBack,
|
|
20908
21794
|
activeOpacity: 0.7,
|
|
20909
21795
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20910
21796
|
accessibilityRole: "button",
|
|
20911
21797
|
accessibilityLabel: t("back") || "Back",
|
|
20912
|
-
children: /* @__PURE__ */
|
|
21798
|
+
children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
|
|
20913
21799
|
Path4,
|
|
20914
21800
|
{
|
|
20915
21801
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20921,36 +21807,36 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20921
21807
|
) })
|
|
20922
21808
|
}
|
|
20923
21809
|
),
|
|
20924
|
-
/* @__PURE__ */
|
|
20925
|
-
/* @__PURE__ */
|
|
20926
|
-
pageStatus ? /* @__PURE__ */
|
|
21810
|
+
/* @__PURE__ */ jsxs48(View55, { style: styles57.detailTitleWrap, children: [
|
|
21811
|
+
/* @__PURE__ */ jsx71(Text45, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21812
|
+
pageStatus ? /* @__PURE__ */ jsx71(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
20927
21813
|
] })
|
|
20928
21814
|
] })
|
|
20929
21815
|
}
|
|
20930
21816
|
),
|
|
20931
|
-
/* @__PURE__ */
|
|
21817
|
+
/* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
20932
21818
|
] });
|
|
20933
21819
|
}
|
|
20934
|
-
return /* @__PURE__ */
|
|
20935
|
-
/* @__PURE__ */
|
|
20936
|
-
|
|
21820
|
+
return /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
21821
|
+
/* @__PURE__ */ jsxs48(
|
|
21822
|
+
View55,
|
|
20937
21823
|
{
|
|
20938
21824
|
style: [
|
|
20939
|
-
|
|
21825
|
+
styles57.container,
|
|
20940
21826
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20941
21827
|
],
|
|
20942
21828
|
children: [
|
|
20943
|
-
/* @__PURE__ */
|
|
20944
|
-
onBack ? /* @__PURE__ */
|
|
20945
|
-
|
|
21829
|
+
/* @__PURE__ */ jsxs48(View55, { style: styles57.appBar, children: [
|
|
21830
|
+
onBack ? /* @__PURE__ */ jsx71(
|
|
21831
|
+
TouchableOpacity25,
|
|
20946
21832
|
{
|
|
20947
|
-
style:
|
|
21833
|
+
style: styles57.backButton,
|
|
20948
21834
|
onPress: () => navigateBack(onBack),
|
|
20949
21835
|
activeOpacity: 0.7,
|
|
20950
21836
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20951
21837
|
accessibilityRole: "button",
|
|
20952
21838
|
accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
|
|
20953
|
-
children: /* @__PURE__ */
|
|
21839
|
+
children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
|
|
20954
21840
|
Path4,
|
|
20955
21841
|
{
|
|
20956
21842
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20962,39 +21848,39 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20962
21848
|
) })
|
|
20963
21849
|
}
|
|
20964
21850
|
) : null,
|
|
20965
|
-
/* @__PURE__ */
|
|
20966
|
-
/* @__PURE__ */
|
|
20967
|
-
/* @__PURE__ */
|
|
20968
|
-
/* @__PURE__ */
|
|
20969
|
-
/* @__PURE__ */
|
|
20970
|
-
|
|
21851
|
+
/* @__PURE__ */ jsx71(View55, { style: styles57.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx71(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
|
|
21852
|
+
/* @__PURE__ */ jsxs48(View55, { style: styles57.actions, children: [
|
|
21853
|
+
/* @__PURE__ */ jsx71(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
|
|
21854
|
+
/* @__PURE__ */ jsx71(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
|
|
21855
|
+
/* @__PURE__ */ jsx71(
|
|
21856
|
+
TouchableOpacity25,
|
|
20971
21857
|
{
|
|
20972
|
-
style:
|
|
21858
|
+
style: styles57.avatarButton,
|
|
20973
21859
|
onPress: () => setMenuOpen(true),
|
|
20974
21860
|
activeOpacity: 0.7,
|
|
20975
21861
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20976
21862
|
accessibilityRole: "button",
|
|
20977
21863
|
accessibilityLabel: accountLabel,
|
|
20978
|
-
children: /* @__PURE__ */
|
|
21864
|
+
children: /* @__PURE__ */ jsx71(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
|
|
20979
21865
|
}
|
|
20980
21866
|
)
|
|
20981
21867
|
] })
|
|
20982
21868
|
] }),
|
|
20983
|
-
/* @__PURE__ */
|
|
20984
|
-
/* @__PURE__ */
|
|
20985
|
-
pageStatus ? /* @__PURE__ */
|
|
21869
|
+
/* @__PURE__ */ jsx71(View55, { style: styles57.pageHeader, children: /* @__PURE__ */ jsxs48(View55, { style: styles57.titleRow, children: [
|
|
21870
|
+
/* @__PURE__ */ jsx71(Text45, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
|
|
21871
|
+
pageStatus ? /* @__PURE__ */ jsx71(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
|
|
20986
21872
|
] }) })
|
|
20987
21873
|
]
|
|
20988
21874
|
}
|
|
20989
21875
|
),
|
|
20990
|
-
/* @__PURE__ */
|
|
21876
|
+
/* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
20991
21877
|
] });
|
|
20992
21878
|
}
|
|
20993
|
-
var
|
|
21879
|
+
var styles57 = StyleSheet58.create({
|
|
20994
21880
|
container: {
|
|
20995
21881
|
paddingHorizontal: spacing.lg,
|
|
20996
21882
|
paddingBottom: spacing.md,
|
|
20997
|
-
borderBottomWidth:
|
|
21883
|
+
borderBottomWidth: StyleSheet58.hairlineWidth
|
|
20998
21884
|
},
|
|
20999
21885
|
detailContainer: {
|
|
21000
21886
|
paddingBottom: spacing.sm
|
|
@@ -21074,10 +21960,10 @@ var styles55 = StyleSheet56.create({
|
|
|
21074
21960
|
});
|
|
21075
21961
|
|
|
21076
21962
|
// src/RedactoPrivacyCenter/components/BottomTabBar.tsx
|
|
21077
|
-
import { useState as
|
|
21078
|
-
import { Animated as Animated14, StyleSheet as
|
|
21079
|
-
import { useTranslation as
|
|
21080
|
-
import { jsx as
|
|
21963
|
+
import { useState as useState27 } from "react";
|
|
21964
|
+
import { Animated as Animated14, StyleSheet as StyleSheet59, Text as Text46, TouchableOpacity as TouchableOpacity26, View as View56 } from "react-native";
|
|
21965
|
+
import { useTranslation as useTranslation33 } from "react-i18next";
|
|
21966
|
+
import { jsx as jsx72, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
21081
21967
|
var TAB_ITEMS = [
|
|
21082
21968
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
|
|
21083
21969
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
|
|
@@ -21088,10 +21974,10 @@ var PAD_H = spacing.lg;
|
|
|
21088
21974
|
var PILL_WIDTH = 56;
|
|
21089
21975
|
var PILL_HEIGHT = 34;
|
|
21090
21976
|
function BottomTabBar({ showFooter = true }) {
|
|
21091
|
-
const { t } =
|
|
21977
|
+
const { t } = useTranslation33();
|
|
21092
21978
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
21093
21979
|
const { colors } = useTheme();
|
|
21094
|
-
const [rowWidth, setRowWidth] =
|
|
21980
|
+
const [rowWidth, setRowWidth] = useState27(0);
|
|
21095
21981
|
const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
|
|
21096
21982
|
const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
|
|
21097
21983
|
const activeIndex = TAB_ITEMS.findIndex(
|
|
@@ -21099,13 +21985,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21099
21985
|
);
|
|
21100
21986
|
const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
|
|
21101
21987
|
const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
|
|
21102
|
-
return /* @__PURE__ */
|
|
21103
|
-
/* @__PURE__ */
|
|
21104
|
-
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */
|
|
21988
|
+
return /* @__PURE__ */ jsxs49(View56, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
|
|
21989
|
+
/* @__PURE__ */ jsxs49(View56, { style: styles58.container, onLayout, children: [
|
|
21990
|
+
tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ jsx72(
|
|
21105
21991
|
Animated14.View,
|
|
21106
21992
|
{
|
|
21107
21993
|
style: [
|
|
21108
|
-
|
|
21994
|
+
styles58.pill,
|
|
21109
21995
|
{
|
|
21110
21996
|
width: PILL_WIDTH,
|
|
21111
21997
|
left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
|
|
@@ -21118,17 +22004,17 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21118
22004
|
TAB_ITEMS.map((item) => {
|
|
21119
22005
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
21120
22006
|
const label = t(item.labelKey) || item.fallback;
|
|
21121
|
-
return /* @__PURE__ */
|
|
21122
|
-
|
|
22007
|
+
return /* @__PURE__ */ jsxs49(
|
|
22008
|
+
TouchableOpacity26,
|
|
21123
22009
|
{
|
|
21124
|
-
style:
|
|
22010
|
+
style: styles58.tab,
|
|
21125
22011
|
onPress: () => navigateTo(item.page),
|
|
21126
22012
|
activeOpacity: 0.7,
|
|
21127
22013
|
accessibilityRole: "tab",
|
|
21128
22014
|
accessibilityState: { selected: isActive },
|
|
21129
22015
|
accessibilityLabel: label,
|
|
21130
22016
|
children: [
|
|
21131
|
-
/* @__PURE__ */
|
|
22017
|
+
/* @__PURE__ */ jsx72(View56, { style: styles58.iconWrap, children: /* @__PURE__ */ jsx72(
|
|
21132
22018
|
Icon,
|
|
21133
22019
|
{
|
|
21134
22020
|
name: item.icon,
|
|
@@ -21137,10 +22023,10 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21137
22023
|
strokeWidth: isActive ? 2.1 : 1.85
|
|
21138
22024
|
}
|
|
21139
22025
|
) }),
|
|
21140
|
-
/* @__PURE__ */
|
|
21141
|
-
|
|
22026
|
+
/* @__PURE__ */ jsx72(
|
|
22027
|
+
Text46,
|
|
21142
22028
|
{
|
|
21143
|
-
style: [
|
|
22029
|
+
style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
|
|
21144
22030
|
numberOfLines: 1,
|
|
21145
22031
|
children: label
|
|
21146
22032
|
}
|
|
@@ -21151,13 +22037,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21151
22037
|
);
|
|
21152
22038
|
})
|
|
21153
22039
|
] }),
|
|
21154
|
-
showFooter ? /* @__PURE__ */
|
|
21155
|
-
/* @__PURE__ */
|
|
22040
|
+
showFooter ? /* @__PURE__ */ jsx72(Footer, { inline: true }) : null,
|
|
22041
|
+
/* @__PURE__ */ jsx72(View56, { style: { height: BOTTOM_INSET } })
|
|
21156
22042
|
] });
|
|
21157
22043
|
}
|
|
21158
|
-
var
|
|
22044
|
+
var styles58 = StyleSheet59.create({
|
|
21159
22045
|
wrapper: {
|
|
21160
|
-
borderTopWidth:
|
|
22046
|
+
borderTopWidth: StyleSheet59.hairlineWidth
|
|
21161
22047
|
},
|
|
21162
22048
|
container: {
|
|
21163
22049
|
flexDirection: "row",
|