@redneckz/wildless-cms-uni-blocks 0.14.865 → 0.14.866

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.
Files changed (37) hide show
  1. package/bundle/bundle.umd.js +43 -26
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  4. package/bundle/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  5. package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  6. package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +19 -10
  7. package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  8. package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  9. package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
  10. package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
  11. package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  12. package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +18 -9
  13. package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  14. package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  15. package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
  16. package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
  17. package/mobile/bundle/bundle.umd.js +43 -26
  18. package/mobile/bundle/bundle.umd.min.js +1 -1
  19. package/mobile/bundle/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  20. package/mobile/bundle/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  21. package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  22. package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +19 -10
  23. package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  24. package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  25. package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
  26. package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
  27. package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
  28. package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +18 -9
  29. package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  30. package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
  31. package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
  32. package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
  33. package/mobile/src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx +31 -27
  34. package/mobile/src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +22 -10
  35. package/package.json +1 -1
  36. package/src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx +31 -27
  37. package/src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +22 -10
@@ -1,10 +1,15 @@
1
1
  import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export declare const TIME_TO_RESEND = 180;
2
3
  export interface VerifyPhoneDialogProps extends OnCloseProps {
3
4
  phone: string;
4
- code?: boolean;
5
5
  withDescription?: boolean;
6
- codeLength?: number;
7
6
  consents?: string[];
8
7
  onSuccess?: (smsCode?: string) => void;
9
8
  }
9
+ export interface SmsCodeStore {
10
+ smsCode: {
11
+ sendTime?: number;
12
+ attempts?: number;
13
+ };
14
+ }
10
15
  export declare const VerifyPhoneDialog: import("@redneckz/uni-jsx").UNIComponent<VerifyPhoneDialogProps, any, any>;
@@ -10,7 +10,6 @@ export declare const useVerifyPhoneDialogSubmit: ({ values, onSuccess, }: useVer
10
10
  timeNextReq: number;
11
11
  isSubmitButtonDisabled: boolean;
12
12
  setTimeNextReq: (value: number | ((prevState: number) => number)) => void;
13
- setIsTimerStarted: (value: boolean | ((prevState: boolean) => boolean)) => void;
14
- setAttempts: (value: number | ((prevState: number) => number)) => void;
13
+ setErrorText: (value: string | ((prevState: string) => string)) => void;
15
14
  };
16
15
  export {};
@@ -1,10 +1,15 @@
1
1
  import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export declare const TIME_TO_RESEND = 180;
2
3
  export interface VerifyPhoneDialogProps extends OnCloseProps {
3
4
  phone: string;
4
- code?: boolean;
5
5
  withDescription?: boolean;
6
- codeLength?: number;
7
6
  consents?: string[];
8
7
  onSuccess?: (smsCode?: string) => void;
9
8
  }
9
+ export interface SmsCodeStore {
10
+ smsCode: {
11
+ sendTime?: number;
12
+ attempts?: number;
13
+ };
14
+ }
10
15
  export declare const VerifyPhoneDialog: import("@redneckz/uni-jsx").UNIComponent<VerifyPhoneDialogProps, any, any>;
@@ -1,9 +1,10 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- exports.VerifyPhoneDialog = void 0;
2
+ exports.VerifyPhoneDialog = exports.TIME_TO_RESEND = void 0;
3
3
  const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  /* eslint-disable max-lines-per-function */
5
5
  const uni_jsx_1 = require("@redneckz/uni-jsx");
6
6
  const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
7
+ const useSessionStore_1 = require("@redneckz/uni-jsx/lib/Store/useSessionStore");
7
8
  const Headline_1 = require("../../../components/Headline/Headline");
8
9
  const Button_1 = require("../../../ui-kit/Button/Button");
9
10
  const ButtonTitle_1 = require("../../../ui-kit/Button/ButtonTitle");
@@ -20,9 +21,12 @@ const CaptchaDialog_1 = require("../CaptchaDialog/CaptchaDialog");
20
21
  const InputCode_1 = require("./InputCode");
21
22
  const SubmitButton_1 = require("./SubmitButton");
22
23
  const useVerifyPhoneDialogSubmit_1 = require("./useVerifyPhoneDialogSubmit");
23
- exports.VerifyPhoneDialog = (0, uni_jsx_1.JSX)(({ phone, code = true, withDescription = true, codeLength = 4, consents, onSuccess = noop_1.noop, onClose = noop_1.noop, }) => {
24
- const [values, setValues] = (0, hooks_1.useState)(Array(codeLength).fill(''));
25
- const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setIsTimerStarted, setAttempts, } = (0, useVerifyPhoneDialogSubmit_1.useVerifyPhoneDialogSubmit)({ values, onSuccess });
24
+ exports.TIME_TO_RESEND = 180;
25
+ const CODE_LENGTH = 4;
26
+ exports.VerifyPhoneDialog = (0, uni_jsx_1.JSX)(({ phone, withDescription = true, consents, onSuccess = noop_1.noop, onClose = noop_1.noop }) => {
27
+ const [values, setValues] = (0, hooks_1.useState)(Array(CODE_LENGTH).fill(''));
28
+ const sessionStore = (0, useSessionStore_1.useSessionStore)();
29
+ const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setErrorText, } = (0, useVerifyPhoneDialogSubmit_1.useVerifyPhoneDialogSubmit)({ values, onSuccess });
26
30
  const captchaDialog = (0, useDialog_1.useDialog)(CaptchaDialog_1.CaptchaDialog);
27
31
  const phoneNumber = (0, formatPhone_1.formatPhone)(phone);
28
32
  const restartTimer = (0, useCountDownTimer_1.useCountDownTimer)({ seconds: timeNextReq, onTick: setTimeNextReq });
@@ -32,19 +36,24 @@ exports.VerifyPhoneDialog = (0, uni_jsx_1.JSX)(({ phone, code = true, withDescri
32
36
  smsCodesSetName: { key: 'AUTHENTICATION' },
33
37
  });
34
38
  if (isSuccessSendCode) {
35
- setAttempts(0);
36
- setTimeNextReq(180);
37
- restartTimer(180);
38
- setIsTimerStarted(true);
39
+ setTimeNextReq(exports.TIME_TO_RESEND);
40
+ restartTimer(exports.TIME_TO_RESEND);
41
+ setErrorText('');
42
+ sessionStore.smsCode = {
43
+ sendTime: Date.now(),
44
+ attempts: 0,
45
+ };
39
46
  }
40
47
  else {
41
48
  captchaDialog.open({ phoneNumber, sendCode: handleSendCode });
42
49
  }
43
50
  }, [phoneNumber, restartTimer, onClose]);
44
51
  (0, hooks_1.useEffect)(() => {
45
- handleSendCode();
52
+ if (!sessionStore.smsCode?.sendTime) {
53
+ handleSendCode();
54
+ }
46
55
  }, []);
47
- return ((0, jsx_runtime_1.jsx)(Dialog_1.Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [(0, jsx_runtime_1.jsx)(Headline_1.Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), code ? ((0, jsx_runtime_1.jsx)(InputCode_1.InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError })) : null, renderText(timeNextReq, handleSendCode), withDescription ? ((0, jsx_runtime_1.jsxs)(RichText_1.RichText, { itemSize: "list-s", children: [(0, jsx_runtime_1.jsx)("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), (0, jsx_runtime_1.jsx)("ul", { children: consents?.map((_, i) => ((0, jsx_runtime_1.jsx)("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? (0, jsx_runtime_1.jsx)(Loader_1.Loader, { blur: false }) : null] }) }));
56
+ return ((0, jsx_runtime_1.jsx)(Dialog_1.Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [(0, jsx_runtime_1.jsx)(Headline_1.Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), (0, jsx_runtime_1.jsx)(InputCode_1.InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError }), renderText(timeNextReq, handleSendCode), withDescription ? ((0, jsx_runtime_1.jsxs)(RichText_1.RichText, { itemSize: "list-s", children: [(0, jsx_runtime_1.jsx)("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), (0, jsx_runtime_1.jsx)("ul", { children: consents?.map((_, i) => ((0, jsx_runtime_1.jsx)("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? (0, jsx_runtime_1.jsx)(Loader_1.Loader, { blur: false }) : null] }) }));
48
57
  });
49
58
  const renderNextButton = (disabled, onClick) => ((0, jsx_runtime_1.jsx)(SubmitButton_1.SubmitButton, { text: "\u0414\u0430\u043B\u0435\u0435", disabled: disabled, onClick: onClick }));
50
59
  const renderText = (timeNextReq, handleSendCode) => timeNextReq ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-row text-l font-light text-base", children: ["\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434 \u043C\u043E\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437", (0, jsx_runtime_1.jsx)(Timer_1.Timer, { className: "pl-2xs", seconds: timeNextReq })] })) : ((0, jsx_runtime_1.jsx)(Button_1.Button, { embedded: true, onClick: handleSendCode, children: (0, jsx_runtime_1.jsx)(ButtonTitle_1.ButtonTitle, { children: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434" }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyPhoneDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VerifyPhoneDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ export declare const useVerifyPhoneDialogSubmit: ({ values, onSuccess, }: useVer
10
10
  timeNextReq: number;
11
11
  isSubmitButtonDisabled: boolean;
12
12
  setTimeNextReq: (value: number | ((prevState: number) => number)) => void;
13
- setIsTimerStarted: (value: boolean | ((prevState: boolean) => boolean)) => void;
14
- setAttempts: (value: number | ((prevState: number) => number)) => void;
13
+ setErrorText: (value: string | ((prevState: string) => string)) => void;
15
14
  };
16
15
  export {};
@@ -2,27 +2,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.useVerifyPhoneDialogSubmit = void 0;
3
3
  const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
4
4
  const useBool_1 = require("@redneckz/uni-jsx/lib/hooks/useBool");
5
+ const useSessionStore_1 = require("@redneckz/uni-jsx/lib/Store/useSessionStore");
5
6
  const checkCode_1 = require("../../api/checkCode");
7
+ const VerifyPhoneDialog_1 = require("./VerifyPhoneDialog");
6
8
  const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
9
+ const sessionStore = (0, useSessionStore_1.useSessionStore)();
10
+ const attempts = sessionStore.smsCode?.attempts || 0;
11
+ const timer = Math.max(getTimer(sessionStore.smsCode?.sendTime || Date.now()), 0);
7
12
  const [errorText, setErrorText] = (0, hooks_1.useState)('');
8
13
  const [isLoading, { setTrue: startLoading, setFalse: endLoading }] = (0, useBool_1.useBool)(false);
9
- const [timeNextReq, setTimeNextReq] = (0, hooks_1.useState)(0);
10
- const [isTimerStarted, setIsTimerStarted] = (0, hooks_1.useState)(false);
11
- const [attempts, setAttempts] = (0, hooks_1.useState)(0);
14
+ const [timeNextReq, setTimeNextReq] = (0, hooks_1.useState)(timer);
12
15
  const resetError = (0, hooks_1.useCallback)(() => setErrorText(''), []);
13
- const isTimeExpired = Boolean(timeNextReq === 0 && isTimerStarted);
16
+ const isTimeExpired = Boolean(timeNextReq === 0 && sessionStore.smsCode?.sendTime);
14
17
  const isSubmitButtonDisabled = attempts > 2 || isTimeExpired || !values.every(Boolean);
15
18
  const handleSubmit = (0, hooks_1.useCallback)(async () => {
16
19
  try {
17
- setIsTimerStarted(false);
18
- setTimeNextReq(0);
19
- setAttempts((_) => _ + 1);
20
+ sessionStore.smsCode = {
21
+ ...sessionStore.smsCode,
22
+ attempts: attempts + 1,
23
+ };
20
24
  startLoading();
21
25
  await (0, checkCode_1.checkCode)({
22
26
  smsText: values.join(''),
23
27
  smsCodesSetName: { key: 'AUTHENTICATION' },
24
28
  });
29
+ setTimeNextReq(0);
25
30
  resetError();
31
+ sessionStore.smsCode = null;
26
32
  await onSuccess?.(values.join(''));
27
33
  }
28
34
  catch {
@@ -33,7 +39,12 @@ const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
33
39
  }
34
40
  }, [values, attempts]);
35
41
  (0, hooks_1.useEffect)(() => {
36
- setErrorText(isTimeExpired ? 'Код просрочен' : '');
42
+ if (isTimeExpired) {
43
+ setErrorText('Код просрочен');
44
+ }
45
+ else if (attempts > 2) {
46
+ setErrorText('Исчерпан лимит ввода смс-кода');
47
+ }
37
48
  }, [isTimeExpired]);
38
49
  return {
39
50
  handleSubmit,
@@ -43,9 +54,9 @@ const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
43
54
  timeNextReq,
44
55
  isSubmitButtonDisabled,
45
56
  setTimeNextReq,
46
- setIsTimerStarted,
47
- setAttempts,
57
+ setErrorText,
48
58
  };
49
59
  };
50
60
  exports.useVerifyPhoneDialogSubmit = useVerifyPhoneDialogSubmit;
61
+ const getTimer = (sendTime) => VerifyPhoneDialog_1.TIME_TO_RESEND - Math.floor((Date.now() - sendTime) / 1000);
51
62
  //# sourceMappingURL=useVerifyPhoneDialogSubmit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":";;AAAA,uDAA+E;AAC/E,iEAA8D;AAC9D,mDAAgD;AAOzC,MAAM,0BAA0B,GAAG,CAAC,EACzC,MAAM,EACN,SAAS,GACuB,EAAE,EAAE;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAC;IACpF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;IACnE,MAAM,sBAAsB,GAAG,QAAQ,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAC1C,IAAI;YACF,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,cAAc,CAAC,CAAC,CAAC,CAAC;YAClB,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,YAAY,EAAE,CAAC;YACf,MAAM,IAAA,qBAAS,EAAC;gBACd,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,eAAe,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE;aAC3C,CAAC,CAAC;YACH,UAAU,EAAE,CAAC;YACb,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACpC;QAAC,MAAM;YACN,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SAC/E;gBAAS;YACR,UAAU,EAAE,CAAC;SACd;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO;QACL,YAAY;QACZ,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;QAC5B,SAAS;QACT,SAAS;QACT,WAAW;QACX,sBAAsB;QACtB,cAAc;QACd,iBAAiB;QACjB,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,0BAA0B,8BAiDrC"}
1
+ {"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
1
  import type { OnCloseProps } from '../../../model/OnCloseProps';
2
+ export declare const TIME_TO_RESEND = 180;
2
3
  export interface VerifyPhoneDialogProps extends OnCloseProps {
3
4
  phone: string;
4
- code?: boolean;
5
5
  withDescription?: boolean;
6
- codeLength?: number;
7
6
  consents?: string[];
8
7
  onSuccess?: (smsCode?: string) => void;
9
8
  }
9
+ export interface SmsCodeStore {
10
+ smsCode: {
11
+ sendTime?: number;
12
+ attempts?: number;
13
+ };
14
+ }
10
15
  export declare const VerifyPhoneDialog: import("@redneckz/uni-jsx").UNIComponent<VerifyPhoneDialogProps, any, any>;
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  /* eslint-disable max-lines-per-function */
3
3
  import { JSX } from '@redneckz/uni-jsx';
4
4
  import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
5
+ import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
5
6
  import { Headline } from '../../../components/Headline/Headline.js';
6
7
  import { Button } from '../../../ui-kit/Button/Button.js';
7
8
  import { ButtonTitle } from '../../../ui-kit/Button/ButtonTitle.js';
@@ -18,9 +19,12 @@ import { CaptchaDialog } from '../CaptchaDialog/CaptchaDialog.js';
18
19
  import { InputCode } from './InputCode.js';
19
20
  import { SubmitButton } from './SubmitButton.js';
20
21
  import { useVerifyPhoneDialogSubmit } from './useVerifyPhoneDialogSubmit.js';
21
- export const VerifyPhoneDialog = JSX(({ phone, code = true, withDescription = true, codeLength = 4, consents, onSuccess = noop, onClose = noop, }) => {
22
- const [values, setValues] = useState(Array(codeLength).fill(''));
23
- const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setIsTimerStarted, setAttempts, } = useVerifyPhoneDialogSubmit({ values, onSuccess });
22
+ export const TIME_TO_RESEND = 180;
23
+ const CODE_LENGTH = 4;
24
+ export const VerifyPhoneDialog = JSX(({ phone, withDescription = true, consents, onSuccess = noop, onClose = noop }) => {
25
+ const [values, setValues] = useState(Array(CODE_LENGTH).fill(''));
26
+ const sessionStore = useSessionStore();
27
+ const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setErrorText, } = useVerifyPhoneDialogSubmit({ values, onSuccess });
24
28
  const captchaDialog = useDialog(CaptchaDialog);
25
29
  const phoneNumber = formatPhone(phone);
26
30
  const restartTimer = useCountDownTimer({ seconds: timeNextReq, onTick: setTimeNextReq });
@@ -30,19 +34,24 @@ export const VerifyPhoneDialog = JSX(({ phone, code = true, withDescription = tr
30
34
  smsCodesSetName: { key: 'AUTHENTICATION' },
31
35
  });
32
36
  if (isSuccessSendCode) {
33
- setAttempts(0);
34
- setTimeNextReq(180);
35
- restartTimer(180);
36
- setIsTimerStarted(true);
37
+ setTimeNextReq(TIME_TO_RESEND);
38
+ restartTimer(TIME_TO_RESEND);
39
+ setErrorText('');
40
+ sessionStore.smsCode = {
41
+ sendTime: Date.now(),
42
+ attempts: 0,
43
+ };
37
44
  }
38
45
  else {
39
46
  captchaDialog.open({ phoneNumber, sendCode: handleSendCode });
40
47
  }
41
48
  }, [phoneNumber, restartTimer, onClose]);
42
49
  useEffect(() => {
43
- handleSendCode();
50
+ if (!sessionStore.smsCode?.sendTime) {
51
+ handleSendCode();
52
+ }
44
53
  }, []);
45
- return (_jsx(Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: _jsxs("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [_jsx(Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), code ? (_jsx(InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError })) : null, renderText(timeNextReq, handleSendCode), withDescription ? (_jsxs(RichText, { itemSize: "list-s", children: [_jsx("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), _jsx("ul", { children: consents?.map((_, i) => (_jsx("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? _jsx(Loader, { blur: false }) : null] }) }));
54
+ return (_jsx(Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: _jsxs("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [_jsx(Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), _jsx(InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError }), renderText(timeNextReq, handleSendCode), withDescription ? (_jsxs(RichText, { itemSize: "list-s", children: [_jsx("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), _jsx("ul", { children: consents?.map((_, i) => (_jsx("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? _jsx(Loader, { blur: false }) : null] }) }));
46
55
  });
47
56
  const renderNextButton = (disabled, onClick) => (_jsx(SubmitButton, { text: "\u0414\u0430\u043B\u0435\u0435", disabled: disabled, onClick: onClick }));
48
57
  const renderText = (timeNextReq, handleSendCode) => timeNextReq ? (_jsxs("div", { className: "flex flex-row text-l font-light text-base", children: ["\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434 \u043C\u043E\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437", _jsx(Timer, { className: "pl-2xs", seconds: timeNextReq })] })) : (_jsx(Button, { embedded: true, onClick: handleSendCode, children: _jsx(ButtonTitle, { children: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434" }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyPhoneDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VerifyPhoneDialog.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ export declare const useVerifyPhoneDialogSubmit: ({ values, onSuccess, }: useVer
10
10
  timeNextReq: number;
11
11
  isSubmitButtonDisabled: boolean;
12
12
  setTimeNextReq: (value: number | ((prevState: number) => number)) => void;
13
- setIsTimerStarted: (value: boolean | ((prevState: boolean) => boolean)) => void;
14
- setAttempts: (value: number | ((prevState: number) => number)) => void;
13
+ setErrorText: (value: string | ((prevState: string) => string)) => void;
15
14
  };
16
15
  export {};
@@ -1,26 +1,32 @@
1
1
  import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
2
2
  import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
3
+ import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
3
4
  import { checkCode } from '../../api/checkCode.js';
5
+ import { TIME_TO_RESEND } from './VerifyPhoneDialog.js';
4
6
  export const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
7
+ const sessionStore = useSessionStore();
8
+ const attempts = sessionStore.smsCode?.attempts || 0;
9
+ const timer = Math.max(getTimer(sessionStore.smsCode?.sendTime || Date.now()), 0);
5
10
  const [errorText, setErrorText] = useState('');
6
11
  const [isLoading, { setTrue: startLoading, setFalse: endLoading }] = useBool(false);
7
- const [timeNextReq, setTimeNextReq] = useState(0);
8
- const [isTimerStarted, setIsTimerStarted] = useState(false);
9
- const [attempts, setAttempts] = useState(0);
12
+ const [timeNextReq, setTimeNextReq] = useState(timer);
10
13
  const resetError = useCallback(() => setErrorText(''), []);
11
- const isTimeExpired = Boolean(timeNextReq === 0 && isTimerStarted);
14
+ const isTimeExpired = Boolean(timeNextReq === 0 && sessionStore.smsCode?.sendTime);
12
15
  const isSubmitButtonDisabled = attempts > 2 || isTimeExpired || !values.every(Boolean);
13
16
  const handleSubmit = useCallback(async () => {
14
17
  try {
15
- setIsTimerStarted(false);
16
- setTimeNextReq(0);
17
- setAttempts((_) => _ + 1);
18
+ sessionStore.smsCode = {
19
+ ...sessionStore.smsCode,
20
+ attempts: attempts + 1,
21
+ };
18
22
  startLoading();
19
23
  await checkCode({
20
24
  smsText: values.join(''),
21
25
  smsCodesSetName: { key: 'AUTHENTICATION' },
22
26
  });
27
+ setTimeNextReq(0);
23
28
  resetError();
29
+ sessionStore.smsCode = null;
24
30
  await onSuccess?.(values.join(''));
25
31
  }
26
32
  catch {
@@ -31,7 +37,12 @@ export const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
31
37
  }
32
38
  }, [values, attempts]);
33
39
  useEffect(() => {
34
- setErrorText(isTimeExpired ? 'Код просрочен' : '');
40
+ if (isTimeExpired) {
41
+ setErrorText('Код просрочен');
42
+ }
43
+ else if (attempts > 2) {
44
+ setErrorText('Исчерпан лимит ввода смс-кода');
45
+ }
35
46
  }, [isTimeExpired]);
36
47
  return {
37
48
  handleSubmit,
@@ -41,8 +52,8 @@ export const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
41
52
  timeNextReq,
42
53
  isSubmitButtonDisabled,
43
54
  setTimeNextReq,
44
- setIsTimerStarted,
45
- setAttempts,
55
+ setErrorText,
46
56
  };
47
57
  };
58
+ const getTimer = (sendTime) => TIME_TO_RESEND - Math.floor((Date.now() - sendTime) / 1000);
48
59
  //# sourceMappingURL=useVerifyPhoneDialogSubmit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOhD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,MAAM,EACN,SAAS,GACuB,EAAE,EAAE;IACpC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;IACnE,MAAM,sBAAsB,GAAG,QAAQ,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI;YACF,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,cAAc,CAAC,CAAC,CAAC,CAAC;YAClB,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,YAAY,EAAE,CAAC;YACf,MAAM,SAAS,CAAC;gBACd,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,eAAe,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE;aAC3C,CAAC,CAAC;YACH,UAAU,EAAE,CAAC;YACb,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACpC;QAAC,MAAM;YACN,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SAC/E;gBAAS;YACR,UAAU,EAAE,CAAC;SACd;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO;QACL,YAAY;QACZ,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;QAC5B,SAAS;QACT,SAAS;QACT,WAAW;QACX,sBAAsB;QACtB,cAAc;QACd,iBAAiB;QACjB,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":"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"}
@@ -5042,6 +5042,12 @@
5042
5042
 
5043
5043
  const updateUserTask = (body) => doRequest('/user-data/updateUserTask', 'PUT', body);
5044
5044
 
5045
+ const sessionStore = new Store(); // sessionStorage cache
5046
+ replicate(sessionStore, new StorageAdapter(globalThis?.sessionStorage));
5047
+ function useSessionStore() {
5048
+ return useStore(sessionStore);
5049
+ }
5050
+
5045
5051
  const Timer = JSX(({ className, seconds }) => (jsx("span", { className: className, children: formatTimer(seconds) })));
5046
5052
  const formatTimer = (seconds) => {
5047
5053
  const minutes = Math.floor(seconds / 60);
@@ -5200,25 +5206,29 @@
5200
5206
  };
5201
5207
 
5202
5208
  const useVerifyPhoneDialogSubmit = ({ values, onSuccess, }) => {
5209
+ const sessionStore = useSessionStore();
5210
+ const attempts = sessionStore.smsCode?.attempts || 0;
5211
+ const timer = Math.max(getTimer(sessionStore.smsCode?.sendTime || Date.now()), 0);
5203
5212
  const [errorText, setErrorText] = useState('');
5204
5213
  const [isLoading, { setTrue: startLoading, setFalse: endLoading }] = useBool(false);
5205
- const [timeNextReq, setTimeNextReq] = useState(0);
5206
- const [isTimerStarted, setIsTimerStarted] = useState(false);
5207
- const [attempts, setAttempts] = useState(0);
5214
+ const [timeNextReq, setTimeNextReq] = useState(timer);
5208
5215
  const resetError = useCallback(() => setErrorText(''), []);
5209
- const isTimeExpired = Boolean(timeNextReq === 0 && isTimerStarted);
5216
+ const isTimeExpired = Boolean(timeNextReq === 0 && sessionStore.smsCode?.sendTime);
5210
5217
  const isSubmitButtonDisabled = attempts > 2 || isTimeExpired || !values.every(Boolean);
5211
5218
  const handleSubmit = useCallback(async () => {
5212
5219
  try {
5213
- setIsTimerStarted(false);
5214
- setTimeNextReq(0);
5215
- setAttempts((_) => _ + 1);
5220
+ sessionStore.smsCode = {
5221
+ ...sessionStore.smsCode,
5222
+ attempts: attempts + 1,
5223
+ };
5216
5224
  startLoading();
5217
5225
  await checkCode({
5218
5226
  smsText: values.join(''),
5219
5227
  smsCodesSetName: { key: 'AUTHENTICATION' },
5220
5228
  });
5229
+ setTimeNextReq(0);
5221
5230
  resetError();
5231
+ sessionStore.smsCode = null;
5222
5232
  await onSuccess?.(values.join(''));
5223
5233
  }
5224
5234
  catch {
@@ -5229,7 +5239,12 @@
5229
5239
  }
5230
5240
  }, [values, attempts]);
5231
5241
  useEffect(() => {
5232
- setErrorText(isTimeExpired ? 'Код просрочен' : '');
5242
+ if (isTimeExpired) {
5243
+ setErrorText('Код просрочен');
5244
+ }
5245
+ else if (attempts > 2) {
5246
+ setErrorText('Исчерпан лимит ввода смс-кода');
5247
+ }
5233
5248
  }, [isTimeExpired]);
5234
5249
  return {
5235
5250
  handleSubmit,
@@ -5239,14 +5254,17 @@
5239
5254
  timeNextReq,
5240
5255
  isSubmitButtonDisabled,
5241
5256
  setTimeNextReq,
5242
- setIsTimerStarted,
5243
- setAttempts,
5257
+ setErrorText,
5244
5258
  };
5245
5259
  };
5260
+ const getTimer = (sendTime) => TIME_TO_RESEND - Math.floor((Date.now() - sendTime) / 1000);
5246
5261
 
5247
- const VerifyPhoneDialog = JSX(({ phone, code = true, withDescription = true, codeLength = 4, consents, onSuccess = noop, onClose = noop, }) => {
5248
- const [values, setValues] = useState(Array(codeLength).fill(''));
5249
- const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setIsTimerStarted, setAttempts, } = useVerifyPhoneDialogSubmit({ values, onSuccess });
5262
+ const TIME_TO_RESEND = 180;
5263
+ const CODE_LENGTH = 4;
5264
+ const VerifyPhoneDialog = JSX(({ phone, withDescription = true, consents, onSuccess = noop, onClose = noop }) => {
5265
+ const [values, setValues] = useState(Array(CODE_LENGTH).fill(''));
5266
+ const sessionStore = useSessionStore();
5267
+ const { handleSubmit, hasError, errorText, isLoading, timeNextReq, isSubmitButtonDisabled, setTimeNextReq, setErrorText, } = useVerifyPhoneDialogSubmit({ values, onSuccess });
5250
5268
  const captchaDialog = useDialog(CaptchaDialog);
5251
5269
  const phoneNumber = formatPhone(phone);
5252
5270
  const restartTimer = useCountDownTimer({ seconds: timeNextReq, onTick: setTimeNextReq });
@@ -5256,19 +5274,24 @@
5256
5274
  smsCodesSetName: { key: 'AUTHENTICATION' },
5257
5275
  });
5258
5276
  if (isSuccessSendCode) {
5259
- setAttempts(0);
5260
- setTimeNextReq(180);
5261
- restartTimer(180);
5262
- setIsTimerStarted(true);
5277
+ setTimeNextReq(TIME_TO_RESEND);
5278
+ restartTimer(TIME_TO_RESEND);
5279
+ setErrorText('');
5280
+ sessionStore.smsCode = {
5281
+ sendTime: Date.now(),
5282
+ attempts: 0,
5283
+ };
5263
5284
  }
5264
5285
  else {
5265
5286
  captchaDialog.open({ phoneNumber, sendCode: handleSendCode });
5266
5287
  }
5267
5288
  }, [phoneNumber, restartTimer, onClose]);
5268
5289
  useEffect(() => {
5269
- handleSendCode();
5290
+ if (!sessionStore.smsCode?.sendTime) {
5291
+ handleSendCode();
5292
+ }
5270
5293
  }, []);
5271
- return (jsx(Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: jsxs("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [jsx(Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), code ? (jsx(InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError })) : null, renderText$2(timeNextReq, handleSendCode), withDescription ? (jsxs(RichText, { itemSize: "list-s", children: [jsx("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), jsx("ul", { children: consents?.map((_, i) => (jsx("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? jsx(Loader, { blur: false }) : null] }) }));
5294
+ return (jsx(Dialog, { className: "my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-xl p-m", onClose: onClose, children: jsxs("div", { className: "flex flex-col gap-xl items-center rounded-md", children: [jsx(Headline, { className: "w-full", title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430", description: `Мы отправили код на ${phone}`, headlineVersion: "XS", isEmbedded: true, as: "h6" }), jsx(InputCode, { values: values, setValues: setValues, errorText: errorText, hasError: hasError }), renderText$2(timeNextReq, handleSendCode), withDescription ? (jsxs(RichText, { itemSize: "list-s", children: [jsx("span", { children: "\u0412\u0432\u043E\u0434\u044F \u043A\u043E\u0434, \u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E, \u0447\u0442\u043E \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u043B\u0435\u043D \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u044E: " }), jsx("ul", { children: consents?.map((_, i) => (jsx("li", { children: _ }, `${_}-${i}`))) })] })) : null, renderNextButton(isSubmitButtonDisabled, handleSubmit), isLoading ? jsx(Loader, { blur: false }) : null] }) }));
5272
5295
  });
5273
5296
  const renderNextButton = (disabled, onClick) => (jsx(SubmitButton, { text: "\u0414\u0430\u043B\u0435\u0435", disabled: disabled, onClick: onClick }));
5274
5297
  const renderText$2 = (timeNextReq, handleSendCode) => timeNextReq ? (jsxs("div", { className: "flex flex-row text-l font-light text-base", children: ["\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434 \u043C\u043E\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437", jsx(Timer, { className: "pl-2xs", seconds: timeNextReq })] })) : (jsx(Button, { embedded: true, onClick: handleSendCode, children: jsx(ButtonTitle, { children: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043A\u043E\u0434" }) }));
@@ -7343,12 +7366,6 @@
7343
7366
 
7344
7367
  const CurrencyInput = JSX((props) => (jsx(NumberInput, { ...props, fractionDigits: 2, children: jsx("div", { className: "absolute right-4 bottom-4", children: jsx(Text, { size: "text-xl", font: "font-light", children: "\u20BD" }) }) })));
7345
7368
 
7346
- const sessionStore = new Store(); // sessionStorage cache
7347
- replicate(sessionStore, new StorageAdapter(globalThis?.sessionStorage));
7348
- function useSessionStore() {
7349
- return useStore(sessionStore);
7350
- }
7351
-
7352
7369
  const paymentURLMap = {
7353
7370
  private: 'p2p/registerP2P',
7354
7371
  business: 'b2c/registerB2C',
@@ -10379,7 +10396,7 @@
10379
10396
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
10380
10397
  });
10381
10398
 
10382
- const packageVersion = "0.14.864";
10399
+ const packageVersion = "0.14.865";
10383
10400
 
10384
10401
  exports.Blocks = Blocks;
10385
10402
  exports.ContentPage = ContentPage;