datakeen-session-react 1.1.140-dev.108 → 1.1.140-dev.109

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.
@@ -44,22 +44,28 @@ var SignedDocumentPreview = function (_a) {
44
44
  });
45
45
  }); };
46
46
  var poll = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
47
- var statusResponse, ready, err_1;
48
- var _a, _b;
49
- return tslib_es6.__generator(this, function (_c) {
50
- switch (_c.label) {
47
+ var statusResponse, ready, error, err_1;
48
+ var _a, _b, _c, _d;
49
+ return tslib_es6.__generator(this, function (_e) {
50
+ switch (_e.label) {
51
51
  case 0:
52
- _c.trys.push([0, 4, , 5]);
52
+ _e.trys.push([0, 4, , 5]);
53
53
  return [4 /*yield*/, api.apiService.get("/session/sdk/".concat(sessionId, "/signed-document/").concat(nodeId, "/status"))];
54
54
  case 1:
55
- statusResponse = _c.sent();
55
+ statusResponse = _e.sent();
56
56
  ready = !!((_b = (_a = statusResponse.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.ready);
57
+ error = (_d = (_c = statusResponse.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.error;
57
58
  if (!ready) return [3 /*break*/, 3];
58
59
  return [4 /*yield*/, fetchSignedDocument()];
59
60
  case 2:
60
- _c.sent();
61
+ _e.sent();
61
62
  return [2 /*return*/];
62
63
  case 3:
64
+ if (error === "declined" || error === "expired") {
65
+ if (!cancelledRef.current)
66
+ setStatus(error);
67
+ return [2 /*return*/];
68
+ }
63
69
  attempts += 1;
64
70
  if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {
65
71
  if (!cancelledRef.current)
@@ -69,7 +75,7 @@ var SignedDocumentPreview = function (_a) {
69
75
  timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);
70
76
  return [3 /*break*/, 5];
71
77
  case 4:
72
- err_1 = _c.sent();
78
+ err_1 = _e.sent();
73
79
  console.error("[SignedDocumentPreview] Failed to load signed document:", err_1);
74
80
  if (!cancelledRef.current)
75
81
  setStatus("error");
@@ -94,7 +100,7 @@ var SignedDocumentPreview = function (_a) {
94
100
  if (status === "polling") {
95
101
  return (jsxRuntime.jsx(LoadingState.default, { message: t("signed_document.loading", "Préparation du document signé..."), subtitle: "" }));
96
102
  }
97
- return (jsxRuntime.jsx(MobilePageLayout.default, { footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: onContinue, type: "button", children: t("buttons.continue", "Continuer") }) }), children: jsxRuntime.jsxs("div", { className: "flex flex-col h-full px-4 py-4 md:px-8", children: [status === "ready" && pdfSrc && (jsxRuntime.jsx(PDFPreview.default, { src: pdfSrc, className: "flex-1" })), status === "error" && (jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.error", "Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.") }))] }) }));
103
+ return (jsxRuntime.jsx(MobilePageLayout.default, { footer: jsxRuntime.jsx(PageActions.default, { primary: jsxRuntime.jsx(Button.default, { onClick: onContinue, type: "button", children: t("buttons.continue", "Continuer") }) }), children: jsxRuntime.jsxs("div", { className: "flex flex-col h-full px-4 py-4 md:px-8", children: [status === "ready" && pdfSrc && (jsxRuntime.jsx(PDFPreview.default, { src: pdfSrc, className: "flex-1" })), status === "error" && (jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.error", "Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.") })), status === "declined" && (jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.declined", "Vous avez refusé de signer ce document.") })), status === "expired" && (jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.expired", "Le lien de signature a expiré.") }))] }) }));
98
104
  };
99
105
 
100
106
  exports.default = SignedDocumentPreview;
@@ -1 +1 @@
1
- {"version":3,"file":"SignedDocumentPreview.js","sources":["../../../../../src/components/signature-electronic/SignedDocumentPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { apiService } from \"../../services/api\";\nimport LoadingState from \"../states/LoadingState\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport PageActions from \"../ui/PageActions\";\nimport Button from \"../ui/Button\";\n\ninterface SignedDocumentPreviewProps {\n sessionId: string;\n nodeId: string;\n onContinue: () => void;\n}\n\nconst STATUS_POLL_INTERVAL_MS = 2000;\nconst MAX_STATUS_POLL_ATTEMPTS = 5;\n\nconst SignedDocumentPreview: React.FC<SignedDocumentPreviewProps> = ({\n sessionId,\n nodeId,\n onContinue,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [status, setStatus] = useState<\"polling\" | \"ready\" | \"error\">(\"polling\");\n const [pdfSrc, setPdfSrc] = useState<string | null>(null);\n const cancelledRef = useRef(false);\n\n useEffect(() => {\n cancelledRef.current = false;\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const fetchSignedDocument = async () => {\n const pdfResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}.pdf`,\n { responseType: \"arraybuffer\" },\n );\n const blob = new Blob([pdfResponse.data], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n if (!cancelledRef.current) {\n setPdfSrc(url);\n setStatus(\"ready\");\n }\n };\n\n const poll = async () => {\n try {\n const statusResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}/status`,\n );\n const ready = !!statusResponse.data?.data?.ready;\n\n if (ready) {\n await fetchSignedDocument();\n return;\n }\n\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n } catch (err) {\n console.error(\"[SignedDocumentPreview] Failed to load signed document:\", err);\n if (!cancelledRef.current) setStatus(\"error\");\n }\n };\n\n poll();\n\n return () => {\n cancelledRef.current = true;\n if (timer) clearTimeout(timer);\n };\n }, [sessionId, nodeId]);\n\n useEffect(() => {\n return () => {\n if (pdfSrc) URL.revokeObjectURL(pdfSrc);\n };\n }, [pdfSrc]);\n\n if (status === \"polling\") {\n return (\n <LoadingState\n message={t(\"signed_document.loading\", \"Préparation du document signé...\")}\n subtitle=\"\"\n />\n );\n }\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={onContinue} type=\"button\">\n {t(\"buttons.continue\", \"Continuer\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex flex-col h-full px-4 py-4 md:px-8\">\n {status === \"ready\" && pdfSrc && (\n <PDFPreview src={pdfSrc} className=\"flex-1\" />\n )}\n {status === \"error\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.error\",\n \"Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.\",\n )}\n </p>\n )}\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignedDocumentPreview;\n"],"names":["useTranslation","sdkI18n","useState","useRef","useEffect","__awaiter","apiService","_jsx","LoadingState","MobilePageLayout","PageActions","Button","_jsxs","PDFPreview"],"mappings":"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"}
1
+ {"version":3,"file":"SignedDocumentPreview.js","sources":["../../../../../src/components/signature-electronic/SignedDocumentPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { apiService } from \"../../services/api\";\nimport LoadingState from \"../states/LoadingState\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport PageActions from \"../ui/PageActions\";\nimport Button from \"../ui/Button\";\n\ninterface SignedDocumentPreviewProps {\n sessionId: string;\n nodeId: string;\n onContinue: () => void;\n}\n\nconst STATUS_POLL_INTERVAL_MS = 2000;\nconst MAX_STATUS_POLL_ATTEMPTS = 5;\n\nconst SignedDocumentPreview: React.FC<SignedDocumentPreviewProps> = ({\n sessionId,\n nodeId,\n onContinue,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [status, setStatus] = useState<\"polling\" | \"ready\" | \"error\" | \"declined\" | \"expired\">(\n \"polling\",\n );\n const [pdfSrc, setPdfSrc] = useState<string | null>(null);\n const cancelledRef = useRef(false);\n\n useEffect(() => {\n cancelledRef.current = false;\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const fetchSignedDocument = async () => {\n const pdfResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}.pdf`,\n { responseType: \"arraybuffer\" },\n );\n const blob = new Blob([pdfResponse.data], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n if (!cancelledRef.current) {\n setPdfSrc(url);\n setStatus(\"ready\");\n }\n };\n\n const poll = async () => {\n try {\n const statusResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}/status`,\n );\n const ready = !!statusResponse.data?.data?.ready;\n const error = statusResponse.data?.data?.error as\n | \"declined\"\n | \"expired\"\n | undefined;\n\n if (ready) {\n await fetchSignedDocument();\n return;\n }\n\n if (error === \"declined\" || error === \"expired\") {\n if (!cancelledRef.current) setStatus(error);\n return;\n }\n\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n } catch (err) {\n console.error(\"[SignedDocumentPreview] Failed to load signed document:\", err);\n if (!cancelledRef.current) setStatus(\"error\");\n }\n };\n\n poll();\n\n return () => {\n cancelledRef.current = true;\n if (timer) clearTimeout(timer);\n };\n }, [sessionId, nodeId]);\n\n useEffect(() => {\n return () => {\n if (pdfSrc) URL.revokeObjectURL(pdfSrc);\n };\n }, [pdfSrc]);\n\n if (status === \"polling\") {\n return (\n <LoadingState\n message={t(\"signed_document.loading\", \"Préparation du document signé...\")}\n subtitle=\"\"\n />\n );\n }\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={onContinue} type=\"button\">\n {t(\"buttons.continue\", \"Continuer\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex flex-col h-full px-4 py-4 md:px-8\">\n {status === \"ready\" && pdfSrc && (\n <PDFPreview src={pdfSrc} className=\"flex-1\" />\n )}\n {status === \"error\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.error\",\n \"Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.\",\n )}\n </p>\n )}\n {status === \"declined\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.declined\",\n \"Vous avez refusé de signer ce document.\",\n )}\n </p>\n )}\n {status === \"expired\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.expired\",\n \"Le lien de signature a expiré.\",\n )}\n </p>\n )}\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignedDocumentPreview;\n"],"names":["useTranslation","sdkI18n","useState","useRef","useEffect","__awaiter","apiService","_jsx","LoadingState","MobilePageLayout","PageActions","Button","_jsxs","PDFPreview"],"mappings":"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"}
@@ -40,22 +40,28 @@ var SignedDocumentPreview = function (_a) {
40
40
  });
41
41
  }); };
42
42
  var poll = function () { return __awaiter(void 0, void 0, void 0, function () {
43
- var statusResponse, ready, err_1;
44
- var _a, _b;
45
- return __generator(this, function (_c) {
46
- switch (_c.label) {
43
+ var statusResponse, ready, error, err_1;
44
+ var _a, _b, _c, _d;
45
+ return __generator(this, function (_e) {
46
+ switch (_e.label) {
47
47
  case 0:
48
- _c.trys.push([0, 4, , 5]);
48
+ _e.trys.push([0, 4, , 5]);
49
49
  return [4 /*yield*/, apiService.get("/session/sdk/".concat(sessionId, "/signed-document/").concat(nodeId, "/status"))];
50
50
  case 1:
51
- statusResponse = _c.sent();
51
+ statusResponse = _e.sent();
52
52
  ready = !!((_b = (_a = statusResponse.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.ready);
53
+ error = (_d = (_c = statusResponse.data) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.error;
53
54
  if (!ready) return [3 /*break*/, 3];
54
55
  return [4 /*yield*/, fetchSignedDocument()];
55
56
  case 2:
56
- _c.sent();
57
+ _e.sent();
57
58
  return [2 /*return*/];
58
59
  case 3:
60
+ if (error === "declined" || error === "expired") {
61
+ if (!cancelledRef.current)
62
+ setStatus(error);
63
+ return [2 /*return*/];
64
+ }
59
65
  attempts += 1;
60
66
  if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {
61
67
  if (!cancelledRef.current)
@@ -65,7 +71,7 @@ var SignedDocumentPreview = function (_a) {
65
71
  timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);
66
72
  return [3 /*break*/, 5];
67
73
  case 4:
68
- err_1 = _c.sent();
74
+ err_1 = _e.sent();
69
75
  console.error("[SignedDocumentPreview] Failed to load signed document:", err_1);
70
76
  if (!cancelledRef.current)
71
77
  setStatus("error");
@@ -90,7 +96,7 @@ var SignedDocumentPreview = function (_a) {
90
96
  if (status === "polling") {
91
97
  return (jsx(LoadingState, { message: t("signed_document.loading", "Préparation du document signé..."), subtitle: "" }));
92
98
  }
93
- return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: onContinue, type: "button", children: t("buttons.continue", "Continuer") }) }), children: jsxs("div", { className: "flex flex-col h-full px-4 py-4 md:px-8", children: [status === "ready" && pdfSrc && (jsx(PDFPreview, { src: pdfSrc, className: "flex-1" })), status === "error" && (jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.error", "Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.") }))] }) }));
99
+ return (jsx(MobilePageLayout, { footer: jsx(PageActions, { primary: jsx(Button, { onClick: onContinue, type: "button", children: t("buttons.continue", "Continuer") }) }), children: jsxs("div", { className: "flex flex-col h-full px-4 py-4 md:px-8", children: [status === "ready" && pdfSrc && (jsx(PDFPreview, { src: pdfSrc, className: "flex-1" })), status === "error" && (jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.error", "Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.") })), status === "declined" && (jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.declined", "Vous avez refusé de signer ce document.") })), status === "expired" && (jsx("p", { className: "text-sm text-gray-600 text-center py-8", children: t("signed_document.expired", "Le lien de signature a expiré.") }))] }) }));
94
100
  };
95
101
 
96
102
  export { SignedDocumentPreview as default };
@@ -1 +1 @@
1
- {"version":3,"file":"SignedDocumentPreview.js","sources":["../../../../../src/components/signature-electronic/SignedDocumentPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { apiService } from \"../../services/api\";\nimport LoadingState from \"../states/LoadingState\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport PageActions from \"../ui/PageActions\";\nimport Button from \"../ui/Button\";\n\ninterface SignedDocumentPreviewProps {\n sessionId: string;\n nodeId: string;\n onContinue: () => void;\n}\n\nconst STATUS_POLL_INTERVAL_MS = 2000;\nconst MAX_STATUS_POLL_ATTEMPTS = 5;\n\nconst SignedDocumentPreview: React.FC<SignedDocumentPreviewProps> = ({\n sessionId,\n nodeId,\n onContinue,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [status, setStatus] = useState<\"polling\" | \"ready\" | \"error\">(\"polling\");\n const [pdfSrc, setPdfSrc] = useState<string | null>(null);\n const cancelledRef = useRef(false);\n\n useEffect(() => {\n cancelledRef.current = false;\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const fetchSignedDocument = async () => {\n const pdfResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}.pdf`,\n { responseType: \"arraybuffer\" },\n );\n const blob = new Blob([pdfResponse.data], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n if (!cancelledRef.current) {\n setPdfSrc(url);\n setStatus(\"ready\");\n }\n };\n\n const poll = async () => {\n try {\n const statusResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}/status`,\n );\n const ready = !!statusResponse.data?.data?.ready;\n\n if (ready) {\n await fetchSignedDocument();\n return;\n }\n\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n } catch (err) {\n console.error(\"[SignedDocumentPreview] Failed to load signed document:\", err);\n if (!cancelledRef.current) setStatus(\"error\");\n }\n };\n\n poll();\n\n return () => {\n cancelledRef.current = true;\n if (timer) clearTimeout(timer);\n };\n }, [sessionId, nodeId]);\n\n useEffect(() => {\n return () => {\n if (pdfSrc) URL.revokeObjectURL(pdfSrc);\n };\n }, [pdfSrc]);\n\n if (status === \"polling\") {\n return (\n <LoadingState\n message={t(\"signed_document.loading\", \"Préparation du document signé...\")}\n subtitle=\"\"\n />\n );\n }\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={onContinue} type=\"button\">\n {t(\"buttons.continue\", \"Continuer\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex flex-col h-full px-4 py-4 md:px-8\">\n {status === \"ready\" && pdfSrc && (\n <PDFPreview src={pdfSrc} className=\"flex-1\" />\n )}\n {status === \"error\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.error\",\n \"Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.\",\n )}\n </p>\n )}\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignedDocumentPreview;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"SignedDocumentPreview.js","sources":["../../../../../src/components/signature-electronic/SignedDocumentPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { apiService } from \"../../services/api\";\nimport LoadingState from \"../states/LoadingState\";\nimport PDFPreview from \"../ui/PDFPreview\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport PageActions from \"../ui/PageActions\";\nimport Button from \"../ui/Button\";\n\ninterface SignedDocumentPreviewProps {\n sessionId: string;\n nodeId: string;\n onContinue: () => void;\n}\n\nconst STATUS_POLL_INTERVAL_MS = 2000;\nconst MAX_STATUS_POLL_ATTEMPTS = 5;\n\nconst SignedDocumentPreview: React.FC<SignedDocumentPreviewProps> = ({\n sessionId,\n nodeId,\n onContinue,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [status, setStatus] = useState<\"polling\" | \"ready\" | \"error\" | \"declined\" | \"expired\">(\n \"polling\",\n );\n const [pdfSrc, setPdfSrc] = useState<string | null>(null);\n const cancelledRef = useRef(false);\n\n useEffect(() => {\n cancelledRef.current = false;\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const fetchSignedDocument = async () => {\n const pdfResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}.pdf`,\n { responseType: \"arraybuffer\" },\n );\n const blob = new Blob([pdfResponse.data], { type: \"application/pdf\" });\n const url = URL.createObjectURL(blob);\n if (!cancelledRef.current) {\n setPdfSrc(url);\n setStatus(\"ready\");\n }\n };\n\n const poll = async () => {\n try {\n const statusResponse = await apiService.get(\n `/session/sdk/${sessionId}/signed-document/${nodeId}/status`,\n );\n const ready = !!statusResponse.data?.data?.ready;\n const error = statusResponse.data?.data?.error as\n | \"declined\"\n | \"expired\"\n | undefined;\n\n if (ready) {\n await fetchSignedDocument();\n return;\n }\n\n if (error === \"declined\" || error === \"expired\") {\n if (!cancelledRef.current) setStatus(error);\n return;\n }\n\n attempts += 1;\n if (attempts >= MAX_STATUS_POLL_ATTEMPTS) {\n if (!cancelledRef.current) setStatus(\"error\");\n return;\n }\n timer = setTimeout(poll, STATUS_POLL_INTERVAL_MS);\n } catch (err) {\n console.error(\"[SignedDocumentPreview] Failed to load signed document:\", err);\n if (!cancelledRef.current) setStatus(\"error\");\n }\n };\n\n poll();\n\n return () => {\n cancelledRef.current = true;\n if (timer) clearTimeout(timer);\n };\n }, [sessionId, nodeId]);\n\n useEffect(() => {\n return () => {\n if (pdfSrc) URL.revokeObjectURL(pdfSrc);\n };\n }, [pdfSrc]);\n\n if (status === \"polling\") {\n return (\n <LoadingState\n message={t(\"signed_document.loading\", \"Préparation du document signé...\")}\n subtitle=\"\"\n />\n );\n }\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={onContinue} type=\"button\">\n {t(\"buttons.continue\", \"Continuer\")}\n </Button>\n }\n />\n }\n >\n <div className=\"flex flex-col h-full px-4 py-4 md:px-8\">\n {status === \"ready\" && pdfSrc && (\n <PDFPreview src={pdfSrc} className=\"flex-1\" />\n )}\n {status === \"error\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.error\",\n \"Le document n'a pas pu être chargé, mais votre signature est bien enregistrée. Vous pouvez continuer.\",\n )}\n </p>\n )}\n {status === \"declined\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.declined\",\n \"Vous avez refusé de signer ce document.\",\n )}\n </p>\n )}\n {status === \"expired\" && (\n <p className=\"text-sm text-gray-600 text-center py-8\">\n {t(\n \"signed_document.expired\",\n \"Le lien de signature a expiré.\",\n )}\n </p>\n )}\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignedDocumentPreview;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datakeen-session-react",
3
- "version": "1.1.140-dev.108",
3
+ "version": "1.1.140-dev.109",
4
4
  "description": "React SDK component to manage and render Datakeen session experiences easily.",
5
5
  "publishConfig": {
6
6
  "access": "public",