@redneckz/wildless-cms-uni-blocks 0.14.864 → 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.
- package/bundle/bundle.umd.js +43 -26
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/model/FormTypeFieldDef.d.ts +1 -1
- package/bundle/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/bundle/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/dist/model/FormTypeFieldDef.d.ts +1 -1
- package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +19 -10
- package/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
- package/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +1 -0
- package/lib/components/ApplicationForm/ApplicationForm.fixture.mobile.d.ts +1 -0
- package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +1 -1
- package/lib/model/FormTypeFieldDef.d.ts +1 -1
- package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +18 -9
- package/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
- package/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +43 -26
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/bundle/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/mobile/bundle/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/mobile/dist/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +19 -10
- package/mobile/dist/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
- package/mobile/dist/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/mobile/lib/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +7 -2
- package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js +18 -9
- package/mobile/lib/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +1 -2
- package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +21 -10
- package/mobile/lib/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/mobile/src/components/ApplicationForm/ApplicationForm.example.json +39 -0
- package/mobile/src/model/FormTypeFieldDef.ts +1 -0
- package/mobile/src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx +31 -27
- package/mobile/src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +22 -10
- package/package.json +1 -1
- package/src/components/ApplicationForm/ApplicationForm.example.json +39 -0
- package/src/components/ApplicationForm/ApplicationForm.fixture.mobile.tsx +26 -0
- package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +26 -0
- package/src/icons/IconName.ts +2 -2
- package/src/model/FormTypeFieldDef.ts +1 -0
- package/src/retail/components/VerifyPhoneDialog/VerifyPhoneDialog.tsx +31 -27
- package/src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +22 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @hidden */
|
|
2
|
-
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
2
|
+
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CREDL' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
@@ -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
|
-
|
|
14
|
-
setAttempts: (value: number | ((prevState: number) => number)) => void;
|
|
13
|
+
setErrorText: (value: string | ((prevState: string) => string)) => void;
|
|
15
14
|
};
|
|
16
15
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @hidden */
|
|
2
|
-
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
2
|
+
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CREDL' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
@@ -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.
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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" }),
|
|
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":";;;AAAA,2CAA2C;AAC3C,+CAAwC;AACxC,uDAA+E;AAE/E,oEAAiE;AAEjE,0DAAuD;AACvD,oEAAiE;AACjE,iEAA8D;AAC9D,uEAAoE;AACpE,0DAAuD;AACvD,gEAA6D;AAC7D,6DAA0D;AAC1D,qFAAkF;AAClF,4DAAyD;AACzD,8CAA2C;AAC3C,iDAA8C;AAC9C,kEAA+D;AAC/D,2CAAwC;AACxC,iDAA8C;AAC9C,6EAA0E;
|
|
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
|
-
|
|
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)(
|
|
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 &&
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @hidden */
|
|
2
|
-
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
2
|
+
export declare type FormTypeFieldDef = '' | 'ACQR' | 'ANALITIC' | 'ANTIFRAUD' | 'BCRD' | 'BROK' | 'BROKACCOUNT' | 'COLLECTION' | 'CORRUPTION' | 'CRED' | 'DPST' | 'PRODUCT' | 'SELFCOLLECTION' | 'KVED' | 'ULTRASERVICE' | 'FEEDBACK' | 'FEEDBACK_QS' | 'OUTSERVICE' | 'RFB' | 'CREDL' | 'CONT' | 'SUPPORT' | 'INVESTADVISER' | 'FINOMBUDSMAN';
|
|
@@ -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
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
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" }),
|
|
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":";AAAA,2CAA2C;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;
|
|
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
|
-
|
|
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(
|
|
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 &&
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"useVerifyPhoneDialogSubmit.js","sourceRoot":"","sources":["../../../../src/retail/components/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1094,6 +1094,45 @@
|
|
|
1094
1094
|
}
|
|
1095
1095
|
}
|
|
1096
1096
|
],
|
|
1097
|
+
[
|
|
1098
|
+
"Льготное кредитование АПК",
|
|
1099
|
+
{
|
|
1100
|
+
"content": {
|
|
1101
|
+
"version": "primary",
|
|
1102
|
+
"padding": "",
|
|
1103
|
+
"title": "Льготное кредитование АПК",
|
|
1104
|
+
"typeForm": "CREDL",
|
|
1105
|
+
"endpoint": "sendcorporatelead",
|
|
1106
|
+
"sections": [
|
|
1107
|
+
{
|
|
1108
|
+
"inputs": [{ "name": "name", "required": true }]
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
"columns": 2,
|
|
1112
|
+
"inputs": [
|
|
1113
|
+
{
|
|
1114
|
+
"name": "phone",
|
|
1115
|
+
"required": true
|
|
1116
|
+
},
|
|
1117
|
+
{
|
|
1118
|
+
"name": "inn",
|
|
1119
|
+
"required": true
|
|
1120
|
+
}
|
|
1121
|
+
]
|
|
1122
|
+
}
|
|
1123
|
+
],
|
|
1124
|
+
"button": {
|
|
1125
|
+
"text": "Отправить заявку",
|
|
1126
|
+
"version": "primary"
|
|
1127
|
+
},
|
|
1128
|
+
"link": {
|
|
1129
|
+
"text": "условиями передачи данных",
|
|
1130
|
+
"href": "/privacy-policy",
|
|
1131
|
+
"target": "_blank"
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
],
|
|
1097
1136
|
[
|
|
1098
1137
|
"РКО. Контекст.",
|
|
1099
1138
|
{
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { JSX } from '@redneckz/uni-jsx';
|
|
3
3
|
import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
4
4
|
|
|
5
|
+
import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
|
|
5
6
|
import { Headline } from '../../../components/Headline/Headline';
|
|
6
7
|
import type { OnCloseProps } from '../../../model/OnCloseProps';
|
|
7
8
|
import { Button } from '../../../ui-kit/Button/Button';
|
|
@@ -20,26 +21,27 @@ import { InputCode } from './InputCode';
|
|
|
20
21
|
import { SubmitButton } from './SubmitButton';
|
|
21
22
|
import { useVerifyPhoneDialogSubmit } from './useVerifyPhoneDialogSubmit';
|
|
22
23
|
|
|
24
|
+
export const TIME_TO_RESEND = 180;
|
|
25
|
+
const CODE_LENGTH = 4;
|
|
26
|
+
|
|
23
27
|
export interface VerifyPhoneDialogProps extends OnCloseProps {
|
|
24
28
|
phone: string;
|
|
25
|
-
code?: boolean;
|
|
26
29
|
withDescription?: boolean;
|
|
27
|
-
codeLength?: number;
|
|
28
30
|
consents?: string[];
|
|
29
31
|
onSuccess?: (smsCode?: string) => void;
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
export interface SmsCodeStore {
|
|
35
|
+
smsCode: {
|
|
36
|
+
sendTime?: number;
|
|
37
|
+
attempts?: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
32
41
|
export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
33
|
-
({
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
withDescription = true,
|
|
37
|
-
codeLength = 4,
|
|
38
|
-
consents,
|
|
39
|
-
onSuccess = noop,
|
|
40
|
-
onClose = noop,
|
|
41
|
-
}) => {
|
|
42
|
-
const [values, setValues] = useState(Array(codeLength).fill(''));
|
|
42
|
+
({ phone, withDescription = true, consents, onSuccess = noop, onClose = noop }) => {
|
|
43
|
+
const [values, setValues] = useState(Array(CODE_LENGTH).fill(''));
|
|
44
|
+
const sessionStore = useSessionStore<SmsCodeStore>();
|
|
43
45
|
|
|
44
46
|
const {
|
|
45
47
|
handleSubmit,
|
|
@@ -49,8 +51,7 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
|
49
51
|
timeNextReq,
|
|
50
52
|
isSubmitButtonDisabled,
|
|
51
53
|
setTimeNextReq,
|
|
52
|
-
|
|
53
|
-
setAttempts,
|
|
54
|
+
setErrorText,
|
|
54
55
|
} = useVerifyPhoneDialogSubmit({ values, onSuccess });
|
|
55
56
|
|
|
56
57
|
const captchaDialog = useDialog(CaptchaDialog);
|
|
@@ -66,17 +67,22 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
|
66
67
|
});
|
|
67
68
|
|
|
68
69
|
if (isSuccessSendCode) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
setTimeNextReq(TIME_TO_RESEND);
|
|
71
|
+
restartTimer(TIME_TO_RESEND);
|
|
72
|
+
setErrorText('');
|
|
73
|
+
sessionStore.smsCode = {
|
|
74
|
+
sendTime: Date.now(),
|
|
75
|
+
attempts: 0,
|
|
76
|
+
};
|
|
73
77
|
} else {
|
|
74
78
|
captchaDialog.open({ phoneNumber, sendCode: handleSendCode });
|
|
75
79
|
}
|
|
76
80
|
}, [phoneNumber, restartTimer, onClose]);
|
|
77
81
|
|
|
78
82
|
useEffect(() => {
|
|
79
|
-
|
|
83
|
+
if (!sessionStore.smsCode?.sendTime) {
|
|
84
|
+
handleSendCode();
|
|
85
|
+
}
|
|
80
86
|
}, []);
|
|
81
87
|
|
|
82
88
|
return (
|
|
@@ -93,14 +99,12 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
|
93
99
|
isEmbedded={true}
|
|
94
100
|
as="h6"
|
|
95
101
|
/>
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
/>
|
|
103
|
-
) : null}
|
|
102
|
+
<InputCode
|
|
103
|
+
values={values}
|
|
104
|
+
setValues={setValues}
|
|
105
|
+
errorText={errorText}
|
|
106
|
+
hasError={hasError}
|
|
107
|
+
/>
|
|
104
108
|
{renderText(timeNextReq, handleSendCode)}
|
|
105
109
|
|
|
106
110
|
{withDescription ? (
|