@redacto.io/consent-sdk-react-native 5.0.0-beta.1 → 5.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/dist/chunk-B2TXWC2C.mjs +60 -0
- package/dist/index.d.mts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +196 -55
- package/dist/index.mjs +153 -56
- package/dist/privacy-center.d.mts +147 -63
- package/dist/privacy-center.d.ts +147 -63
- package/dist/privacy-center.js +1499 -657
- package/dist/privacy-center.mjs +1459 -654
- package/package.json +1 -1
- package/dist/chunk-Y6FXYEAI.mjs +0 -10
package/dist/privacy-center.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,8 +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;
|
|
14327
14763
|
var FORM_PICKER_GROUP_LIMIT = 100;
|
|
14764
|
+
var LEGACY_PRODUCT_GROUP_UUID = "__legacy_flat_purposes__";
|
|
14328
14765
|
var POLL_INTERVAL = 3e4;
|
|
14329
14766
|
var NOTIFICATION_PAGE_SIZE = 10;
|
|
14330
14767
|
var TAB_TO_CATEGORY = {
|
|
@@ -14433,7 +14870,7 @@ var ModifyConsentModal = ({
|
|
|
14433
14870
|
action: "revoke",
|
|
14434
14871
|
buttonLabel: t("revokeConsent"),
|
|
14435
14872
|
buttonColor: colors.error,
|
|
14436
|
-
warningMessage: t("revokeConsentWarning"),
|
|
14873
|
+
warningMessage: selectedRecord.revoke_warning_message || t("revokeConsentWarning"),
|
|
14437
14874
|
description: nominatorLabel ? t("aboutToModifyConsentOnBehalf", { nominator: nominatorLabel }) : t("aboutToModifyConsent")
|
|
14438
14875
|
};
|
|
14439
14876
|
}
|
|
@@ -15104,7 +15541,8 @@ function ConsentManager() {
|
|
|
15104
15541
|
dataElements: (_b = selectedRecord == null ? void 0 : selectedRecord.data_elements) == null ? void 0 : _b.map((de) => ({
|
|
15105
15542
|
uuid: de.uuid,
|
|
15106
15543
|
selected: de.selected
|
|
15107
|
-
}))
|
|
15544
|
+
})),
|
|
15545
|
+
language: langParam
|
|
15108
15546
|
});
|
|
15109
15547
|
setIsModalOpen(false);
|
|
15110
15548
|
setSelectedRecord(null);
|
|
@@ -15116,7 +15554,7 @@ function ConsentManager() {
|
|
|
15116
15554
|
setIsManageLoading(false);
|
|
15117
15555
|
}
|
|
15118
15556
|
},
|
|
15119
|
-
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, fetchData, t]
|
|
15557
|
+
[organizationId, workspaceId, email, authContext, consentClient, selectedRecord, langParam, fetchData, t]
|
|
15120
15558
|
);
|
|
15121
15559
|
const handleExport = useCallback6(async () => {
|
|
15122
15560
|
if (!consentData.length) return;
|
|
@@ -15479,6 +15917,7 @@ function ActivitiesList() {
|
|
|
15479
15917
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
15480
15918
|
[accessToken, refreshToken, onError, updateTokens]
|
|
15481
15919
|
);
|
|
15920
|
+
const { langParam } = useCurrentLanguage();
|
|
15482
15921
|
const [activities, setActivities] = useState14([]);
|
|
15483
15922
|
const [totalCount, setTotalCount] = useState14(0);
|
|
15484
15923
|
const [isLoading, setIsLoading] = useState14(true);
|
|
@@ -15490,7 +15929,7 @@ function ActivitiesList() {
|
|
|
15490
15929
|
var _a3, _b, _c;
|
|
15491
15930
|
if (!organizationId || !workspaceId) return;
|
|
15492
15931
|
try {
|
|
15493
|
-
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient);
|
|
15932
|
+
const response = await fetchActivities(organizationId, workspaceId, nextOffset, PAGE_SIZE, authContext, consentClient, langParam);
|
|
15494
15933
|
if (!response) return;
|
|
15495
15934
|
const rows = (_a3 = response.data) != null ? _a3 : [];
|
|
15496
15935
|
setActivities((prev) => append ? [...prev, ...rows] : rows);
|
|
@@ -15501,7 +15940,7 @@ function ActivitiesList() {
|
|
|
15501
15940
|
if (!append) setActivities([]);
|
|
15502
15941
|
}
|
|
15503
15942
|
},
|
|
15504
|
-
[organizationId, workspaceId, authContext, consentClient]
|
|
15943
|
+
[organizationId, workspaceId, authContext, consentClient, langParam]
|
|
15505
15944
|
);
|
|
15506
15945
|
useEffect12(() => {
|
|
15507
15946
|
setIsLoading(true);
|
|
@@ -15640,10 +16079,10 @@ import { useTranslation as useTranslation13 } from "react-i18next";
|
|
|
15640
16079
|
// src/RedactoPrivacyCenter/lib/dateGroup.ts
|
|
15641
16080
|
import { useCallback as useCallback8 } from "react";
|
|
15642
16081
|
import { useTranslation as useTranslation12 } from "react-i18next";
|
|
15643
|
-
function monthKey(ts) {
|
|
16082
|
+
function monthKey(ts, locale) {
|
|
15644
16083
|
if (!ts) return "";
|
|
15645
16084
|
try {
|
|
15646
|
-
return new Date(ts).toLocaleDateString(void 0, { month: "long", year: "numeric" });
|
|
16085
|
+
return new Date(ts).toLocaleDateString(locale || void 0, { month: "long", year: "numeric" });
|
|
15647
16086
|
} catch {
|
|
15648
16087
|
return "";
|
|
15649
16088
|
}
|
|
@@ -15719,7 +16158,7 @@ function groupByTime(items, getTs, classify) {
|
|
|
15719
16158
|
);
|
|
15720
16159
|
}
|
|
15721
16160
|
function useRelativeDate() {
|
|
15722
|
-
const { t } = useTranslation12();
|
|
16161
|
+
const { t, i18n: i18n2 } = useTranslation12();
|
|
15723
16162
|
return useCallback8(
|
|
15724
16163
|
(ts) => {
|
|
15725
16164
|
if (!ts) return "";
|
|
@@ -15732,7 +16171,7 @@ function useRelativeDate() {
|
|
|
15732
16171
|
if (dayDiff <= 0) return t("today", { defaultValue: "Today" });
|
|
15733
16172
|
if (dayDiff === 1) return t("yesterday", { defaultValue: "Yesterday" });
|
|
15734
16173
|
if (dayDiff < 7) return t("daysAgo", { count: dayDiff, defaultValue: "{{count}} days ago" });
|
|
15735
|
-
return d.toLocaleDateString(void 0, {
|
|
16174
|
+
return d.toLocaleDateString(i18n2.language || void 0, {
|
|
15736
16175
|
month: "short",
|
|
15737
16176
|
day: "numeric",
|
|
15738
16177
|
...d.getFullYear() !== now.getFullYear() ? { year: "numeric" } : {}
|
|
@@ -15741,10 +16180,28 @@ function useRelativeDate() {
|
|
|
15741
16180
|
return ts;
|
|
15742
16181
|
}
|
|
15743
16182
|
},
|
|
15744
|
-
[t]
|
|
16183
|
+
[t, i18n2.language]
|
|
15745
16184
|
);
|
|
15746
16185
|
}
|
|
15747
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
|
+
|
|
15748
16205
|
// src/RedactoPrivacyCenter/components/ReceiptsList.tsx
|
|
15749
16206
|
import { Fragment as Fragment7, jsx as jsx41, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
15750
16207
|
var PAGE_SIZE2 = 10;
|
|
@@ -15780,11 +16237,10 @@ function receiptBadgeStatus(eventType) {
|
|
|
15780
16237
|
if (v.includes("EXPIR")) return "warning";
|
|
15781
16238
|
return "secondary";
|
|
15782
16239
|
}
|
|
15783
|
-
var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel }) => {
|
|
16240
|
+
var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, downloadLabel, dateLabel, eventLabel }) => {
|
|
15784
16241
|
const product = item.product_name_display || item.product_name || "";
|
|
15785
|
-
const
|
|
15786
|
-
const
|
|
15787
|
-
const badgeLabel = event || "-";
|
|
16242
|
+
const primary = product || eventLabel || "-";
|
|
16243
|
+
const badgeLabel = eventLabel || "-";
|
|
15788
16244
|
return /* @__PURE__ */ jsxs25(View30, { style: styles31.row, children: [
|
|
15789
16245
|
/* @__PURE__ */ jsx41(NameAvatar, { name: primary, seed: item.uuid || primary, size: "sm" }),
|
|
15790
16246
|
/* @__PURE__ */ jsxs25(View30, { style: styles31.body, children: [
|
|
@@ -15811,7 +16267,7 @@ var ReceiptRow = React15.memo(({ item, colors, downloading, onDownload, download
|
|
|
15811
16267
|
});
|
|
15812
16268
|
ReceiptRow.displayName = "ReceiptRow";
|
|
15813
16269
|
function ReceiptsList() {
|
|
15814
|
-
const { t } = useTranslation13();
|
|
16270
|
+
const { t, i18n: i18n2 } = useTranslation13();
|
|
15815
16271
|
const { accessToken, refreshToken, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
15816
16272
|
const { consentClient } = useBaseUrl();
|
|
15817
16273
|
const { colors } = useTheme();
|
|
@@ -15896,14 +16352,18 @@ function ReceiptsList() {
|
|
|
15896
16352
|
const sections = useMemo13(() => {
|
|
15897
16353
|
const map = /* @__PURE__ */ new Map();
|
|
15898
16354
|
for (const r of receipts) {
|
|
15899
|
-
const key = monthKey(r.created_at);
|
|
16355
|
+
const key = monthKey(r.created_at, i18n2.language);
|
|
15900
16356
|
const arr = map.get(key);
|
|
15901
16357
|
if (arr) arr.push(r);
|
|
15902
16358
|
else map.set(key, [r]);
|
|
15903
16359
|
}
|
|
15904
16360
|
return Array.from(map, ([title, data]) => ({ title, data }));
|
|
15905
|
-
}, [receipts]);
|
|
16361
|
+
}, [receipts, i18n2.language]);
|
|
15906
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
|
+
};
|
|
15907
16367
|
const handleScroll = useCallback9(
|
|
15908
16368
|
(e) => {
|
|
15909
16369
|
const { layoutMeasurement, contentOffset, contentSize } = e.nativeEvent;
|
|
@@ -15985,7 +16445,8 @@ function ReceiptsList() {
|
|
|
15985
16445
|
downloading: downloadingUuid === item.uuid,
|
|
15986
16446
|
onDownload: handleDownload,
|
|
15987
16447
|
downloadLabel,
|
|
15988
|
-
dateLabel: relativeLabel(item.created_at)
|
|
16448
|
+
dateLabel: relativeLabel(item.created_at),
|
|
16449
|
+
eventLabel: eventLabelFor(item)
|
|
15989
16450
|
}
|
|
15990
16451
|
)
|
|
15991
16452
|
] }, `${item.uuid || item.created_at}-${index}`)) }, section2.title)),
|
|
@@ -16141,6 +16602,25 @@ var uploadFileWithS2S = async ({
|
|
|
16141
16602
|
}
|
|
16142
16603
|
};
|
|
16143
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
|
+
|
|
16144
16624
|
// src/RedactoPrivacyCenter/lib/filePicker.ts
|
|
16145
16625
|
import { Alert as Alert4 } from "react-native";
|
|
16146
16626
|
async function pickFile() {
|
|
@@ -16315,19 +16795,32 @@ var consentGroupToFormProductGroup = (group) => {
|
|
|
16315
16795
|
};
|
|
16316
16796
|
};
|
|
16317
16797
|
var purposeItemToFormPurpose = (purpose) => {
|
|
16318
|
-
var _a3, _b;
|
|
16798
|
+
var _a3, _b, _c, _d, _e, _f;
|
|
16319
16799
|
return {
|
|
16320
|
-
|
|
16321
|
-
|
|
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 : "",
|
|
16322
16805
|
name: purpose.name,
|
|
16323
|
-
description: (
|
|
16806
|
+
description: (_e = purpose.description) != null ? _e : "",
|
|
16324
16807
|
industries: "",
|
|
16325
16808
|
selected: false,
|
|
16326
16809
|
given_consent: false,
|
|
16327
16810
|
status: purpose.status,
|
|
16328
16811
|
validity: null,
|
|
16329
16812
|
enabled: true,
|
|
16330
|
-
data_elements: ((
|
|
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))
|
|
16331
16824
|
};
|
|
16332
16825
|
};
|
|
16333
16826
|
var consentDataElementToFormDataElement = (element) => ({
|
|
@@ -16364,16 +16857,10 @@ var buildGroupDataElements = (group) => {
|
|
|
16364
16857
|
// src/RedactoPrivacyCenter/components/Form.tsx
|
|
16365
16858
|
import { Fragment as Fragment9, jsx as jsx43, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
16366
16859
|
var TOTAL_STEPS = 3;
|
|
16367
|
-
var PRODUCT_SCOPED_REQUEST_TYPES = /* @__PURE__ */ new Set([
|
|
16368
|
-
"ACCESS" /* ACCESS */,
|
|
16369
|
-
"erasure" /* ERASURE */,
|
|
16370
|
-
"CORRECTION" /* CORRECTION */
|
|
16371
|
-
]);
|
|
16372
|
-
var isProductScopedRequestType = (rt) => PRODUCT_SCOPED_REQUEST_TYPES.has(rt);
|
|
16373
16860
|
function Form({ onCreateRequest }) {
|
|
16374
16861
|
const { t } = useTranslation15();
|
|
16375
16862
|
const { accessToken, refreshToken, email, organizationId, workspaceId, updateTokens, onError } = useAuth();
|
|
16376
|
-
const { consentClient, baseUrl
|
|
16863
|
+
const { consentClient, baseUrl } = useBaseUrl();
|
|
16377
16864
|
const { colors } = useTheme();
|
|
16378
16865
|
const requestTypeLabels = useRequestTypeLabels();
|
|
16379
16866
|
const timePeriodOptions = useTimePeriodOptions();
|
|
@@ -16410,10 +16897,10 @@ function Form({ onCreateRequest }) {
|
|
|
16410
16897
|
});
|
|
16411
16898
|
const [uploadedDocs, setUploadedDocs] = useState16([]);
|
|
16412
16899
|
const [isUploading, setIsUploading] = useState16(false);
|
|
16413
|
-
const
|
|
16900
|
+
const withUserConsentPickerGroups = useCallback10(
|
|
16414
16901
|
async (form, language) => {
|
|
16415
16902
|
var _a3, _b;
|
|
16416
|
-
if (!
|
|
16903
|
+
if (!organizationId || !workspaceId) {
|
|
16417
16904
|
return form;
|
|
16418
16905
|
}
|
|
16419
16906
|
const consents = await fetchUserConsents({
|
|
@@ -16428,16 +16915,18 @@ function Form({ onCreateRequest }) {
|
|
|
16428
16915
|
authContext,
|
|
16429
16916
|
consentClient
|
|
16430
16917
|
});
|
|
16431
|
-
|
|
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) {
|
|
16432
16921
|
return form;
|
|
16433
16922
|
}
|
|
16434
16923
|
return {
|
|
16435
16924
|
...form,
|
|
16436
|
-
direct_groups:
|
|
16437
|
-
nominated_groups:
|
|
16925
|
+
direct_groups: direct.map(consentGroupToFormProductGroup),
|
|
16926
|
+
nominated_groups: nominated.map(consentGroupToFormProductGroup)
|
|
16438
16927
|
};
|
|
16439
16928
|
},
|
|
16440
|
-
[
|
|
16929
|
+
[organizationId, workspaceId, authContext, consentClient]
|
|
16441
16930
|
);
|
|
16442
16931
|
useEffect14(() => {
|
|
16443
16932
|
if (!organizationId || !workspaceId || !contact) return;
|
|
@@ -16445,7 +16934,7 @@ function Form({ onCreateRequest }) {
|
|
|
16445
16934
|
setIsLoading(true);
|
|
16446
16935
|
getFormData(organizationId, workspaceId, contact, false, false, authContext, consentClient, langParam).then(async (data) => {
|
|
16447
16936
|
if (!data) return;
|
|
16448
|
-
const withGroups = await
|
|
16937
|
+
const withGroups = await withUserConsentPickerGroups(data, langParam);
|
|
16449
16938
|
if (!isCancelled) setFormDataResponse(withGroups);
|
|
16450
16939
|
}).catch((error) => {
|
|
16451
16940
|
console.warn("Error fetching form data:", error);
|
|
@@ -16462,16 +16951,24 @@ function Form({ onCreateRequest }) {
|
|
|
16462
16951
|
authContext,
|
|
16463
16952
|
consentClient,
|
|
16464
16953
|
langParam,
|
|
16465
|
-
|
|
16954
|
+
withUserConsentPickerGroups
|
|
16466
16955
|
]);
|
|
16467
16956
|
const allGroups = useMemo14(() => {
|
|
16468
16957
|
var _a3, _b;
|
|
16469
16958
|
if (!formDataResponse) return [];
|
|
16470
|
-
|
|
16959
|
+
const groups = [
|
|
16471
16960
|
...(_a3 = formDataResponse.direct_groups) != null ? _a3 : [],
|
|
16472
16961
|
...(_b = formDataResponse.nominated_groups) != null ? _b : []
|
|
16473
16962
|
];
|
|
16474
|
-
|
|
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]);
|
|
16475
16972
|
const skipProductStep = allGroups.length === 1;
|
|
16476
16973
|
const selectedGroup = useMemo14(() => {
|
|
16477
16974
|
var _a3, _b;
|
|
@@ -16503,7 +17000,7 @@ function Form({ onCreateRequest }) {
|
|
|
16503
17000
|
setSelectedProductKey(null);
|
|
16504
17001
|
}
|
|
16505
17002
|
setNominationData({ nominee_email: "", nominee_mobile: "" });
|
|
16506
|
-
if (requestType
|
|
17003
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */) && grievanceOptions.length > 0) {
|
|
16507
17004
|
const resetGrievances = grievanceOptions.reduce(
|
|
16508
17005
|
(acc, option) => {
|
|
16509
17006
|
acc[option.value] = false;
|
|
@@ -16532,12 +17029,10 @@ function Form({ onCreateRequest }) {
|
|
|
16532
17029
|
() => groupPurposes.filter((p) => selectedPurposes.has(p.uuid)).map((p) => p.name).filter(Boolean),
|
|
16533
17030
|
[groupPurposes, selectedPurposes]
|
|
16534
17031
|
);
|
|
16535
|
-
const selectedErasurePurposeNames = useMemo14(
|
|
16536
|
-
|
|
16537
|
-
|
|
16538
|
-
|
|
16539
|
-
return selectedErasurePurposeList.join(", ");
|
|
16540
|
-
}, [selectedErasurePurposeList, t]);
|
|
17032
|
+
const selectedErasurePurposeNames = useMemo14(
|
|
17033
|
+
() => resolveErasurePurposeNames(selectedErasurePurposeList, t("revokeConsentModalYourPurposes")),
|
|
17034
|
+
[selectedErasurePurposeList, t]
|
|
17035
|
+
);
|
|
16541
17036
|
const togglePurpose = useCallback10(
|
|
16542
17037
|
(purpose) => {
|
|
16543
17038
|
const uuid = purpose.uuid;
|
|
@@ -16644,7 +17139,7 @@ function Form({ onCreateRequest }) {
|
|
|
16644
17139
|
if (isProductScopedRequestType(requestType)) {
|
|
16645
17140
|
if (allGroups.length === 0) return false;
|
|
16646
17141
|
if (!selectedGroup) return false;
|
|
16647
|
-
if (requestType
|
|
17142
|
+
if (isRequestType(requestType, "CORRECTION" /* CORRECTION */)) {
|
|
16648
17143
|
if (selectedCorrectionFields.size === 0) return false;
|
|
16649
17144
|
return Array.from(selectedCorrectionFields).every((fieldUuid) => {
|
|
16650
17145
|
var _a3, _b;
|
|
@@ -16652,15 +17147,15 @@ function Form({ onCreateRequest }) {
|
|
|
16652
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()));
|
|
16653
17148
|
});
|
|
16654
17149
|
}
|
|
16655
|
-
if (requestType
|
|
17150
|
+
if (isRequestType(requestType, "ACCESS" /* ACCESS */) || isErasureRequestType(requestType)) {
|
|
16656
17151
|
return selectedPurposes.size > 0;
|
|
16657
17152
|
}
|
|
16658
17153
|
return false;
|
|
16659
17154
|
}
|
|
16660
|
-
if (requestType
|
|
17155
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
16661
17156
|
return Object.values(selectedGrievances).some(Boolean);
|
|
16662
17157
|
}
|
|
16663
|
-
if (requestType
|
|
17158
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
16664
17159
|
return Boolean(nominationData.nominee_email);
|
|
16665
17160
|
}
|
|
16666
17161
|
return false;
|
|
@@ -16674,9 +17169,17 @@ function Form({ onCreateRequest }) {
|
|
|
16674
17169
|
selectedGrievances,
|
|
16675
17170
|
nominationData
|
|
16676
17171
|
]);
|
|
16677
|
-
const isFormValid = useMemo14(
|
|
17172
|
+
const isFormValid = useMemo14(
|
|
17173
|
+
() => Boolean(contact.trim()) && detailsValid && confirmChecked,
|
|
17174
|
+
[contact, detailsValid, confirmChecked]
|
|
17175
|
+
);
|
|
16678
17176
|
const handleUpload = useCallback10(async () => {
|
|
16679
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
|
+
}
|
|
16680
17183
|
try {
|
|
16681
17184
|
const file = await pickFile();
|
|
16682
17185
|
if (!file) return;
|
|
@@ -16693,11 +17196,11 @@ function Form({ onCreateRequest }) {
|
|
|
16693
17196
|
"payload",
|
|
16694
17197
|
JSON.stringify({
|
|
16695
17198
|
organization_uuid: organizationId || "",
|
|
16696
|
-
space: `privacy/${
|
|
17199
|
+
space: `privacy/${caseUuid}`,
|
|
16697
17200
|
uuid: docUuid,
|
|
16698
17201
|
is_public: true,
|
|
16699
17202
|
allow_ai_processing: true,
|
|
16700
|
-
metadata: { group_by: "privacy", product: "privacy_center" }
|
|
17203
|
+
metadata: { group_by: "privacy", case_uuid: caseUuid, product: "privacy_center" }
|
|
16701
17204
|
})
|
|
16702
17205
|
);
|
|
16703
17206
|
const result = await uploadFileWithS2S({
|
|
@@ -16717,18 +17220,28 @@ function Form({ onCreateRequest }) {
|
|
|
16717
17220
|
} finally {
|
|
16718
17221
|
setIsUploading(false);
|
|
16719
17222
|
}
|
|
16720
|
-
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t]);
|
|
17223
|
+
}, [organizationId, workspaceId, authContext, consentClient, baseUrl, t, formDataResponse]);
|
|
16721
17224
|
const removeUploadedDoc = useCallback10((uuid) => {
|
|
16722
17225
|
setUploadedDocs((prev) => prev.filter((d) => d.uuid !== uuid));
|
|
16723
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
|
+
);
|
|
16724
17233
|
const handleSubmit = useCallback10(async (revoke = false) => {
|
|
16725
|
-
var _a3
|
|
16726
|
-
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse)
|
|
17234
|
+
var _a3;
|
|
17235
|
+
if (!organizationId || !workspaceId || !contact || !requestType || !formDataResponse) {
|
|
17236
|
+
alertSubmitFailed();
|
|
17237
|
+
return;
|
|
17238
|
+
}
|
|
16727
17239
|
setRevokeConsentOnFulfilment(revoke);
|
|
16728
17240
|
setIsSubmitting(true);
|
|
16729
17241
|
try {
|
|
16730
17242
|
const isProductScoped = isProductScopedRequestType(requestType);
|
|
16731
|
-
const
|
|
17243
|
+
const isLegacyFlatSelection = (selectedGroup == null ? void 0 : selectedGroup.product_uuid) === LEGACY_PRODUCT_GROUP_UUID;
|
|
17244
|
+
const anchorGroup = isProductScoped && !isLegacyFlatSelection ? selectedGroup : null;
|
|
16732
17245
|
const updatePurposes = Array.from(selectedPurposes).map((uuid) => ({
|
|
16733
17246
|
purpose_uuid: uuid,
|
|
16734
17247
|
data_element_uuids: Array.from(selectedDataElements.get(uuid) || [])
|
|
@@ -16749,27 +17262,27 @@ function Form({ onCreateRequest }) {
|
|
|
16749
17262
|
purposes: updatePurposes,
|
|
16750
17263
|
correction_data: correctionData,
|
|
16751
17264
|
grievance_types: grievanceTypes,
|
|
16752
|
-
...requestType
|
|
17265
|
+
...isRequestType(requestType, "nomination" /* NOMINATION */) ? { nomination_data: nominationData } : {}
|
|
16753
17266
|
},
|
|
16754
|
-
time_period: requestType
|
|
17267
|
+
time_period: isRequestType(requestType, "ACCESS" /* ACCESS */) ? parseInt(timePeriod || "30", 10) : 0,
|
|
16755
17268
|
requestor_note: additionalNote || "",
|
|
16756
|
-
...requestType
|
|
17269
|
+
...erasureConsentPayload(requestType, revoke),
|
|
16757
17270
|
...anchorGroup ? { product_uuid: anchorGroup.product_uuid } : {},
|
|
16758
17271
|
...(anchorGroup == null ? void 0 : anchorGroup.nominator) ? { data_principal_uuid: anchorGroup.nominator.uuid } : {}
|
|
16759
17272
|
};
|
|
16760
17273
|
const response = await createCaseRequest(organizationId, workspaceId, request, false, false, authContext, consentClient);
|
|
16761
|
-
const
|
|
16762
|
-
const newCaseId = (
|
|
17274
|
+
const caseRef = extractCaseRef(response);
|
|
17275
|
+
const newCaseId = (caseRef == null ? void 0 : caseRef.case_id) || (caseRef == null ? void 0 : caseRef.uuid) || null;
|
|
16763
17276
|
if (newCaseId) {
|
|
16764
17277
|
setCaseId(newCaseId);
|
|
16765
|
-
setSubmittedProductName((
|
|
17278
|
+
setSubmittedProductName((_a3 = anchorGroup == null ? void 0 : anchorGroup.product_name) != null ? _a3 : "");
|
|
16766
17279
|
setIsSubmitted(true);
|
|
16767
17280
|
} else {
|
|
16768
|
-
|
|
17281
|
+
alertSubmitFailed();
|
|
16769
17282
|
}
|
|
16770
17283
|
} catch (error) {
|
|
16771
17284
|
console.warn("Error submitting request:", error);
|
|
16772
|
-
|
|
17285
|
+
alertSubmitFailed(error == null ? void 0 : error.message);
|
|
16773
17286
|
} finally {
|
|
16774
17287
|
setIsSubmitting(false);
|
|
16775
17288
|
}
|
|
@@ -16792,11 +17305,13 @@ function Form({ onCreateRequest }) {
|
|
|
16792
17305
|
consentClient,
|
|
16793
17306
|
groupDataElements,
|
|
16794
17307
|
uploadedDocs,
|
|
16795
|
-
|
|
17308
|
+
alertSubmitFailed
|
|
16796
17309
|
]);
|
|
16797
17310
|
const handleSubmitClick = useCallback10(() => {
|
|
16798
|
-
if (!isFormValid)
|
|
16799
|
-
|
|
17311
|
+
if (!isFormValid) {
|
|
17312
|
+
return;
|
|
17313
|
+
}
|
|
17314
|
+
if (isErasureRequestType(requestType)) {
|
|
16800
17315
|
setIsErasureConsentModalOpen(true);
|
|
16801
17316
|
return;
|
|
16802
17317
|
}
|
|
@@ -16885,7 +17400,7 @@ function Form({ onCreateRequest }) {
|
|
|
16885
17400
|
if (groupPurposes.length === 0) {
|
|
16886
17401
|
return /* @__PURE__ */ jsx43(Text25, { style: [styles33.placeholder, { color: colors.textSecondary }], children: t("noPurposesAvailable") || "No purposes available" });
|
|
16887
17402
|
}
|
|
16888
|
-
const isErasure = requestType
|
|
17403
|
+
const isErasure = isErasureRequestType(requestType);
|
|
16889
17404
|
const allPurposesSelected = groupPurposes.every(
|
|
16890
17405
|
(p) => (p.data_elements || []).every((de) => {
|
|
16891
17406
|
var _a3;
|
|
@@ -17005,18 +17520,18 @@ function Form({ onCreateRequest }) {
|
|
|
17005
17520
|
] }),
|
|
17006
17521
|
selectedGroup ? /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
17007
17522
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("requestDetails") }),
|
|
17008
|
-
/* @__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() })
|
|
17009
17524
|
] }) : /* @__PURE__ */ jsxs27(View32, { style: [styles33.hintCard, { backgroundColor: colors.surfaceAlt }], children: [
|
|
17010
17525
|
/* @__PURE__ */ jsx43(Icon, { name: "circle-alert", size: 18, color: colors.textSecondary }),
|
|
17011
17526
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.hintText, { color: colors.textSecondary }], children: t("selectProductFirst", { defaultValue: "Select a product to continue" }) })
|
|
17012
17527
|
] }),
|
|
17013
|
-
requestType
|
|
17528
|
+
isRequestType(requestType, "ACCESS" /* ACCESS */) && selectedGroup ? /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
17014
17529
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("timePeriod") }),
|
|
17015
17530
|
/* @__PURE__ */ jsx43(PCSelect, { value: timePeriod, options: timePeriodOptions, onChange: setTimePeriod, placeholder: t("timePeriod") })
|
|
17016
17531
|
] }) : null
|
|
17017
17532
|
] });
|
|
17018
17533
|
}
|
|
17019
|
-
if (requestType
|
|
17534
|
+
if (isRequestType(requestType, "grievance" /* GRIEVANCE */)) {
|
|
17020
17535
|
if (grievanceOptions.length === 0) {
|
|
17021
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" }) });
|
|
17022
17537
|
}
|
|
@@ -17032,7 +17547,7 @@ function Form({ onCreateRequest }) {
|
|
|
17032
17547
|
] })
|
|
17033
17548
|
] }) });
|
|
17034
17549
|
}
|
|
17035
|
-
if (requestType
|
|
17550
|
+
if (isRequestType(requestType, "nomination" /* NOMINATION */)) {
|
|
17036
17551
|
return /* @__PURE__ */ jsx43(View32, { style: styles33.stepBody, children: /* @__PURE__ */ jsxs27(View32, { style: styles33.section, children: [
|
|
17037
17552
|
/* @__PURE__ */ jsx43(Text25, { style: [styles33.sectionLabel, { color: colors.textSecondary }], children: t("enterNomineeDetails") }),
|
|
17038
17553
|
/* @__PURE__ */ jsxs27(View32, { style: [styles33.sectionCard, elevation.card, { backgroundColor: colors.surface }], children: [
|
|
@@ -18097,6 +18612,7 @@ function useUnreadCount() {
|
|
|
18097
18612
|
const loadRef = useRef8();
|
|
18098
18613
|
loadRef.current = async () => {
|
|
18099
18614
|
if (!organizationId || !workspaceId) return;
|
|
18615
|
+
if (isRefreshBlocked(authContext)) return;
|
|
18100
18616
|
const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
|
|
18101
18617
|
if (res && typeof res.count === "number") setCount(res.count);
|
|
18102
18618
|
};
|
|
@@ -18422,17 +18938,255 @@ function PrivacyCenterEmptyState() {
|
|
|
18422
18938
|
return /* @__PURE__ */ jsx49(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
|
|
18423
18939
|
}
|
|
18424
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
|
+
|
|
18425
19179
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
18426
|
-
import { useState as
|
|
18427
|
-
import { View as
|
|
18428
|
-
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";
|
|
18429
19183
|
|
|
18430
19184
|
// src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
|
|
18431
|
-
import { View as
|
|
18432
|
-
import { useTranslation as
|
|
18433
|
-
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";
|
|
18434
19188
|
function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
18435
|
-
const { t } =
|
|
19189
|
+
const { t } = useTranslation22();
|
|
18436
19190
|
const { colors } = useTheme();
|
|
18437
19191
|
const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
|
|
18438
19192
|
const details = selectedCase.request_details;
|
|
@@ -18464,36 +19218,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18464
19218
|
}
|
|
18465
19219
|
const description = selectedCase.description_display || selectedCase.description;
|
|
18466
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);
|
|
18467
|
-
return /* @__PURE__ */
|
|
18468
|
-
/* @__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) => {
|
|
18469
19223
|
const isLast = i === steps.length - 1;
|
|
18470
|
-
return /* @__PURE__ */
|
|
18471
|
-
/* @__PURE__ */
|
|
18472
|
-
/* @__PURE__ */
|
|
18473
|
-
|
|
19224
|
+
return /* @__PURE__ */ jsxs33(View40, { style: styles41.stepRow, children: [
|
|
19225
|
+
/* @__PURE__ */ jsxs33(View40, { style: styles41.gutter, children: [
|
|
19226
|
+
/* @__PURE__ */ jsx54(
|
|
19227
|
+
View40,
|
|
18474
19228
|
{
|
|
18475
19229
|
style: [
|
|
18476
|
-
|
|
19230
|
+
styles41.dot,
|
|
18477
19231
|
step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
|
|
18478
19232
|
],
|
|
18479
|
-
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
|
|
18480
19234
|
}
|
|
18481
19235
|
),
|
|
18482
|
-
!isLast ? /* @__PURE__ */
|
|
19236
|
+
!isLast ? /* @__PURE__ */ jsx54(View40, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
|
|
18483
19237
|
] }),
|
|
18484
|
-
/* @__PURE__ */
|
|
18485
|
-
/* @__PURE__ */
|
|
18486
|
-
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
|
|
18487
19241
|
] })
|
|
18488
19242
|
] }, `${step.label}-${i}`);
|
|
18489
19243
|
}) }),
|
|
18490
|
-
hasDetails ? /* @__PURE__ */
|
|
18491
|
-
description ? /* @__PURE__ */
|
|
18492
|
-
/* @__PURE__ */
|
|
18493
|
-
/* @__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 })
|
|
18494
19248
|
] }) : null,
|
|
18495
|
-
(details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */
|
|
18496
|
-
/* @__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" }),
|
|
18497
19251
|
details.purposes.map((rawP, idx) => {
|
|
18498
19252
|
const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
|
|
18499
19253
|
const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
|
|
@@ -18501,10 +19255,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18501
19255
|
const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
|
|
18502
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)) : [];
|
|
18503
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 : [];
|
|
18504
|
-
return /* @__PURE__ */
|
|
18505
|
-
/* @__PURE__ */
|
|
18506
|
-
purposeDescription ? /* @__PURE__ */
|
|
18507
|
-
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: [
|
|
18508
19262
|
dataElementUuids.length,
|
|
18509
19263
|
" ",
|
|
18510
19264
|
t("dataElements") || "data elements"
|
|
@@ -18512,44 +19266,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
|
|
|
18512
19266
|
] }, purposeId);
|
|
18513
19267
|
})
|
|
18514
19268
|
] }) : null,
|
|
18515
|
-
(details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */
|
|
18516
|
-
/* @__PURE__ */
|
|
18517
|
-
details.correction_data.map((item, idx) => /* @__PURE__ */
|
|
18518
|
-
/* @__PURE__ */
|
|
18519
|
-
/* @__PURE__ */
|
|
18520
|
-
/* @__PURE__ */
|
|
18521
|
-
/* @__PURE__ */
|
|
18522
|
-
/* @__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 || "-" })
|
|
18523
19277
|
] }),
|
|
18524
|
-
/* @__PURE__ */
|
|
18525
|
-
/* @__PURE__ */
|
|
18526
|
-
/* @__PURE__ */
|
|
18527
|
-
/* @__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 || "-" })
|
|
18528
19282
|
] })
|
|
18529
19283
|
] })
|
|
18530
19284
|
] }, idx))
|
|
18531
19285
|
] }) : null,
|
|
18532
|
-
(details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */
|
|
18533
|
-
/* @__PURE__ */
|
|
18534
|
-
/* @__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)) })
|
|
18535
19289
|
] }) : null,
|
|
18536
|
-
(details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */
|
|
18537
|
-
/* @__PURE__ */
|
|
18538
|
-
details.nomination_data.nominee_email ? /* @__PURE__ */
|
|
18539
|
-
/* @__PURE__ */
|
|
18540
|
-
/* @__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 })
|
|
18541
19295
|
] }) : null,
|
|
18542
|
-
details.nomination_data.nominee_mobile ? /* @__PURE__ */
|
|
18543
|
-
/* @__PURE__ */
|
|
18544
|
-
/* @__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 })
|
|
18545
19299
|
] }) : null
|
|
18546
19300
|
] }) : null
|
|
18547
19301
|
] }) : null,
|
|
18548
|
-
/* @__PURE__ */
|
|
19302
|
+
/* @__PURE__ */ jsx54(View40, { style: { marginTop: "auto" }, children: /* @__PURE__ */ jsx54(Footer, {}) })
|
|
18549
19303
|
] });
|
|
18550
19304
|
}
|
|
18551
19305
|
var DOT = 22;
|
|
18552
|
-
var
|
|
19306
|
+
var styles41 = StyleSheet42.create({
|
|
18553
19307
|
container: {
|
|
18554
19308
|
flex: 1
|
|
18555
19309
|
},
|
|
@@ -18670,21 +19424,21 @@ var styles39 = StyleSheet40.create({
|
|
|
18670
19424
|
});
|
|
18671
19425
|
|
|
18672
19426
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
18673
|
-
import { useState as
|
|
18674
|
-
import { View as
|
|
18675
|
-
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";
|
|
18676
19430
|
|
|
18677
19431
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
18678
|
-
import
|
|
18679
|
-
import { useTranslation as
|
|
19432
|
+
import React23 from "react";
|
|
19433
|
+
import { useTranslation as useTranslation24 } from "react-i18next";
|
|
18680
19434
|
|
|
18681
19435
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18682
|
-
import
|
|
18683
|
-
import { StyleSheet as
|
|
19436
|
+
import React22 from "react";
|
|
19437
|
+
import { StyleSheet as StyleSheet44, Text as Text33, View as View42 } from "react-native";
|
|
18684
19438
|
|
|
18685
19439
|
// src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
|
|
18686
|
-
import { View as
|
|
18687
|
-
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";
|
|
18688
19442
|
function AttachmentCard({ doc }) {
|
|
18689
19443
|
const { colors } = useTheme();
|
|
18690
19444
|
const downloadUrl = getDownloadUrl(doc.file_url);
|
|
@@ -18693,28 +19447,28 @@ function AttachmentCard({ doc }) {
|
|
|
18693
19447
|
Linking.openURL(downloadUrl);
|
|
18694
19448
|
}
|
|
18695
19449
|
};
|
|
18696
|
-
return /* @__PURE__ */
|
|
18697
|
-
|
|
19450
|
+
return /* @__PURE__ */ jsxs34(
|
|
19451
|
+
TouchableOpacity16,
|
|
18698
19452
|
{
|
|
18699
|
-
style: [
|
|
19453
|
+
style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
|
|
18700
19454
|
onPress: handlePress,
|
|
18701
19455
|
disabled: !downloadUrl,
|
|
18702
19456
|
activeOpacity: 0.7,
|
|
18703
19457
|
children: [
|
|
18704
|
-
/* @__PURE__ */
|
|
18705
|
-
/* @__PURE__ */
|
|
18706
|
-
/* @__PURE__ */
|
|
18707
|
-
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
|
|
18708
19462
|
] })
|
|
18709
19463
|
]
|
|
18710
19464
|
}
|
|
18711
19465
|
);
|
|
18712
19466
|
}
|
|
18713
|
-
var
|
|
19467
|
+
var styles42 = StyleSheet43.create({
|
|
18714
19468
|
container: {
|
|
18715
19469
|
flexDirection: "row",
|
|
18716
19470
|
alignItems: "center",
|
|
18717
|
-
borderWidth:
|
|
19471
|
+
borderWidth: StyleSheet43.hairlineWidth,
|
|
18718
19472
|
borderRadius: radii.md,
|
|
18719
19473
|
paddingHorizontal: spacing.sm + 2,
|
|
18720
19474
|
paddingVertical: spacing.sm,
|
|
@@ -18734,11 +19488,11 @@ var styles40 = StyleSheet41.create({
|
|
|
18734
19488
|
});
|
|
18735
19489
|
|
|
18736
19490
|
// src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
|
|
18737
|
-
import { jsx as
|
|
19491
|
+
import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
18738
19492
|
var AVATAR_SIZE = 28;
|
|
18739
19493
|
var AVATAR_GUTTER = 36;
|
|
18740
19494
|
function TeamAvatar({ tint }) {
|
|
18741
|
-
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 }) });
|
|
18742
19496
|
}
|
|
18743
19497
|
function ChatBubbleImpl({
|
|
18744
19498
|
message,
|
|
@@ -18765,28 +19519,28 @@ function ChatBubbleImpl({
|
|
|
18765
19519
|
borderBottomRightRadius: BUBBLE_RADIUS,
|
|
18766
19520
|
borderBottomLeftRadius: tailRadius
|
|
18767
19521
|
};
|
|
18768
|
-
const bubble = /* @__PURE__ */
|
|
18769
|
-
!isPrincipal && isFirstInGroup ? /* @__PURE__ */
|
|
18770
|
-
message.body ? /* @__PURE__ */
|
|
18771
|
-
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
|
|
18772
19526
|
] });
|
|
18773
|
-
return /* @__PURE__ */
|
|
18774
|
-
|
|
19527
|
+
return /* @__PURE__ */ jsxs35(
|
|
19528
|
+
View42,
|
|
18775
19529
|
{
|
|
18776
19530
|
style: [
|
|
18777
|
-
|
|
18778
|
-
isPrincipal ?
|
|
19531
|
+
styles43.row,
|
|
19532
|
+
isPrincipal ? styles43.rowRight : styles43.rowLeft,
|
|
18779
19533
|
{ marginTop: isFirstInGroup ? spacing.md : 2 }
|
|
18780
19534
|
],
|
|
18781
19535
|
children: [
|
|
18782
|
-
!isPrincipal ? /* @__PURE__ */
|
|
18783
|
-
/* @__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: [
|
|
18784
19538
|
bubble,
|
|
18785
|
-
isLastInGroup ? /* @__PURE__ */
|
|
18786
|
-
|
|
19539
|
+
isLastInGroup ? /* @__PURE__ */ jsx56(
|
|
19540
|
+
Text33,
|
|
18787
19541
|
{
|
|
18788
19542
|
style: [
|
|
18789
|
-
|
|
19543
|
+
styles43.timestamp,
|
|
18790
19544
|
{ color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
|
|
18791
19545
|
],
|
|
18792
19546
|
children: formatMessageTime(timestamp)
|
|
@@ -18797,8 +19551,8 @@ function ChatBubbleImpl({
|
|
|
18797
19551
|
}
|
|
18798
19552
|
);
|
|
18799
19553
|
}
|
|
18800
|
-
var ChatBubble =
|
|
18801
|
-
var
|
|
19554
|
+
var ChatBubble = React22.memo(ChatBubbleImpl);
|
|
19555
|
+
var styles43 = StyleSheet44.create({
|
|
18802
19556
|
row: {
|
|
18803
19557
|
flexDirection: "row",
|
|
18804
19558
|
paddingHorizontal: spacing.md,
|
|
@@ -18858,9 +19612,9 @@ var styles41 = StyleSheet42.create({
|
|
|
18858
19612
|
});
|
|
18859
19613
|
|
|
18860
19614
|
// src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
|
|
18861
|
-
import { View as
|
|
18862
|
-
import { useTranslation as
|
|
18863
|
-
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";
|
|
18864
19618
|
var STATUS_BADGE_MAP = {
|
|
18865
19619
|
pending: "warning",
|
|
18866
19620
|
under_review: "info",
|
|
@@ -18880,20 +19634,20 @@ function humanize(value) {
|
|
|
18880
19634
|
}
|
|
18881
19635
|
function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
|
|
18882
19636
|
var _a3;
|
|
18883
|
-
const { t } =
|
|
19637
|
+
const { t } = useTranslation23();
|
|
18884
19638
|
const { colors } = useTheme();
|
|
18885
19639
|
const meta = message.document_request_metadata;
|
|
18886
19640
|
if (!meta) return null;
|
|
18887
19641
|
const status = meta.document_request_status;
|
|
18888
19642
|
const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
|
|
18889
19643
|
const requestEventUuid = meta.document_request_uuid;
|
|
18890
|
-
return /* @__PURE__ */
|
|
18891
|
-
/* @__PURE__ */
|
|
18892
|
-
/* @__PURE__ */
|
|
18893
|
-
/* @__PURE__ */
|
|
18894
|
-
/* @__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" })
|
|
18895
19649
|
] }),
|
|
18896
|
-
/* @__PURE__ */
|
|
19650
|
+
/* @__PURE__ */ jsx57(
|
|
18897
19651
|
PCBadge,
|
|
18898
19652
|
{
|
|
18899
19653
|
status: STATUS_BADGE_MAP[status] || "info",
|
|
@@ -18901,30 +19655,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
|
|
|
18901
19655
|
}
|
|
18902
19656
|
)
|
|
18903
19657
|
] }),
|
|
18904
|
-
meta.accepted_document ? /* @__PURE__ */
|
|
19658
|
+
meta.accepted_document ? /* @__PURE__ */ jsx57(Text34, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
|
|
18905
19659
|
accepted: meta.accepted_document,
|
|
18906
19660
|
defaultValue: `Accepted: ${meta.accepted_document}`
|
|
18907
19661
|
}) }) : null,
|
|
18908
|
-
meta.rejection_reason ? /* @__PURE__ */
|
|
18909
|
-
/* @__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: [
|
|
18910
19664
|
t("rejectionReasonLabel") || "Rejection reason",
|
|
18911
19665
|
":"
|
|
18912
19666
|
] }),
|
|
18913
|
-
/* @__PURE__ */
|
|
19667
|
+
/* @__PURE__ */ jsx57(Text34, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
|
|
18914
19668
|
] }) : null,
|
|
18915
|
-
canUpload && requestEventUuid ? /* @__PURE__ */
|
|
18916
|
-
|
|
19669
|
+
canUpload && requestEventUuid ? /* @__PURE__ */ jsx57(
|
|
19670
|
+
TouchableOpacity17,
|
|
18917
19671
|
{
|
|
18918
|
-
style: [
|
|
19672
|
+
style: [styles44.uploadButton, { backgroundColor: colors.primary }],
|
|
18919
19673
|
onPress: () => onUpload(requestEventUuid),
|
|
18920
19674
|
disabled: isSubmitting,
|
|
18921
19675
|
activeOpacity: 0.7,
|
|
18922
|
-
children: /* @__PURE__ */
|
|
19676
|
+
children: /* @__PURE__ */ jsx57(Text34, { style: [styles44.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
|
|
18923
19677
|
}
|
|
18924
19678
|
) : null
|
|
18925
19679
|
] });
|
|
18926
19680
|
}
|
|
18927
|
-
var
|
|
19681
|
+
var styles44 = StyleSheet45.create({
|
|
18928
19682
|
container: {
|
|
18929
19683
|
borderWidth: 1.5,
|
|
18930
19684
|
borderStyle: "dashed",
|
|
@@ -18977,20 +19731,20 @@ var styles42 = StyleSheet43.create({
|
|
|
18977
19731
|
});
|
|
18978
19732
|
|
|
18979
19733
|
// src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
|
|
18980
|
-
import { StyleSheet as
|
|
18981
|
-
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";
|
|
18982
19736
|
function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
|
|
18983
19737
|
const { colors } = useTheme();
|
|
18984
|
-
return /* @__PURE__ */
|
|
18985
|
-
/* @__PURE__ */
|
|
18986
|
-
/* @__PURE__ */
|
|
18987
|
-
/* @__PURE__ */
|
|
18988
|
-
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
|
|
18989
19743
|
] }),
|
|
18990
|
-
/* @__PURE__ */
|
|
19744
|
+
/* @__PURE__ */ jsx58(Text35, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
|
|
18991
19745
|
] });
|
|
18992
19746
|
}
|
|
18993
|
-
var
|
|
19747
|
+
var styles45 = StyleSheet46.create({
|
|
18994
19748
|
container: {
|
|
18995
19749
|
flexDirection: "row",
|
|
18996
19750
|
alignItems: "center",
|
|
@@ -19029,10 +19783,10 @@ var styles43 = StyleSheet44.create({
|
|
|
19029
19783
|
});
|
|
19030
19784
|
|
|
19031
19785
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
|
|
19032
|
-
import { Fragment as Fragment12, jsx as
|
|
19033
|
-
var CheckIcon = ({ color }) => /* @__PURE__ */
|
|
19034
|
-
var XIcon = ({ color }) => /* @__PURE__ */
|
|
19035
|
-
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 });
|
|
19036
19790
|
function MessageItemImpl({
|
|
19037
19791
|
message,
|
|
19038
19792
|
onUploadForRequest,
|
|
@@ -19042,14 +19796,14 @@ function MessageItemImpl({
|
|
|
19042
19796
|
isLastInGroup = true
|
|
19043
19797
|
}) {
|
|
19044
19798
|
var _a3, _b;
|
|
19045
|
-
const { t } =
|
|
19799
|
+
const { t } = useTranslation24();
|
|
19046
19800
|
const isPrincipal = message.sender_role === "data_principal";
|
|
19047
19801
|
const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
|
|
19048
19802
|
switch (message.message_type) {
|
|
19049
19803
|
case "message_sent":
|
|
19050
19804
|
case "document_submitted":
|
|
19051
19805
|
case "document_replaced":
|
|
19052
|
-
return /* @__PURE__ */
|
|
19806
|
+
return /* @__PURE__ */ jsx59(
|
|
19053
19807
|
ChatBubble,
|
|
19054
19808
|
{
|
|
19055
19809
|
message,
|
|
@@ -19061,8 +19815,8 @@ function MessageItemImpl({
|
|
|
19061
19815
|
}
|
|
19062
19816
|
);
|
|
19063
19817
|
case "document_requested":
|
|
19064
|
-
return /* @__PURE__ */
|
|
19065
|
-
/* @__PURE__ */
|
|
19818
|
+
return /* @__PURE__ */ jsxs38(Fragment12, { children: [
|
|
19819
|
+
/* @__PURE__ */ jsx59(
|
|
19066
19820
|
ChatBubble,
|
|
19067
19821
|
{
|
|
19068
19822
|
message,
|
|
@@ -19073,7 +19827,7 @@ function MessageItemImpl({
|
|
|
19073
19827
|
isLastInGroup
|
|
19074
19828
|
}
|
|
19075
19829
|
),
|
|
19076
|
-
/* @__PURE__ */
|
|
19830
|
+
/* @__PURE__ */ jsx59(
|
|
19077
19831
|
DocumentRequestCard,
|
|
19078
19832
|
{
|
|
19079
19833
|
message,
|
|
@@ -19084,10 +19838,10 @@ function MessageItemImpl({
|
|
|
19084
19838
|
)
|
|
19085
19839
|
] });
|
|
19086
19840
|
case "document_approved":
|
|
19087
|
-
return /* @__PURE__ */
|
|
19841
|
+
return /* @__PURE__ */ jsx59(
|
|
19088
19842
|
StatusEvent,
|
|
19089
19843
|
{
|
|
19090
|
-
icon: /* @__PURE__ */
|
|
19844
|
+
icon: /* @__PURE__ */ jsx59(CheckIcon, { color: "#059669" }),
|
|
19091
19845
|
color: "#059669",
|
|
19092
19846
|
bgColor: "rgba(16, 185, 129, 0.08)",
|
|
19093
19847
|
borderColor: "rgba(16, 185, 129, 0.2)",
|
|
@@ -19096,10 +19850,10 @@ function MessageItemImpl({
|
|
|
19096
19850
|
}
|
|
19097
19851
|
);
|
|
19098
19852
|
case "document_rejected":
|
|
19099
|
-
return /* @__PURE__ */
|
|
19853
|
+
return /* @__PURE__ */ jsx59(
|
|
19100
19854
|
StatusEvent,
|
|
19101
19855
|
{
|
|
19102
|
-
icon: /* @__PURE__ */
|
|
19856
|
+
icon: /* @__PURE__ */ jsx59(XIcon, { color: "#DC2626" }),
|
|
19103
19857
|
color: "#DC2626",
|
|
19104
19858
|
bgColor: "rgba(220, 38, 38, 0.08)",
|
|
19105
19859
|
borderColor: "rgba(220, 38, 38, 0.2)",
|
|
@@ -19109,10 +19863,10 @@ function MessageItemImpl({
|
|
|
19109
19863
|
}
|
|
19110
19864
|
);
|
|
19111
19865
|
case "document_replacement_requested":
|
|
19112
|
-
return /* @__PURE__ */
|
|
19866
|
+
return /* @__PURE__ */ jsx59(
|
|
19113
19867
|
StatusEvent,
|
|
19114
19868
|
{
|
|
19115
|
-
icon: /* @__PURE__ */
|
|
19869
|
+
icon: /* @__PURE__ */ jsx59(RefreshIcon, { color: "#D97706" }),
|
|
19116
19870
|
color: "#D97706",
|
|
19117
19871
|
bgColor: "rgba(245, 158, 11, 0.08)",
|
|
19118
19872
|
borderColor: "rgba(245, 158, 11, 0.2)",
|
|
@@ -19122,7 +19876,7 @@ function MessageItemImpl({
|
|
|
19122
19876
|
}
|
|
19123
19877
|
);
|
|
19124
19878
|
default:
|
|
19125
|
-
return /* @__PURE__ */
|
|
19879
|
+
return /* @__PURE__ */ jsx59(
|
|
19126
19880
|
ChatBubble,
|
|
19127
19881
|
{
|
|
19128
19882
|
message,
|
|
@@ -19135,22 +19889,22 @@ function MessageItemImpl({
|
|
|
19135
19889
|
);
|
|
19136
19890
|
}
|
|
19137
19891
|
}
|
|
19138
|
-
var MessageItem =
|
|
19892
|
+
var MessageItem = React23.memo(MessageItemImpl);
|
|
19139
19893
|
|
|
19140
19894
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
|
|
19141
|
-
import { useEffect as
|
|
19895
|
+
import { useEffect as useEffect17, useRef as useRef9 } from "react";
|
|
19142
19896
|
import {
|
|
19143
19897
|
ActivityIndicator as ActivityIndicator6,
|
|
19144
19898
|
Animated as Animated12,
|
|
19145
19899
|
Easing as Easing3,
|
|
19146
|
-
StyleSheet as
|
|
19147
|
-
Text as
|
|
19900
|
+
StyleSheet as StyleSheet47,
|
|
19901
|
+
Text as Text36,
|
|
19148
19902
|
TextInput as TextInput3,
|
|
19149
|
-
TouchableOpacity as
|
|
19150
|
-
View as
|
|
19903
|
+
TouchableOpacity as TouchableOpacity18,
|
|
19904
|
+
View as View45
|
|
19151
19905
|
} from "react-native";
|
|
19152
|
-
import { useTranslation as
|
|
19153
|
-
import { jsx as
|
|
19906
|
+
import { useTranslation as useTranslation25 } from "react-i18next";
|
|
19907
|
+
import { jsx as jsx60, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
19154
19908
|
function MessageComposer({
|
|
19155
19909
|
messageText,
|
|
19156
19910
|
onMessageTextChange,
|
|
@@ -19162,11 +19916,11 @@ function MessageComposer({
|
|
|
19162
19916
|
isUploading,
|
|
19163
19917
|
isCaseFinalized = false
|
|
19164
19918
|
}) {
|
|
19165
|
-
const { t } =
|
|
19919
|
+
const { t } = useTranslation25();
|
|
19166
19920
|
const { colors } = useTheme();
|
|
19167
19921
|
const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
|
|
19168
19922
|
const activate = useRef9(new Animated12.Value(canSend ? 1 : 0)).current;
|
|
19169
|
-
|
|
19923
|
+
useEffect17(() => {
|
|
19170
19924
|
Animated12.timing(activate, {
|
|
19171
19925
|
toValue: canSend ? 1 : 0,
|
|
19172
19926
|
duration: 180,
|
|
@@ -19186,7 +19940,7 @@ function MessageComposer({
|
|
|
19186
19940
|
Animated12.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
|
|
19187
19941
|
};
|
|
19188
19942
|
const pillIn = useRef9(new Animated12.Value(0)).current;
|
|
19189
|
-
|
|
19943
|
+
useEffect17(() => {
|
|
19190
19944
|
Animated12.timing(pillIn, {
|
|
19191
19945
|
toValue: pendingUpload ? 1 : 0,
|
|
19192
19946
|
duration: 220,
|
|
@@ -19196,12 +19950,12 @@ function MessageComposer({
|
|
|
19196
19950
|
}, [pendingUpload, pillIn]);
|
|
19197
19951
|
const pillOpacity = pillIn;
|
|
19198
19952
|
const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
|
|
19199
|
-
return /* @__PURE__ */
|
|
19200
|
-
pendingUpload && /* @__PURE__ */
|
|
19953
|
+
return /* @__PURE__ */ jsxs39(View45, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
|
|
19954
|
+
pendingUpload && /* @__PURE__ */ jsxs39(
|
|
19201
19955
|
Animated12.View,
|
|
19202
19956
|
{
|
|
19203
19957
|
style: [
|
|
19204
|
-
|
|
19958
|
+
styles46.uploadPill,
|
|
19205
19959
|
{
|
|
19206
19960
|
backgroundColor: colors.primarySoft,
|
|
19207
19961
|
opacity: pillOpacity,
|
|
@@ -19209,34 +19963,34 @@ function MessageComposer({
|
|
|
19209
19963
|
}
|
|
19210
19964
|
],
|
|
19211
19965
|
children: [
|
|
19212
|
-
/* @__PURE__ */
|
|
19213
|
-
/* @__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: [
|
|
19214
19968
|
pendingUpload.file_name,
|
|
19215
19969
|
" (",
|
|
19216
19970
|
formatFileSize(pendingUpload.file_size),
|
|
19217
19971
|
")"
|
|
19218
19972
|
] }),
|
|
19219
|
-
/* @__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 }) })
|
|
19220
19974
|
]
|
|
19221
19975
|
}
|
|
19222
19976
|
),
|
|
19223
|
-
/* @__PURE__ */
|
|
19224
|
-
/* @__PURE__ */
|
|
19225
|
-
|
|
19977
|
+
/* @__PURE__ */ jsxs39(View45, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
|
|
19978
|
+
/* @__PURE__ */ jsx60(
|
|
19979
|
+
TouchableOpacity18,
|
|
19226
19980
|
{
|
|
19227
|
-
style:
|
|
19981
|
+
style: styles46.attachButton,
|
|
19228
19982
|
onPress: onAttachClick,
|
|
19229
19983
|
disabled: isUploading || isCaseFinalized,
|
|
19230
19984
|
activeOpacity: 0.6,
|
|
19231
19985
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
19232
19986
|
accessibilityLabel: t("uploadFile") || "Attach file",
|
|
19233
|
-
children: isUploading ? /* @__PURE__ */
|
|
19987
|
+
children: isUploading ? /* @__PURE__ */ jsx60(ActivityIndicator6, { size: "small", color: colors.primary }) : /* @__PURE__ */ jsx60(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
|
|
19234
19988
|
}
|
|
19235
19989
|
),
|
|
19236
|
-
/* @__PURE__ */
|
|
19990
|
+
/* @__PURE__ */ jsx60(
|
|
19237
19991
|
TextInput3,
|
|
19238
19992
|
{
|
|
19239
|
-
style: [
|
|
19993
|
+
style: [styles46.input, { color: colors.text }],
|
|
19240
19994
|
value: messageText,
|
|
19241
19995
|
onChangeText: onMessageTextChange,
|
|
19242
19996
|
placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
|
|
@@ -19246,8 +20000,8 @@ function MessageComposer({
|
|
|
19246
20000
|
editable: !isSending && !isCaseFinalized
|
|
19247
20001
|
}
|
|
19248
20002
|
),
|
|
19249
|
-
/* @__PURE__ */
|
|
19250
|
-
|
|
20003
|
+
/* @__PURE__ */ jsx60(Animated12.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ jsx60(
|
|
20004
|
+
TouchableOpacity18,
|
|
19251
20005
|
{
|
|
19252
20006
|
onPress: onSend,
|
|
19253
20007
|
onPressIn: handlePressIn,
|
|
@@ -19255,15 +20009,15 @@ function MessageComposer({
|
|
|
19255
20009
|
disabled: !canSend,
|
|
19256
20010
|
activeOpacity: 0.85,
|
|
19257
20011
|
accessibilityLabel: t("send") || "Send",
|
|
19258
|
-
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 }) }) })
|
|
19259
20013
|
}
|
|
19260
20014
|
) })
|
|
19261
20015
|
] })
|
|
19262
20016
|
] });
|
|
19263
20017
|
}
|
|
19264
|
-
var
|
|
20018
|
+
var styles46 = StyleSheet47.create({
|
|
19265
20019
|
container: {
|
|
19266
|
-
borderTopWidth:
|
|
20020
|
+
borderTopWidth: StyleSheet47.hairlineWidth,
|
|
19267
20021
|
paddingHorizontal: spacing.md,
|
|
19268
20022
|
paddingVertical: spacing.sm
|
|
19269
20023
|
},
|
|
@@ -19286,7 +20040,7 @@ var styles44 = StyleSheet45.create({
|
|
|
19286
20040
|
pill: {
|
|
19287
20041
|
flexDirection: "row",
|
|
19288
20042
|
alignItems: "center",
|
|
19289
|
-
borderWidth:
|
|
20043
|
+
borderWidth: StyleSheet47.hairlineWidth,
|
|
19290
20044
|
borderRadius: radii.xxl + 4,
|
|
19291
20045
|
paddingHorizontal: spacing.xs + 2,
|
|
19292
20046
|
paddingVertical: spacing.xs,
|
|
@@ -19325,7 +20079,7 @@ var styles44 = StyleSheet45.create({
|
|
|
19325
20079
|
});
|
|
19326
20080
|
|
|
19327
20081
|
// src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
|
|
19328
|
-
import { Fragment as Fragment13, jsx as
|
|
20082
|
+
import { Fragment as Fragment13, jsx as jsx61, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
19329
20083
|
var STREAK_GAP_MS = 5 * 60 * 1e3;
|
|
19330
20084
|
function isStreakBoundary(a, b) {
|
|
19331
20085
|
if (!a || !b) return true;
|
|
@@ -19355,7 +20109,7 @@ function sameDay(a, b) {
|
|
|
19355
20109
|
}
|
|
19356
20110
|
var MESSAGE_POLL_INTERVAL = 3e4;
|
|
19357
20111
|
function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
19358
|
-
const { t } =
|
|
20112
|
+
const { t } = useTranslation26();
|
|
19359
20113
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19360
20114
|
const { consentClient } = useBaseUrl();
|
|
19361
20115
|
const { colors } = useTheme();
|
|
@@ -19371,13 +20125,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19371
20125
|
caseUuid,
|
|
19372
20126
|
authContext
|
|
19373
20127
|
);
|
|
19374
|
-
const [messageText, setMessageText] =
|
|
19375
|
-
const [pendingUpload, setPendingUpload] =
|
|
19376
|
-
const [isSending, setIsSending] =
|
|
19377
|
-
const [isUploading, setIsUploading] =
|
|
19378
|
-
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);
|
|
19379
20133
|
const flatListRef = useRef10(null);
|
|
19380
|
-
|
|
20134
|
+
useEffect18(() => {
|
|
19381
20135
|
if (messages && messages.length > 0) {
|
|
19382
20136
|
setTimeout(() => {
|
|
19383
20137
|
var _a3;
|
|
@@ -19387,14 +20141,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19387
20141
|
}, [messages == null ? void 0 : messages.length]);
|
|
19388
20142
|
const refetchRef = useRef10(refetch);
|
|
19389
20143
|
refetchRef.current = refetch;
|
|
19390
|
-
|
|
20144
|
+
const authContextRef = useRef10(authContext);
|
|
20145
|
+
authContextRef.current = authContext;
|
|
20146
|
+
useEffect18(() => {
|
|
19391
20147
|
if (isCaseFinalized) return;
|
|
19392
20148
|
const id = setInterval(() => {
|
|
20149
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
19393
20150
|
refetchRef.current();
|
|
19394
20151
|
}, MESSAGE_POLL_INTERVAL);
|
|
19395
20152
|
return () => clearInterval(id);
|
|
19396
20153
|
}, [isCaseFinalized]);
|
|
19397
|
-
const handleSend =
|
|
20154
|
+
const handleSend = useCallback12(async () => {
|
|
19398
20155
|
if (isCaseFinalized) return;
|
|
19399
20156
|
if (!messageText.trim() && !pendingUpload) return;
|
|
19400
20157
|
if (!organizationId || !workspaceId) return;
|
|
@@ -19419,7 +20176,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19419
20176
|
setIsSending(false);
|
|
19420
20177
|
}
|
|
19421
20178
|
}, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
|
|
19422
|
-
const handleAttach =
|
|
20179
|
+
const handleAttach = useCallback12(async () => {
|
|
19423
20180
|
if (isCaseFinalized) return;
|
|
19424
20181
|
if (!organizationId || !workspaceId) return;
|
|
19425
20182
|
try {
|
|
@@ -19454,7 +20211,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19454
20211
|
setIsUploading(false);
|
|
19455
20212
|
}
|
|
19456
20213
|
}, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
|
|
19457
|
-
const handleUploadForRequest =
|
|
20214
|
+
const handleUploadForRequest = useCallback12((_requestEventUuid) => {
|
|
19458
20215
|
handleAttach();
|
|
19459
20216
|
}, [handleAttach]);
|
|
19460
20217
|
const messagesList = useMemo19(() => {
|
|
@@ -19466,17 +20223,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19466
20223
|
});
|
|
19467
20224
|
return list;
|
|
19468
20225
|
}, [messages]);
|
|
19469
|
-
const keyExtractor =
|
|
19470
|
-
const renderMessage =
|
|
20226
|
+
const keyExtractor = useCallback12((item) => item.uuid, []);
|
|
20227
|
+
const renderMessage = useCallback12(
|
|
19471
20228
|
({ item, index }) => {
|
|
19472
20229
|
const prev = index > 0 ? messagesList[index - 1] : void 0;
|
|
19473
20230
|
const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
|
|
19474
20231
|
const isFirstInGroup = isStreakBoundary(prev, item);
|
|
19475
20232
|
const isLastInGroup = isStreakBoundary(item, next);
|
|
19476
20233
|
const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
|
|
19477
|
-
return /* @__PURE__ */
|
|
19478
|
-
dateSeparator ? /* @__PURE__ */
|
|
19479
|
-
/* @__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(
|
|
19480
20237
|
MessageItem,
|
|
19481
20238
|
{
|
|
19482
20239
|
message: item,
|
|
@@ -19492,32 +20249,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19492
20249
|
[messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
|
|
19493
20250
|
);
|
|
19494
20251
|
if (isLoading) {
|
|
19495
|
-
return /* @__PURE__ */
|
|
20252
|
+
return /* @__PURE__ */ jsx61(View46, { style: styles47.centered, children: /* @__PURE__ */ jsx61(ActivityIndicator7, { size: "large", color: colors.primary }) });
|
|
19496
20253
|
}
|
|
19497
20254
|
if (error) {
|
|
19498
|
-
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" }) });
|
|
19499
20256
|
}
|
|
19500
|
-
return /* @__PURE__ */
|
|
19501
|
-
/* @__PURE__ */
|
|
19502
|
-
/* @__PURE__ */
|
|
19503
|
-
/* @__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"}` })
|
|
19504
20261
|
] }),
|
|
19505
|
-
/* @__PURE__ */
|
|
20262
|
+
/* @__PURE__ */ jsx61(
|
|
19506
20263
|
FlatList2,
|
|
19507
20264
|
{
|
|
19508
20265
|
ref: flatListRef,
|
|
19509
|
-
style:
|
|
20266
|
+
style: styles47.list,
|
|
19510
20267
|
data: messagesList,
|
|
19511
20268
|
keyExtractor,
|
|
19512
20269
|
renderItem: renderMessage,
|
|
19513
20270
|
contentContainerStyle: [
|
|
19514
|
-
|
|
19515
|
-
messagesList.length ?
|
|
20271
|
+
styles47.messagesList,
|
|
20272
|
+
messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
|
|
19516
20273
|
],
|
|
19517
|
-
ListEmptyComponent: /* @__PURE__ */
|
|
19518
|
-
/* @__PURE__ */
|
|
19519
|
-
/* @__PURE__ */
|
|
19520
|
-
/* @__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") })
|
|
19521
20278
|
] }),
|
|
19522
20279
|
onContentSizeChange: () => {
|
|
19523
20280
|
var _a3;
|
|
@@ -19529,7 +20286,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19529
20286
|
removeClippedSubviews: true
|
|
19530
20287
|
}
|
|
19531
20288
|
),
|
|
19532
|
-
/* @__PURE__ */
|
|
20289
|
+
/* @__PURE__ */ jsx61(
|
|
19533
20290
|
MessageComposer,
|
|
19534
20291
|
{
|
|
19535
20292
|
messageText,
|
|
@@ -19545,7 +20302,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
|
|
|
19545
20302
|
)
|
|
19546
20303
|
] });
|
|
19547
20304
|
}
|
|
19548
|
-
var
|
|
20305
|
+
var styles47 = StyleSheet48.create({
|
|
19549
20306
|
container: {
|
|
19550
20307
|
flex: 1
|
|
19551
20308
|
},
|
|
@@ -19628,16 +20385,16 @@ var styles45 = StyleSheet46.create({
|
|
|
19628
20385
|
});
|
|
19629
20386
|
|
|
19630
20387
|
// src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
|
|
19631
|
-
import { jsx as
|
|
20388
|
+
import { jsx as jsx62, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
19632
20389
|
function CaseDetailsPage() {
|
|
19633
20390
|
var _a3, _b;
|
|
19634
|
-
const { t } =
|
|
20391
|
+
const { t } = useTranslation27();
|
|
19635
20392
|
const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
|
|
19636
20393
|
const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
|
|
19637
20394
|
const { colors } = useTheme();
|
|
19638
20395
|
const { keyboardOffset } = usePrivacyCenterInsets();
|
|
19639
20396
|
const requestTypeLabels = useRequestTypeLabels();
|
|
19640
|
-
const [activeTab, setActiveTab] =
|
|
20397
|
+
const [activeTab, setActiveTab] = useState24("request-details");
|
|
19641
20398
|
const authContext = useMemo20(() => ({
|
|
19642
20399
|
accessToken,
|
|
19643
20400
|
refreshToken,
|
|
@@ -19651,7 +20408,7 @@ function CaseDetailsPage() {
|
|
|
19651
20408
|
email != null ? email : void 0,
|
|
19652
20409
|
authContext
|
|
19653
20410
|
);
|
|
19654
|
-
|
|
20411
|
+
useEffect19(() => {
|
|
19655
20412
|
if (!cases) return;
|
|
19656
20413
|
if (cases.length === 0) {
|
|
19657
20414
|
navigateTo("form");
|
|
@@ -19665,33 +20422,33 @@ function CaseDetailsPage() {
|
|
|
19665
20422
|
navigateTo("form");
|
|
19666
20423
|
}
|
|
19667
20424
|
}, [cases, targetUuid, setSelectedCase, navigateTo]);
|
|
19668
|
-
|
|
20425
|
+
useEffect19(() => {
|
|
19669
20426
|
if (!selectedCase && !targetUuid && !isLoading) {
|
|
19670
20427
|
navigateTo("form");
|
|
19671
20428
|
}
|
|
19672
20429
|
}, [selectedCase, targetUuid, isLoading, navigateTo]);
|
|
19673
20430
|
if (!selectedCase) {
|
|
19674
|
-
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" }) });
|
|
19675
20432
|
}
|
|
19676
20433
|
const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
|
|
19677
20434
|
const tabs = [
|
|
19678
20435
|
{ id: "request-details", label: t("requestDetails") || "Request Details" },
|
|
19679
20436
|
{ id: "messages", label: t("messages") || "Messages" }
|
|
19680
20437
|
];
|
|
19681
|
-
return /* @__PURE__ */
|
|
20438
|
+
return /* @__PURE__ */ jsxs41(
|
|
19682
20439
|
KeyboardAvoidingViewCompat,
|
|
19683
20440
|
{
|
|
19684
|
-
style: [
|
|
20441
|
+
style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
|
|
19685
20442
|
behavior: "padding",
|
|
19686
20443
|
keyboardVerticalOffset: Platform7.OS === "ios" ? keyboardOffset : 0,
|
|
19687
20444
|
children: [
|
|
19688
|
-
/* @__PURE__ */
|
|
19689
|
-
/* @__PURE__ */
|
|
19690
|
-
/* @__PURE__ */
|
|
19691
|
-
/* @__PURE__ */
|
|
19692
|
-
/* @__PURE__ */
|
|
19693
|
-
/* @__PURE__ */
|
|
19694
|
-
/* @__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(
|
|
19695
20452
|
PCBadge,
|
|
19696
20453
|
{
|
|
19697
20454
|
status: getCaseStatusVariant(selectedCase.status),
|
|
@@ -19700,10 +20457,10 @@ function CaseDetailsPage() {
|
|
|
19700
20457
|
}
|
|
19701
20458
|
)
|
|
19702
20459
|
] }),
|
|
19703
|
-
/* @__PURE__ */
|
|
20460
|
+
/* @__PURE__ */ jsx62(Text38, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
|
|
19704
20461
|
] })
|
|
19705
20462
|
] }) }),
|
|
19706
|
-
/* @__PURE__ */
|
|
20463
|
+
/* @__PURE__ */ jsx62(
|
|
19707
20464
|
Segmented,
|
|
19708
20465
|
{
|
|
19709
20466
|
options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
|
|
@@ -19712,18 +20469,18 @@ function CaseDetailsPage() {
|
|
|
19712
20469
|
}
|
|
19713
20470
|
)
|
|
19714
20471
|
] }),
|
|
19715
|
-
/* @__PURE__ */
|
|
20472
|
+
/* @__PURE__ */ jsx62(View47, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ jsx62(
|
|
19716
20473
|
RequestDetailsTab,
|
|
19717
20474
|
{
|
|
19718
20475
|
selectedCase,
|
|
19719
20476
|
requestTypeLabel
|
|
19720
20477
|
}
|
|
19721
|
-
) : /* @__PURE__ */
|
|
20478
|
+
) : /* @__PURE__ */ jsx62(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
|
|
19722
20479
|
]
|
|
19723
20480
|
}
|
|
19724
20481
|
);
|
|
19725
20482
|
}
|
|
19726
|
-
var
|
|
20483
|
+
var styles48 = StyleSheet49.create({
|
|
19727
20484
|
container: {
|
|
19728
20485
|
flex: 1
|
|
19729
20486
|
},
|
|
@@ -19788,36 +20545,36 @@ var styles46 = StyleSheet47.create({
|
|
|
19788
20545
|
});
|
|
19789
20546
|
|
|
19790
20547
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
19791
|
-
import { useCallback as
|
|
19792
|
-
import { FlatList as FlatList3, RefreshControl as RefreshControl5, StyleSheet as
|
|
19793
|
-
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";
|
|
19794
20551
|
|
|
19795
20552
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19796
|
-
import { StyleSheet as
|
|
19797
|
-
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";
|
|
19798
20555
|
|
|
19799
20556
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
|
|
19800
|
-
import { StyleSheet as
|
|
19801
|
-
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";
|
|
19802
20559
|
var NotificationCTAButton = ({ cta, onPress }) => {
|
|
19803
20560
|
const { colors } = useTheme();
|
|
19804
20561
|
const tone = cta.style === "danger" ? colors.error : colors.primary;
|
|
19805
20562
|
const isPrimary = cta.style === "primary" || cta.style === "danger";
|
|
19806
|
-
return /* @__PURE__ */
|
|
19807
|
-
|
|
20563
|
+
return /* @__PURE__ */ jsx63(
|
|
20564
|
+
TouchableOpacity19,
|
|
19808
20565
|
{
|
|
19809
20566
|
onPress,
|
|
19810
20567
|
activeOpacity: 0.7,
|
|
19811
20568
|
style: [
|
|
19812
|
-
|
|
20569
|
+
styles49.button,
|
|
19813
20570
|
isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
|
|
19814
20571
|
],
|
|
19815
20572
|
accessibilityRole: "button",
|
|
19816
|
-
children: /* @__PURE__ */
|
|
20573
|
+
children: /* @__PURE__ */ jsx63(Text39, { style: [styles49.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
|
|
19817
20574
|
}
|
|
19818
20575
|
);
|
|
19819
20576
|
};
|
|
19820
|
-
var
|
|
20577
|
+
var styles49 = StyleSheet50.create({
|
|
19821
20578
|
button: {
|
|
19822
20579
|
paddingHorizontal: spacing.lg,
|
|
19823
20580
|
paddingVertical: spacing.sm,
|
|
@@ -19832,8 +20589,8 @@ var styles47 = StyleSheet48.create({
|
|
|
19832
20589
|
});
|
|
19833
20590
|
|
|
19834
20591
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
|
|
19835
|
-
import { StyleSheet as
|
|
19836
|
-
import { jsx as
|
|
20592
|
+
import { StyleSheet as StyleSheet51, View as View48 } from "react-native";
|
|
20593
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
19837
20594
|
var CATEGORY_ICON = {
|
|
19838
20595
|
guardian: "user-round",
|
|
19839
20596
|
consent: "clock",
|
|
@@ -19846,18 +20603,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
|
|
|
19846
20603
|
var _a3;
|
|
19847
20604
|
const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
|
|
19848
20605
|
const color = ICON_COLORS[category];
|
|
19849
|
-
return /* @__PURE__ */
|
|
19850
|
-
|
|
20606
|
+
return /* @__PURE__ */ jsx64(
|
|
20607
|
+
View48,
|
|
19851
20608
|
{
|
|
19852
20609
|
style: [
|
|
19853
|
-
|
|
20610
|
+
styles50.wrap,
|
|
19854
20611
|
{ width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
|
|
19855
20612
|
],
|
|
19856
|
-
children: /* @__PURE__ */
|
|
20613
|
+
children: /* @__PURE__ */ jsx64(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
|
|
19857
20614
|
}
|
|
19858
20615
|
);
|
|
19859
20616
|
};
|
|
19860
|
-
var
|
|
20617
|
+
var styles50 = StyleSheet51.create({
|
|
19861
20618
|
wrap: {
|
|
19862
20619
|
alignItems: "center",
|
|
19863
20620
|
justifyContent: "center"
|
|
@@ -19866,8 +20623,8 @@ var styles48 = StyleSheet49.create({
|
|
|
19866
20623
|
|
|
19867
20624
|
// src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
|
|
19868
20625
|
import { useMemo as useMemo21, useRef as useRef11 } from "react";
|
|
19869
|
-
import { Animated as Animated13, PanResponder as PanResponder2, StyleSheet as
|
|
19870
|
-
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";
|
|
19871
20628
|
var ACTION_WIDTH = 80;
|
|
19872
20629
|
var CLAIM_THRESHOLD = 8;
|
|
19873
20630
|
var SwipeableRow = ({ actions, background, children }) => {
|
|
@@ -19906,37 +20663,37 @@ var SwipeableRow = ({ actions, background, children }) => {
|
|
|
19906
20663
|
[maxOpen]
|
|
19907
20664
|
);
|
|
19908
20665
|
if (actions.length === 0) {
|
|
19909
|
-
return /* @__PURE__ */
|
|
20666
|
+
return /* @__PURE__ */ jsx65(Fragment14, { children });
|
|
19910
20667
|
}
|
|
19911
20668
|
const runAction = (action) => {
|
|
19912
20669
|
settle(0);
|
|
19913
20670
|
action.onPress();
|
|
19914
20671
|
};
|
|
19915
|
-
return /* @__PURE__ */
|
|
19916
|
-
/* @__PURE__ */
|
|
19917
|
-
|
|
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,
|
|
19918
20675
|
{
|
|
19919
|
-
style: [
|
|
20676
|
+
style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
|
|
19920
20677
|
onPress: () => runAction(action),
|
|
19921
20678
|
activeOpacity: 0.85,
|
|
19922
20679
|
accessibilityRole: "button",
|
|
19923
20680
|
accessibilityLabel: action.label,
|
|
19924
20681
|
children: [
|
|
19925
|
-
/* @__PURE__ */
|
|
19926
|
-
/* @__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 })
|
|
19927
20684
|
]
|
|
19928
20685
|
},
|
|
19929
20686
|
action.key
|
|
19930
20687
|
)) }),
|
|
19931
|
-
/* @__PURE__ */
|
|
20688
|
+
/* @__PURE__ */ jsx65(Animated13.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
|
|
19932
20689
|
] });
|
|
19933
20690
|
};
|
|
19934
|
-
var
|
|
20691
|
+
var styles51 = StyleSheet52.create({
|
|
19935
20692
|
root: {
|
|
19936
20693
|
position: "relative"
|
|
19937
20694
|
},
|
|
19938
20695
|
actionsLayer: {
|
|
19939
|
-
...
|
|
20696
|
+
...StyleSheet52.absoluteFillObject,
|
|
19940
20697
|
flexDirection: "row",
|
|
19941
20698
|
justifyContent: "flex-end"
|
|
19942
20699
|
},
|
|
@@ -19969,10 +20726,10 @@ var formatTimeAgo = (dateString, t) => {
|
|
|
19969
20726
|
};
|
|
19970
20727
|
|
|
19971
20728
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
|
|
19972
|
-
import { Fragment as Fragment15, jsx as
|
|
20729
|
+
import { Fragment as Fragment15, jsx as jsx66, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
19973
20730
|
var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
|
|
19974
20731
|
var _a3, _b;
|
|
19975
|
-
const { t } =
|
|
20732
|
+
const { t } = useTranslation28();
|
|
19976
20733
|
const { colors } = useTheme();
|
|
19977
20734
|
const isUnread = !notification.is_read;
|
|
19978
20735
|
const statusLabel = notification.status_label_display || notification.status_label;
|
|
@@ -19999,35 +20756,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
|
|
|
19999
20756
|
onPress: onAcknowledge
|
|
20000
20757
|
});
|
|
20001
20758
|
}
|
|
20002
|
-
return /* @__PURE__ */
|
|
20003
|
-
isUnread ? /* @__PURE__ */
|
|
20004
|
-
/* @__PURE__ */
|
|
20005
|
-
/* @__PURE__ */
|
|
20006
|
-
/* @__PURE__ */
|
|
20007
|
-
/* @__PURE__ */
|
|
20008
|
-
|
|
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,
|
|
20009
20766
|
{
|
|
20010
|
-
style: [
|
|
20767
|
+
style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
|
|
20011
20768
|
numberOfLines: 2,
|
|
20012
20769
|
children: notification.title
|
|
20013
20770
|
}
|
|
20014
20771
|
),
|
|
20015
|
-
isUnread ? /* @__PURE__ */
|
|
20772
|
+
isUnread ? /* @__PURE__ */ jsx66(View50, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
|
|
20016
20773
|
] }),
|
|
20017
|
-
/* @__PURE__ */
|
|
20018
|
-
statusLabel ? /* @__PURE__ */
|
|
20019
|
-
/* @__PURE__ */
|
|
20020
|
-
/* @__PURE__ */
|
|
20021
|
-
/* @__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" })
|
|
20022
20779
|
] }) : null,
|
|
20023
|
-
/* @__PURE__ */
|
|
20780
|
+
/* @__PURE__ */ jsx66(Text41, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
|
|
20024
20781
|
] }),
|
|
20025
|
-
showAcknowledge && ackCta ? /* @__PURE__ */
|
|
20782
|
+
showAcknowledge && ackCta ? /* @__PURE__ */ jsx66(View50, { style: styles52.ackWrap, children: /* @__PURE__ */ jsx66(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
|
|
20026
20783
|
] }),
|
|
20027
|
-
/* @__PURE__ */
|
|
20784
|
+
/* @__PURE__ */ jsx66(View50, { style: styles52.chevron, children: /* @__PURE__ */ jsx66(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
|
|
20028
20785
|
] }) });
|
|
20029
20786
|
};
|
|
20030
|
-
var
|
|
20787
|
+
var styles52 = StyleSheet53.create({
|
|
20031
20788
|
row: {
|
|
20032
20789
|
flexDirection: "row",
|
|
20033
20790
|
alignItems: "center",
|
|
@@ -20090,7 +20847,7 @@ var styles50 = StyleSheet51.create({
|
|
|
20090
20847
|
});
|
|
20091
20848
|
|
|
20092
20849
|
// src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
|
|
20093
|
-
import { useCallback as
|
|
20850
|
+
import { useCallback as useCallback13, useMemo as useMemo22 } from "react";
|
|
20094
20851
|
import { Linking as Linking2 } from "react-native";
|
|
20095
20852
|
var useNotificationActions = () => {
|
|
20096
20853
|
const { navigateTo, setSelectedCase } = useInternalNavigation();
|
|
@@ -20101,14 +20858,14 @@ var useNotificationActions = () => {
|
|
|
20101
20858
|
() => ({ accessToken, refreshToken, onError, updateTokens }),
|
|
20102
20859
|
[accessToken, refreshToken, onError, updateTokens]
|
|
20103
20860
|
);
|
|
20104
|
-
const hasAcknowledgeCTA =
|
|
20861
|
+
const hasAcknowledgeCTA = useCallback13(
|
|
20105
20862
|
(notification) => {
|
|
20106
20863
|
var _a3, _b;
|
|
20107
20864
|
return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
|
|
20108
20865
|
},
|
|
20109
20866
|
[]
|
|
20110
20867
|
);
|
|
20111
|
-
const handleMarkRead =
|
|
20868
|
+
const handleMarkRead = useCallback13(
|
|
20112
20869
|
async (notificationUuid) => {
|
|
20113
20870
|
if (!organizationId || !workspaceId) return false;
|
|
20114
20871
|
const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20116,12 +20873,12 @@ var useNotificationActions = () => {
|
|
|
20116
20873
|
},
|
|
20117
20874
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20118
20875
|
);
|
|
20119
|
-
const handleMarkAllRead =
|
|
20876
|
+
const handleMarkAllRead = useCallback13(async () => {
|
|
20120
20877
|
if (!organizationId || !workspaceId) return false;
|
|
20121
20878
|
const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
|
|
20122
20879
|
return result !== null;
|
|
20123
20880
|
}, [organizationId, workspaceId, authContext, consentClient]);
|
|
20124
|
-
const handleAcknowledge =
|
|
20881
|
+
const handleAcknowledge = useCallback13(
|
|
20125
20882
|
async (notificationUuid) => {
|
|
20126
20883
|
if (!organizationId || !workspaceId) return false;
|
|
20127
20884
|
const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
|
|
@@ -20129,7 +20886,7 @@ var useNotificationActions = () => {
|
|
|
20129
20886
|
},
|
|
20130
20887
|
[organizationId, workspaceId, authContext, consentClient]
|
|
20131
20888
|
);
|
|
20132
|
-
const handleCTAClick =
|
|
20889
|
+
const handleCTAClick = useCallback13(
|
|
20133
20890
|
async (notification, cta) => {
|
|
20134
20891
|
var _a3;
|
|
20135
20892
|
if (cta.action_type === "acknowledge") {
|
|
@@ -20186,7 +20943,7 @@ var useNotificationActions = () => {
|
|
|
20186
20943
|
};
|
|
20187
20944
|
|
|
20188
20945
|
// src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
|
|
20189
|
-
import { Fragment as Fragment16, jsx as
|
|
20946
|
+
import { Fragment as Fragment16, jsx as jsx67, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
20190
20947
|
var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
|
|
20191
20948
|
var READ_FILTER_TO_PARAM = {
|
|
20192
20949
|
all: void 0,
|
|
@@ -20194,7 +20951,7 @@ var READ_FILTER_TO_PARAM = {
|
|
|
20194
20951
|
read: true
|
|
20195
20952
|
};
|
|
20196
20953
|
var NotificationsScreen = () => {
|
|
20197
|
-
const { t } =
|
|
20954
|
+
const { t } = useTranslation29();
|
|
20198
20955
|
const { colors } = useTheme();
|
|
20199
20956
|
const { langParam } = useCurrentLanguage();
|
|
20200
20957
|
const { listBottom } = usePrivacyCenterInsets();
|
|
@@ -20211,15 +20968,15 @@ var NotificationsScreen = () => {
|
|
|
20211
20968
|
handleAcknowledge,
|
|
20212
20969
|
handleCTAClick
|
|
20213
20970
|
} = useNotificationActions();
|
|
20214
|
-
const [notifications, setNotifications] =
|
|
20215
|
-
const [summary, setSummary] =
|
|
20216
|
-
const [activeTab, setActiveTab] =
|
|
20217
|
-
const [readFilter, setReadFilter] =
|
|
20218
|
-
const [isLoading, setIsLoading] =
|
|
20219
|
-
const [isRefreshing2, setIsRefreshing] =
|
|
20220
|
-
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);
|
|
20221
20978
|
const isFiltered = activeTab !== "all" || readFilter !== "all";
|
|
20222
|
-
const loadNotifications =
|
|
20979
|
+
const loadNotifications = useCallback14(
|
|
20223
20980
|
async (includeSummary = false, silent = false) => {
|
|
20224
20981
|
if (!organizationId || !workspaceId) return;
|
|
20225
20982
|
if (!silent) setIsLoading(true);
|
|
@@ -20249,18 +21006,21 @@ var NotificationsScreen = () => {
|
|
|
20249
21006
|
},
|
|
20250
21007
|
[organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
|
|
20251
21008
|
);
|
|
20252
|
-
|
|
21009
|
+
useEffect20(() => {
|
|
20253
21010
|
loadNotifications(true);
|
|
20254
21011
|
}, [loadNotifications]);
|
|
20255
21012
|
const loadRef = useRef12(loadNotifications);
|
|
20256
21013
|
loadRef.current = loadNotifications;
|
|
20257
|
-
|
|
21014
|
+
const authContextRef = useRef12(authContext);
|
|
21015
|
+
authContextRef.current = authContext;
|
|
21016
|
+
useEffect20(() => {
|
|
20258
21017
|
const id = setInterval(() => {
|
|
21018
|
+
if (isRefreshBlocked(authContextRef.current)) return;
|
|
20259
21019
|
loadRef.current(false, true);
|
|
20260
21020
|
}, POLL_INTERVAL);
|
|
20261
21021
|
return () => clearInterval(id);
|
|
20262
21022
|
}, []);
|
|
20263
|
-
const onNotificationClick =
|
|
21023
|
+
const onNotificationClick = useCallback14(
|
|
20264
21024
|
async (notification) => {
|
|
20265
21025
|
const shouldMarkRead = !notification.is_read;
|
|
20266
21026
|
const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
|
|
@@ -20281,7 +21041,7 @@ var NotificationsScreen = () => {
|
|
|
20281
21041
|
},
|
|
20282
21042
|
[hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
|
|
20283
21043
|
);
|
|
20284
|
-
const onRowPress =
|
|
21044
|
+
const onRowPress = useCallback14(
|
|
20285
21045
|
async (notification) => {
|
|
20286
21046
|
var _a3;
|
|
20287
21047
|
const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
|
|
@@ -20299,7 +21059,7 @@ var NotificationsScreen = () => {
|
|
|
20299
21059
|
},
|
|
20300
21060
|
[handleCTAClick, onNotificationClick]
|
|
20301
21061
|
);
|
|
20302
|
-
const onMarkReadRow =
|
|
21062
|
+
const onMarkReadRow = useCallback14(
|
|
20303
21063
|
async (notification) => {
|
|
20304
21064
|
if (notification.is_read) return;
|
|
20305
21065
|
const ok = await handleMarkRead(notification.uuid);
|
|
@@ -20309,7 +21069,7 @@ var NotificationsScreen = () => {
|
|
|
20309
21069
|
},
|
|
20310
21070
|
[handleMarkRead]
|
|
20311
21071
|
);
|
|
20312
|
-
const onAcknowledgeRow =
|
|
21072
|
+
const onAcknowledgeRow = useCallback14(
|
|
20313
21073
|
async (notification) => {
|
|
20314
21074
|
if (notification.is_acknowledged) return;
|
|
20315
21075
|
const ok = await handleAcknowledge(notification.uuid);
|
|
@@ -20326,7 +21086,14 @@ var NotificationsScreen = () => {
|
|
|
20326
21086
|
},
|
|
20327
21087
|
[handleAcknowledge]
|
|
20328
21088
|
);
|
|
20329
|
-
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(() => {
|
|
20330
21097
|
setIsRefreshing(true);
|
|
20331
21098
|
loadNotifications(true, true);
|
|
20332
21099
|
}, [loadNotifications]);
|
|
@@ -20334,14 +21101,14 @@ var NotificationsScreen = () => {
|
|
|
20334
21101
|
() => groupByTime(notifications, (item) => item.created_at, classifyTime),
|
|
20335
21102
|
[notifications, classifyTime]
|
|
20336
21103
|
);
|
|
20337
|
-
const header = /* @__PURE__ */
|
|
20338
|
-
/* @__PURE__ */
|
|
20339
|
-
/* @__PURE__ */
|
|
20340
|
-
/* @__PURE__ */
|
|
20341
|
-
|
|
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,
|
|
20342
21109
|
{
|
|
20343
21110
|
style: [
|
|
20344
|
-
|
|
21111
|
+
styles53.filterBtn,
|
|
20345
21112
|
{
|
|
20346
21113
|
backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
|
|
20347
21114
|
borderColor: isFiltered ? colors.primary : colors.border
|
|
@@ -20350,30 +21117,30 @@ var NotificationsScreen = () => {
|
|
|
20350
21117
|
onPress: () => setFilterOpen(true),
|
|
20351
21118
|
accessibilityRole: "button",
|
|
20352
21119
|
accessibilityLabel: t("filter") || "Filter",
|
|
20353
|
-
children: /* @__PURE__ */
|
|
21120
|
+
children: /* @__PURE__ */ jsx67(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
|
|
20354
21121
|
}
|
|
20355
21122
|
)
|
|
20356
21123
|
] }),
|
|
20357
|
-
summary.unread > 0 ? /* @__PURE__ */
|
|
20358
|
-
/* @__PURE__ */
|
|
20359
|
-
/* @__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" })
|
|
20360
21127
|
] }) : null
|
|
20361
21128
|
] });
|
|
20362
|
-
return /* @__PURE__ */
|
|
20363
|
-
/* @__PURE__ */
|
|
21129
|
+
return /* @__PURE__ */ jsxs44(Fragment16, { children: [
|
|
21130
|
+
/* @__PURE__ */ jsx67(
|
|
20364
21131
|
FlatList3,
|
|
20365
21132
|
{
|
|
20366
21133
|
data: sections,
|
|
20367
21134
|
keyExtractor: (section2) => section2.key,
|
|
20368
|
-
style: [
|
|
20369
|
-
contentContainerStyle: [
|
|
21135
|
+
style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
|
|
21136
|
+
contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
|
|
20370
21137
|
ListHeaderComponent: header,
|
|
20371
21138
|
showsVerticalScrollIndicator: false,
|
|
20372
|
-
refreshControl: /* @__PURE__ */
|
|
20373
|
-
renderItem: ({ item: section2 }) => /* @__PURE__ */
|
|
20374
|
-
/* @__PURE__ */
|
|
20375
|
-
/* @__PURE__ */
|
|
20376
|
-
/* @__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(
|
|
20377
21144
|
NotificationRow,
|
|
20378
21145
|
{
|
|
20379
21146
|
notification: item,
|
|
@@ -20382,19 +21149,19 @@ var NotificationsScreen = () => {
|
|
|
20382
21149
|
onAcknowledge: () => onAcknowledgeRow(item)
|
|
20383
21150
|
}
|
|
20384
21151
|
),
|
|
20385
|
-
index < section2.data.length - 1 ? /* @__PURE__ */
|
|
21152
|
+
index < section2.data.length - 1 ? /* @__PURE__ */ jsx67(View51, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
|
|
20386
21153
|
] }, item.uuid)) }) })
|
|
20387
21154
|
] }),
|
|
20388
|
-
ListEmptyComponent: isLoading ? /* @__PURE__ */
|
|
20389
|
-
/* @__PURE__ */
|
|
20390
|
-
/* @__PURE__ */
|
|
20391
|
-
/* @__PURE__ */
|
|
20392
|
-
/* @__PURE__ */
|
|
20393
|
-
/* @__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 })
|
|
20394
21161
|
] })
|
|
20395
21162
|
] }),
|
|
20396
|
-
i < 3 ? /* @__PURE__ */
|
|
20397
|
-
] }, 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(
|
|
20398
21165
|
PCEmpty,
|
|
20399
21166
|
{
|
|
20400
21167
|
iconName: "circle-check",
|
|
@@ -20403,14 +21170,14 @@ var NotificationsScreen = () => {
|
|
|
20403
21170
|
}
|
|
20404
21171
|
) }),
|
|
20405
21172
|
ListFooterComponentStyle: { marginTop: "auto" },
|
|
20406
|
-
ListFooterComponent: /* @__PURE__ */
|
|
21173
|
+
ListFooterComponent: /* @__PURE__ */ jsx67(Footer, {})
|
|
20407
21174
|
}
|
|
20408
21175
|
),
|
|
20409
|
-
/* @__PURE__ */
|
|
20410
|
-
/* @__PURE__ */
|
|
20411
|
-
/* @__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) => {
|
|
20412
21179
|
const selected = tab.key === activeTab;
|
|
20413
|
-
return /* @__PURE__ */
|
|
21180
|
+
return /* @__PURE__ */ jsx67(
|
|
20414
21181
|
FilterChip,
|
|
20415
21182
|
{
|
|
20416
21183
|
label: tab.label,
|
|
@@ -20420,12 +21187,12 @@ var NotificationsScreen = () => {
|
|
|
20420
21187
|
tab.key
|
|
20421
21188
|
);
|
|
20422
21189
|
}) }),
|
|
20423
|
-
/* @__PURE__ */
|
|
20424
|
-
/* @__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: [
|
|
20425
21192
|
{ key: "all", label: t("all") || "All" },
|
|
20426
21193
|
{ key: "unread", label: t("unread") || "Unread" },
|
|
20427
21194
|
{ key: "read", label: t("read", { defaultValue: "Read" }) }
|
|
20428
|
-
].map((opt) => /* @__PURE__ */
|
|
21195
|
+
].map((opt) => /* @__PURE__ */ jsx67(
|
|
20429
21196
|
FilterChip,
|
|
20430
21197
|
{
|
|
20431
21198
|
label: opt.label,
|
|
@@ -20434,13 +21201,13 @@ var NotificationsScreen = () => {
|
|
|
20434
21201
|
},
|
|
20435
21202
|
opt.key
|
|
20436
21203
|
)) }),
|
|
20437
|
-
/* @__PURE__ */
|
|
20438
|
-
|
|
21204
|
+
/* @__PURE__ */ jsx67(
|
|
21205
|
+
TouchableOpacity22,
|
|
20439
21206
|
{
|
|
20440
|
-
style: [
|
|
21207
|
+
style: [styles53.applyBtn, { backgroundColor: colors.primary }],
|
|
20441
21208
|
onPress: () => setFilterOpen(false),
|
|
20442
21209
|
accessibilityRole: "button",
|
|
20443
|
-
children: /* @__PURE__ */
|
|
21210
|
+
children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
|
|
20444
21211
|
}
|
|
20445
21212
|
)
|
|
20446
21213
|
] }) })
|
|
@@ -20448,25 +21215,25 @@ var NotificationsScreen = () => {
|
|
|
20448
21215
|
};
|
|
20449
21216
|
var FilterChip = ({ label, selected, onPress }) => {
|
|
20450
21217
|
const { colors } = useTheme();
|
|
20451
|
-
return /* @__PURE__ */
|
|
20452
|
-
|
|
21218
|
+
return /* @__PURE__ */ jsx67(
|
|
21219
|
+
TouchableOpacity22,
|
|
20453
21220
|
{
|
|
20454
21221
|
onPress,
|
|
20455
21222
|
activeOpacity: 0.7,
|
|
20456
21223
|
accessibilityRole: "button",
|
|
20457
21224
|
accessibilityState: { selected },
|
|
20458
21225
|
style: [
|
|
20459
|
-
|
|
21226
|
+
styles53.chip,
|
|
20460
21227
|
{
|
|
20461
21228
|
backgroundColor: selected ? colors.primary : colors.surfaceAlt,
|
|
20462
21229
|
borderColor: selected ? colors.primary : colors.border
|
|
20463
21230
|
}
|
|
20464
21231
|
],
|
|
20465
|
-
children: /* @__PURE__ */
|
|
21232
|
+
children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
|
|
20466
21233
|
}
|
|
20467
21234
|
);
|
|
20468
21235
|
};
|
|
20469
|
-
var
|
|
21236
|
+
var styles53 = StyleSheet54.create({
|
|
20470
21237
|
list: {
|
|
20471
21238
|
flex: 1
|
|
20472
21239
|
},
|
|
@@ -20500,7 +21267,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20500
21267
|
filterBtn: {
|
|
20501
21268
|
width: 40,
|
|
20502
21269
|
height: 40,
|
|
20503
|
-
borderWidth:
|
|
21270
|
+
borderWidth: StyleSheet54.hairlineWidth,
|
|
20504
21271
|
borderRadius: radii.md,
|
|
20505
21272
|
justifyContent: "center",
|
|
20506
21273
|
alignItems: "center"
|
|
@@ -20521,7 +21288,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20521
21288
|
overflow: "hidden"
|
|
20522
21289
|
},
|
|
20523
21290
|
separator: {
|
|
20524
|
-
height:
|
|
21291
|
+
height: StyleSheet54.hairlineWidth,
|
|
20525
21292
|
marginLeft: spacing.lg + 36 + spacing.md
|
|
20526
21293
|
},
|
|
20527
21294
|
emptyWrap: {
|
|
@@ -20559,7 +21326,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20559
21326
|
justifyContent: "center",
|
|
20560
21327
|
paddingHorizontal: spacing.lg,
|
|
20561
21328
|
borderRadius: radii.pill,
|
|
20562
|
-
borderWidth:
|
|
21329
|
+
borderWidth: StyleSheet54.hairlineWidth
|
|
20563
21330
|
},
|
|
20564
21331
|
chipLabel: {
|
|
20565
21332
|
...typography.label
|
|
@@ -20578,7 +21345,7 @@ var styles51 = StyleSheet52.create({
|
|
|
20578
21345
|
});
|
|
20579
21346
|
|
|
20580
21347
|
// src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
|
|
20581
|
-
import { Fragment as Fragment17, jsx as
|
|
21348
|
+
import { Fragment as Fragment17, jsx as jsx68, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
20582
21349
|
var privacyCenterQueryClient = new QueryClient();
|
|
20583
21350
|
function PrivacyCenterContent({ onBack }) {
|
|
20584
21351
|
const { currentPage } = useInternalNavigation();
|
|
@@ -20588,24 +21355,24 @@ function PrivacyCenterContent({ onBack }) {
|
|
|
20588
21355
|
const chromeMode = getPageChromeMode(currentPage);
|
|
20589
21356
|
const canvasIsLight = isLightColor(colors.canvasSubtle);
|
|
20590
21357
|
const barStyle = canvasIsLight ? "dark-content" : "light-content";
|
|
20591
|
-
|
|
21358
|
+
useEffect21(() => {
|
|
20592
21359
|
StatusBar2.setBarStyle(barStyle, true);
|
|
20593
21360
|
if (Platform8.OS === "android") {
|
|
20594
21361
|
setNavBarIconStyle(canvasIsLight ? "dark" : "light");
|
|
20595
21362
|
}
|
|
20596
21363
|
}, [barStyle, canvasIsLight]);
|
|
20597
|
-
return /* @__PURE__ */
|
|
20598
|
-
/* @__PURE__ */
|
|
20599
|
-
/* @__PURE__ */
|
|
20600
|
-
/* @__PURE__ */
|
|
20601
|
-
/* @__PURE__ */
|
|
20602
|
-
currentPage === "home" && /* @__PURE__ */
|
|
20603
|
-
currentPage === "consent-manager" && /* @__PURE__ */
|
|
20604
|
-
currentPage === "form" && /* @__PURE__ */
|
|
20605
|
-
currentPage === "activity" && /* @__PURE__ */
|
|
20606
|
-
currentPage === "receipts" && /* @__PURE__ */
|
|
20607
|
-
currentPage === "case-details" && /* @__PURE__ */
|
|
20608
|
-
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, {})
|
|
20609
21376
|
] }) })
|
|
20610
21377
|
] }) })
|
|
20611
21378
|
] });
|
|
@@ -20619,22 +21386,34 @@ function RedactoPrivacyCenter({
|
|
|
20619
21386
|
theme: _theme,
|
|
20620
21387
|
accessToken,
|
|
20621
21388
|
refreshToken,
|
|
21389
|
+
token,
|
|
21390
|
+
email,
|
|
21391
|
+
mobile,
|
|
21392
|
+
ucic,
|
|
21393
|
+
organisationUuid,
|
|
21394
|
+
workspaceUuid,
|
|
20622
21395
|
onError,
|
|
20623
21396
|
initialPage = "home",
|
|
20624
21397
|
initialCaseUuid,
|
|
20625
21398
|
onBack
|
|
20626
21399
|
}) {
|
|
20627
|
-
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(
|
|
20628
21401
|
AuthProvider,
|
|
20629
21402
|
{
|
|
20630
|
-
accessToken,
|
|
20631
|
-
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,
|
|
20632
21411
|
onError,
|
|
20633
|
-
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 }) }) }) }) })
|
|
20634
21413
|
}
|
|
20635
21414
|
) }) }) }) }) }) });
|
|
20636
21415
|
}
|
|
20637
|
-
var
|
|
21416
|
+
var styles54 = StyleSheet55.create({
|
|
20638
21417
|
container: {
|
|
20639
21418
|
flex: 1
|
|
20640
21419
|
},
|
|
@@ -20649,78 +21428,78 @@ var styles52 = StyleSheet53.create({
|
|
|
20649
21428
|
|
|
20650
21429
|
// src/RedactoPrivacyCenter/components/SideMenu.tsx
|
|
20651
21430
|
import {
|
|
20652
|
-
StyleSheet as
|
|
20653
|
-
Text as
|
|
20654
|
-
TouchableOpacity as
|
|
20655
|
-
View as
|
|
21431
|
+
StyleSheet as StyleSheet56,
|
|
21432
|
+
Text as Text43,
|
|
21433
|
+
TouchableOpacity as TouchableOpacity23,
|
|
21434
|
+
View as View53
|
|
20656
21435
|
} from "react-native";
|
|
20657
|
-
import { useTranslation as
|
|
21436
|
+
import { useTranslation as useTranslation30 } from "react-i18next";
|
|
20658
21437
|
import Svg2, { Path as Path2 } from "react-native-svg";
|
|
20659
|
-
import { Fragment as Fragment18, jsx as
|
|
21438
|
+
import { Fragment as Fragment18, jsx as jsx69, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
20660
21439
|
var MENU_ITEMS = [
|
|
20661
21440
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
|
|
20662
21441
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
|
|
20663
21442
|
{ page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
|
|
20664
21443
|
];
|
|
20665
21444
|
function SideMenu({ onBack } = {}) {
|
|
20666
|
-
const { t } =
|
|
21445
|
+
const { t } = useTranslation30();
|
|
20667
21446
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20668
21447
|
const { organizationName, email } = useAuth();
|
|
20669
21448
|
const { colors } = useTheme();
|
|
20670
21449
|
const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
|
|
20671
21450
|
const displayName = organizationName || "Organization";
|
|
20672
|
-
return /* @__PURE__ */
|
|
20673
|
-
/* @__PURE__ */
|
|
20674
|
-
/* @__PURE__ */
|
|
20675
|
-
/* @__PURE__ */
|
|
20676
|
-
/* @__PURE__ */
|
|
20677
|
-
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
|
|
20678
21457
|
] })
|
|
20679
21458
|
] }),
|
|
20680
|
-
/* @__PURE__ */
|
|
20681
|
-
/* @__PURE__ */
|
|
21459
|
+
/* @__PURE__ */ jsx69(View53, { style: [styles55.divider, { backgroundColor: colors.border }] }),
|
|
21460
|
+
/* @__PURE__ */ jsx69(View53, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
|
|
20682
21461
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
20683
|
-
return /* @__PURE__ */
|
|
20684
|
-
|
|
21462
|
+
return /* @__PURE__ */ jsxs46(
|
|
21463
|
+
TouchableOpacity23,
|
|
20685
21464
|
{
|
|
20686
21465
|
style: [
|
|
20687
|
-
|
|
20688
|
-
isActive && [
|
|
21466
|
+
styles55.menuItem,
|
|
21467
|
+
isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
|
|
20689
21468
|
],
|
|
20690
21469
|
onPress: () => navigateTo(item.page),
|
|
20691
21470
|
activeOpacity: 0.7,
|
|
20692
21471
|
accessibilityRole: "button",
|
|
20693
21472
|
accessibilityState: { selected: isActive },
|
|
20694
21473
|
children: [
|
|
20695
|
-
/* @__PURE__ */
|
|
20696
|
-
/* @__PURE__ */
|
|
20697
|
-
|
|
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,
|
|
20698
21477
|
{
|
|
20699
21478
|
style: [
|
|
20700
|
-
|
|
21479
|
+
styles55.menuLabel,
|
|
20701
21480
|
{ color: isActive ? colors.primary : colors.text },
|
|
20702
|
-
isActive &&
|
|
21481
|
+
isActive && styles55.menuLabelActive
|
|
20703
21482
|
],
|
|
20704
21483
|
children: t(item.labelKey) || item.fallback
|
|
20705
21484
|
}
|
|
20706
21485
|
),
|
|
20707
|
-
isActive ? /* @__PURE__ */
|
|
21486
|
+
isActive ? /* @__PURE__ */ jsx69(View53, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
|
|
20708
21487
|
]
|
|
20709
21488
|
},
|
|
20710
21489
|
item.page
|
|
20711
21490
|
);
|
|
20712
21491
|
}) }),
|
|
20713
|
-
onBack ? /* @__PURE__ */
|
|
20714
|
-
/* @__PURE__ */
|
|
20715
|
-
/* @__PURE__ */
|
|
20716
|
-
/* @__PURE__ */
|
|
20717
|
-
|
|
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,
|
|
20718
21497
|
{
|
|
20719
|
-
style:
|
|
21498
|
+
style: styles55.backBtn,
|
|
20720
21499
|
onPress: () => navigateBack(onBack),
|
|
20721
21500
|
activeOpacity: 0.7,
|
|
20722
21501
|
children: [
|
|
20723
|
-
/* @__PURE__ */
|
|
21502
|
+
/* @__PURE__ */ jsx69(Svg2, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ jsx69(
|
|
20724
21503
|
Path2,
|
|
20725
21504
|
{
|
|
20726
21505
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20729,7 +21508,7 @@ function SideMenu({ onBack } = {}) {
|
|
|
20729
21508
|
strokeLinecap: "round",
|
|
20730
21509
|
strokeLinejoin: "round"
|
|
20731
21510
|
}
|
|
20732
|
-
) : /* @__PURE__ */
|
|
21511
|
+
) : /* @__PURE__ */ jsx69(
|
|
20733
21512
|
Path2,
|
|
20734
21513
|
{
|
|
20735
21514
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20739,14 +21518,14 @@ function SideMenu({ onBack } = {}) {
|
|
|
20739
21518
|
strokeLinejoin: "round"
|
|
20740
21519
|
}
|
|
20741
21520
|
) }),
|
|
20742
|
-
/* @__PURE__ */
|
|
21521
|
+
/* @__PURE__ */ jsx69(Text43, { style: [styles55.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
|
|
20743
21522
|
]
|
|
20744
21523
|
}
|
|
20745
21524
|
)
|
|
20746
21525
|
] }) : null
|
|
20747
21526
|
] });
|
|
20748
21527
|
}
|
|
20749
|
-
var
|
|
21528
|
+
var styles55 = StyleSheet56.create({
|
|
20750
21529
|
container: {
|
|
20751
21530
|
flex: 1,
|
|
20752
21531
|
paddingTop: 12
|
|
@@ -20832,42 +21611,68 @@ var styles53 = StyleSheet54.create({
|
|
|
20832
21611
|
});
|
|
20833
21612
|
|
|
20834
21613
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20835
|
-
import { useCallback as
|
|
20836
|
-
import { StyleSheet as
|
|
20837
|
-
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";
|
|
20838
21617
|
import Svg4, { Path as Path4 } from "react-native-svg";
|
|
20839
21618
|
|
|
20840
21619
|
// src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
|
|
20841
|
-
import { Image as Image4, StyleSheet as
|
|
20842
|
-
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";
|
|
20843
21622
|
import Svg3, { Path as Path3 } from "react-native-svg";
|
|
20844
|
-
import { jsx as
|
|
21623
|
+
import { jsx as jsx70, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
20845
21624
|
var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
20846
|
-
const { t } =
|
|
21625
|
+
const { t } = useTranslation31();
|
|
20847
21626
|
const { organizationName, email } = useAuth();
|
|
20848
21627
|
const { colors, branding } = useTheme();
|
|
21628
|
+
const { switchProfile } = useProfileSwitch();
|
|
20849
21629
|
const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20850
21630
|
const handleAction = () => {
|
|
20851
21631
|
onClose();
|
|
20852
21632
|
navigateBack(onBack);
|
|
20853
21633
|
};
|
|
20854
|
-
return /* @__PURE__ */
|
|
20855
|
-
/* @__PURE__ */
|
|
20856
|
-
(branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */
|
|
20857
|
-
/* @__PURE__ */
|
|
20858
|
-
/* @__PURE__ */
|
|
20859
|
-
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
|
|
20860
21640
|
] })
|
|
20861
21641
|
] }),
|
|
20862
|
-
|
|
20863
|
-
|
|
21642
|
+
switchProfile ? /* @__PURE__ */ jsxs47(
|
|
21643
|
+
TouchableOpacity24,
|
|
20864
21644
|
{
|
|
20865
|
-
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) }],
|
|
20866
21671
|
onPress: handleAction,
|
|
20867
21672
|
activeOpacity: 0.7,
|
|
20868
21673
|
accessibilityRole: "button",
|
|
20869
21674
|
children: [
|
|
20870
|
-
/* @__PURE__ */
|
|
21675
|
+
/* @__PURE__ */ jsx70(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ jsx70(
|
|
20871
21676
|
Path3,
|
|
20872
21677
|
{
|
|
20873
21678
|
d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
|
|
@@ -20876,7 +21681,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20876
21681
|
strokeLinecap: "round",
|
|
20877
21682
|
strokeLinejoin: "round"
|
|
20878
21683
|
}
|
|
20879
|
-
) : /* @__PURE__ */
|
|
21684
|
+
) : /* @__PURE__ */ jsx70(
|
|
20880
21685
|
Path3,
|
|
20881
21686
|
{
|
|
20882
21687
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -20886,13 +21691,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
|
|
|
20886
21691
|
strokeLinejoin: "round"
|
|
20887
21692
|
}
|
|
20888
21693
|
) }),
|
|
20889
|
-
/* @__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" })
|
|
20890
21695
|
]
|
|
20891
21696
|
}
|
|
20892
21697
|
) : null
|
|
20893
21698
|
] });
|
|
20894
21699
|
};
|
|
20895
|
-
var
|
|
21700
|
+
var styles56 = StyleSheet57.create({
|
|
20896
21701
|
identity: {
|
|
20897
21702
|
flexDirection: "row",
|
|
20898
21703
|
alignItems: "center",
|
|
@@ -20933,33 +21738,33 @@ var styles54 = StyleSheet55.create({
|
|
|
20933
21738
|
});
|
|
20934
21739
|
|
|
20935
21740
|
// src/RedactoPrivacyCenter/components/Navbar.tsx
|
|
20936
|
-
import { Fragment as Fragment19, jsx as
|
|
21741
|
+
import { Fragment as Fragment19, jsx as jsx71, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
20937
21742
|
function Navbar({ mode = "primary", onBack }) {
|
|
20938
|
-
const { t } =
|
|
21743
|
+
const { t } = useTranslation32();
|
|
20939
21744
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
20940
21745
|
const { organizationName, email } = useAuth();
|
|
20941
21746
|
const { colors, branding } = useTheme();
|
|
20942
|
-
const [locale, setLocale] =
|
|
20943
|
-
const [menuOpen, setMenuOpen] =
|
|
21747
|
+
const [locale, setLocale] = useState26(i18n_default.language || "en");
|
|
21748
|
+
const [menuOpen, setMenuOpen] = useState26(false);
|
|
20944
21749
|
const unreadCount = useUnreadCount();
|
|
20945
21750
|
const { status: pageStatus } = usePageStatus();
|
|
20946
21751
|
const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
|
|
20947
21752
|
const isDetail = mode === "detail";
|
|
20948
|
-
|
|
21753
|
+
useEffect22(() => {
|
|
20949
21754
|
const handleLanguageChanged = () => setLocale(i18n_default.language);
|
|
20950
21755
|
i18n_default.on("languageChanged", handleLanguageChanged);
|
|
20951
21756
|
return () => {
|
|
20952
21757
|
i18n_default.off("languageChanged", handleLanguageChanged);
|
|
20953
21758
|
};
|
|
20954
21759
|
}, []);
|
|
20955
|
-
const handleLanguageChange =
|
|
21760
|
+
const handleLanguageChange = useCallback15((value) => {
|
|
20956
21761
|
i18n_default.changeLanguage(value);
|
|
20957
21762
|
}, []);
|
|
20958
21763
|
const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
|
|
20959
21764
|
const accountLabel = brandLabel || email || t("account") || "Account";
|
|
20960
|
-
const brandLockup = /* @__PURE__ */
|
|
20961
|
-
/* @__PURE__ */
|
|
20962
|
-
/* @__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 })
|
|
20963
21768
|
] });
|
|
20964
21769
|
const handleDetailBack = () => {
|
|
20965
21770
|
if (currentPage === "case-details") {
|
|
@@ -20971,26 +21776,26 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
20971
21776
|
}
|
|
20972
21777
|
};
|
|
20973
21778
|
if (isDetail) {
|
|
20974
|
-
return /* @__PURE__ */
|
|
20975
|
-
/* @__PURE__ */
|
|
20976
|
-
|
|
21779
|
+
return /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
21780
|
+
/* @__PURE__ */ jsx71(
|
|
21781
|
+
View55,
|
|
20977
21782
|
{
|
|
20978
21783
|
style: [
|
|
20979
|
-
|
|
20980
|
-
|
|
21784
|
+
styles57.container,
|
|
21785
|
+
styles57.detailContainer,
|
|
20981
21786
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
20982
21787
|
],
|
|
20983
|
-
children: /* @__PURE__ */
|
|
20984
|
-
/* @__PURE__ */
|
|
20985
|
-
|
|
21788
|
+
children: /* @__PURE__ */ jsxs48(View55, { style: styles57.detailRow, children: [
|
|
21789
|
+
/* @__PURE__ */ jsx71(
|
|
21790
|
+
TouchableOpacity25,
|
|
20986
21791
|
{
|
|
20987
|
-
style:
|
|
21792
|
+
style: styles57.backButton,
|
|
20988
21793
|
onPress: handleDetailBack,
|
|
20989
21794
|
activeOpacity: 0.7,
|
|
20990
21795
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
20991
21796
|
accessibilityRole: "button",
|
|
20992
21797
|
accessibilityLabel: t("back") || "Back",
|
|
20993
|
-
children: /* @__PURE__ */
|
|
21798
|
+
children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
|
|
20994
21799
|
Path4,
|
|
20995
21800
|
{
|
|
20996
21801
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -21002,36 +21807,36 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
21002
21807
|
) })
|
|
21003
21808
|
}
|
|
21004
21809
|
),
|
|
21005
|
-
/* @__PURE__ */
|
|
21006
|
-
/* @__PURE__ */
|
|
21007
|
-
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
|
|
21008
21813
|
] })
|
|
21009
21814
|
] })
|
|
21010
21815
|
}
|
|
21011
21816
|
),
|
|
21012
|
-
/* @__PURE__ */
|
|
21817
|
+
/* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21013
21818
|
] });
|
|
21014
21819
|
}
|
|
21015
|
-
return /* @__PURE__ */
|
|
21016
|
-
/* @__PURE__ */
|
|
21017
|
-
|
|
21820
|
+
return /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
21821
|
+
/* @__PURE__ */ jsxs48(
|
|
21822
|
+
View55,
|
|
21018
21823
|
{
|
|
21019
21824
|
style: [
|
|
21020
|
-
|
|
21825
|
+
styles57.container,
|
|
21021
21826
|
{ backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
|
|
21022
21827
|
],
|
|
21023
21828
|
children: [
|
|
21024
|
-
/* @__PURE__ */
|
|
21025
|
-
onBack ? /* @__PURE__ */
|
|
21026
|
-
|
|
21829
|
+
/* @__PURE__ */ jsxs48(View55, { style: styles57.appBar, children: [
|
|
21830
|
+
onBack ? /* @__PURE__ */ jsx71(
|
|
21831
|
+
TouchableOpacity25,
|
|
21027
21832
|
{
|
|
21028
|
-
style:
|
|
21833
|
+
style: styles57.backButton,
|
|
21029
21834
|
onPress: () => navigateBack(onBack),
|
|
21030
21835
|
activeOpacity: 0.7,
|
|
21031
21836
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21032
21837
|
accessibilityRole: "button",
|
|
21033
21838
|
accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
|
|
21034
|
-
children: /* @__PURE__ */
|
|
21839
|
+
children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
|
|
21035
21840
|
Path4,
|
|
21036
21841
|
{
|
|
21037
21842
|
d: "M19 12H5m0 0l7 7m-7-7l7-7",
|
|
@@ -21043,39 +21848,39 @@ function Navbar({ mode = "primary", onBack }) {
|
|
|
21043
21848
|
) })
|
|
21044
21849
|
}
|
|
21045
21850
|
) : null,
|
|
21046
|
-
/* @__PURE__ */
|
|
21047
|
-
/* @__PURE__ */
|
|
21048
|
-
/* @__PURE__ */
|
|
21049
|
-
/* @__PURE__ */
|
|
21050
|
-
/* @__PURE__ */
|
|
21051
|
-
|
|
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,
|
|
21052
21857
|
{
|
|
21053
|
-
style:
|
|
21858
|
+
style: styles57.avatarButton,
|
|
21054
21859
|
onPress: () => setMenuOpen(true),
|
|
21055
21860
|
activeOpacity: 0.7,
|
|
21056
21861
|
hitSlop: DEFAULT_HIT_SLOP,
|
|
21057
21862
|
accessibilityRole: "button",
|
|
21058
21863
|
accessibilityLabel: accountLabel,
|
|
21059
|
-
children: /* @__PURE__ */
|
|
21864
|
+
children: /* @__PURE__ */ jsx71(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
|
|
21060
21865
|
}
|
|
21061
21866
|
)
|
|
21062
21867
|
] })
|
|
21063
21868
|
] }),
|
|
21064
|
-
/* @__PURE__ */
|
|
21065
|
-
/* @__PURE__ */
|
|
21066
|
-
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
|
|
21067
21872
|
] }) })
|
|
21068
21873
|
]
|
|
21069
21874
|
}
|
|
21070
21875
|
),
|
|
21071
|
-
/* @__PURE__ */
|
|
21876
|
+
/* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
|
|
21072
21877
|
] });
|
|
21073
21878
|
}
|
|
21074
|
-
var
|
|
21879
|
+
var styles57 = StyleSheet58.create({
|
|
21075
21880
|
container: {
|
|
21076
21881
|
paddingHorizontal: spacing.lg,
|
|
21077
21882
|
paddingBottom: spacing.md,
|
|
21078
|
-
borderBottomWidth:
|
|
21883
|
+
borderBottomWidth: StyleSheet58.hairlineWidth
|
|
21079
21884
|
},
|
|
21080
21885
|
detailContainer: {
|
|
21081
21886
|
paddingBottom: spacing.sm
|
|
@@ -21155,10 +21960,10 @@ var styles55 = StyleSheet56.create({
|
|
|
21155
21960
|
});
|
|
21156
21961
|
|
|
21157
21962
|
// src/RedactoPrivacyCenter/components/BottomTabBar.tsx
|
|
21158
|
-
import { useState as
|
|
21159
|
-
import { Animated as Animated14, StyleSheet as
|
|
21160
|
-
import { useTranslation as
|
|
21161
|
-
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";
|
|
21162
21967
|
var TAB_ITEMS = [
|
|
21163
21968
|
{ page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
|
|
21164
21969
|
{ page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
|
|
@@ -21169,10 +21974,10 @@ var PAD_H = spacing.lg;
|
|
|
21169
21974
|
var PILL_WIDTH = 56;
|
|
21170
21975
|
var PILL_HEIGHT = 34;
|
|
21171
21976
|
function BottomTabBar({ showFooter = true }) {
|
|
21172
|
-
const { t } =
|
|
21977
|
+
const { t } = useTranslation33();
|
|
21173
21978
|
const { currentPage, navigateTo } = useInternalNavigation();
|
|
21174
21979
|
const { colors } = useTheme();
|
|
21175
|
-
const [rowWidth, setRowWidth] =
|
|
21980
|
+
const [rowWidth, setRowWidth] = useState27(0);
|
|
21176
21981
|
const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
|
|
21177
21982
|
const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
|
|
21178
21983
|
const activeIndex = TAB_ITEMS.findIndex(
|
|
@@ -21180,13 +21985,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21180
21985
|
);
|
|
21181
21986
|
const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
|
|
21182
21987
|
const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
|
|
21183
|
-
return /* @__PURE__ */
|
|
21184
|
-
/* @__PURE__ */
|
|
21185
|
-
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(
|
|
21186
21991
|
Animated14.View,
|
|
21187
21992
|
{
|
|
21188
21993
|
style: [
|
|
21189
|
-
|
|
21994
|
+
styles58.pill,
|
|
21190
21995
|
{
|
|
21191
21996
|
width: PILL_WIDTH,
|
|
21192
21997
|
left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
|
|
@@ -21199,17 +22004,17 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21199
22004
|
TAB_ITEMS.map((item) => {
|
|
21200
22005
|
const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
|
|
21201
22006
|
const label = t(item.labelKey) || item.fallback;
|
|
21202
|
-
return /* @__PURE__ */
|
|
21203
|
-
|
|
22007
|
+
return /* @__PURE__ */ jsxs49(
|
|
22008
|
+
TouchableOpacity26,
|
|
21204
22009
|
{
|
|
21205
|
-
style:
|
|
22010
|
+
style: styles58.tab,
|
|
21206
22011
|
onPress: () => navigateTo(item.page),
|
|
21207
22012
|
activeOpacity: 0.7,
|
|
21208
22013
|
accessibilityRole: "tab",
|
|
21209
22014
|
accessibilityState: { selected: isActive },
|
|
21210
22015
|
accessibilityLabel: label,
|
|
21211
22016
|
children: [
|
|
21212
|
-
/* @__PURE__ */
|
|
22017
|
+
/* @__PURE__ */ jsx72(View56, { style: styles58.iconWrap, children: /* @__PURE__ */ jsx72(
|
|
21213
22018
|
Icon,
|
|
21214
22019
|
{
|
|
21215
22020
|
name: item.icon,
|
|
@@ -21218,10 +22023,10 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21218
22023
|
strokeWidth: isActive ? 2.1 : 1.85
|
|
21219
22024
|
}
|
|
21220
22025
|
) }),
|
|
21221
|
-
/* @__PURE__ */
|
|
21222
|
-
|
|
22026
|
+
/* @__PURE__ */ jsx72(
|
|
22027
|
+
Text46,
|
|
21223
22028
|
{
|
|
21224
|
-
style: [
|
|
22029
|
+
style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
|
|
21225
22030
|
numberOfLines: 1,
|
|
21226
22031
|
children: label
|
|
21227
22032
|
}
|
|
@@ -21232,13 +22037,13 @@ function BottomTabBar({ showFooter = true }) {
|
|
|
21232
22037
|
);
|
|
21233
22038
|
})
|
|
21234
22039
|
] }),
|
|
21235
|
-
showFooter ? /* @__PURE__ */
|
|
21236
|
-
/* @__PURE__ */
|
|
22040
|
+
showFooter ? /* @__PURE__ */ jsx72(Footer, { inline: true }) : null,
|
|
22041
|
+
/* @__PURE__ */ jsx72(View56, { style: { height: BOTTOM_INSET } })
|
|
21237
22042
|
] });
|
|
21238
22043
|
}
|
|
21239
|
-
var
|
|
22044
|
+
var styles58 = StyleSheet59.create({
|
|
21240
22045
|
wrapper: {
|
|
21241
|
-
borderTopWidth:
|
|
22046
|
+
borderTopWidth: StyleSheet59.hairlineWidth
|
|
21242
22047
|
},
|
|
21243
22048
|
container: {
|
|
21244
22049
|
flexDirection: "row",
|