@redneckz/wildless-cms-uni-blocks 0.14.588 → 0.14.589

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 (204) hide show
  1. package/bundle/api/RetailApi/RetailApi.d.ts +3 -1
  2. package/bundle/api/RetailApi/RetailApiTypes.d.ts +3 -0
  3. package/bundle/blocks.schema.json +1 -1
  4. package/bundle/bundle.umd.js +166 -58
  5. package/bundle/bundle.umd.min.js +1 -1
  6. package/bundle/icons/IconName.d.ts +4 -2
  7. package/bundle/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  8. package/bundle/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  9. package/bundle/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  10. package/bundle/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  11. package/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  12. package/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  13. package/bundle/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  14. package/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  15. package/cosmos-static/icons/RefreshIcon.svg +1 -0
  16. package/cosmos-static/icons/sprites.svg +1 -0
  17. package/dist/api/RetailApi/RetailApi.d.ts +3 -1
  18. package/dist/api/RetailApi/RetailApi.js +15 -1
  19. package/dist/api/RetailApi/RetailApi.js.map +1 -1
  20. package/dist/api/RetailApi/RetailApiTypes.d.ts +3 -0
  21. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
  22. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  23. package/dist/icons/IconName.d.ts +4 -2
  24. package/dist/icons/IconName.js +3 -1
  25. package/dist/icons/IconName.js.map +1 -1
  26. package/dist/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  27. package/dist/ui-kit/CaptchaDialog/CaptchaDialog.js +22 -0
  28. package/dist/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
  29. package/dist/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  30. package/dist/ui-kit/CaptchaDialog/checkCaptcha.js +16 -0
  31. package/dist/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
  32. package/dist/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  33. package/dist/ui-kit/CaptchaDialog/createCaptcha.js +9 -0
  34. package/dist/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
  35. package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  36. package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js +15 -0
  37. package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
  38. package/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  39. package/dist/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
  40. package/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
  41. package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  42. package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +20 -29
  43. package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  44. package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  45. package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js +21 -0
  46. package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
  47. package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
  48. package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
  49. package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  50. package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +59 -0
  51. package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
  52. package/lib/api/RetailApi/RetailApi.d.ts +3 -1
  53. package/lib/api/RetailApi/RetailApi.js +15 -1
  54. package/lib/api/RetailApi/RetailApi.js.map +1 -1
  55. package/lib/api/RetailApi/RetailApiTypes.d.ts +3 -0
  56. package/lib/common.css +1 -1
  57. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
  58. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  59. package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +1 -1
  60. package/lib/icons/IconName.d.ts +4 -2
  61. package/lib/icons/IconName.js +3 -1
  62. package/lib/icons/IconName.js.map +1 -1
  63. package/lib/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  64. package/lib/ui-kit/CaptchaDialog/CaptchaDialog.fixture.d.ts +6 -0
  65. package/lib/ui-kit/CaptchaDialog/CaptchaDialog.js +20 -0
  66. package/lib/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
  67. package/lib/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  68. package/lib/ui-kit/CaptchaDialog/checkCaptcha.js +13 -0
  69. package/lib/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
  70. package/lib/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  71. package/lib/ui-kit/CaptchaDialog/createCaptcha.js +6 -0
  72. package/lib/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
  73. package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  74. package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js +12 -0
  75. package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
  76. package/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  77. package/lib/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
  78. package/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
  79. package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  80. package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +21 -30
  81. package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  82. package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  83. package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js +18 -0
  84. package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
  85. package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
  86. package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
  87. package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  88. package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +56 -0
  89. package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
  90. package/mobile/bundle/api/RetailApi/RetailApi.d.ts +3 -1
  91. package/mobile/bundle/api/RetailApi/RetailApiTypes.d.ts +3 -0
  92. package/mobile/bundle/bundle.umd.js +166 -58
  93. package/mobile/bundle/bundle.umd.min.js +1 -1
  94. package/mobile/bundle/icons/IconName.d.ts +4 -2
  95. package/mobile/bundle/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  96. package/mobile/bundle/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  97. package/mobile/bundle/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  98. package/mobile/bundle/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  99. package/mobile/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  100. package/mobile/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  101. package/mobile/bundle/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  102. package/mobile/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  103. package/mobile/dist/api/RetailApi/RetailApi.d.ts +3 -1
  104. package/mobile/dist/api/RetailApi/RetailApi.js +15 -1
  105. package/mobile/dist/api/RetailApi/RetailApi.js.map +1 -1
  106. package/mobile/dist/api/RetailApi/RetailApiTypes.d.ts +3 -0
  107. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
  108. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  109. package/mobile/dist/icons/IconName.d.ts +4 -2
  110. package/mobile/dist/icons/IconName.js +3 -1
  111. package/mobile/dist/icons/IconName.js.map +1 -1
  112. package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  113. package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.js +22 -0
  114. package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
  115. package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  116. package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.js +16 -0
  117. package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
  118. package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  119. package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.js +9 -0
  120. package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
  121. package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  122. package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js +15 -0
  123. package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
  124. package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  125. package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
  126. package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
  127. package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  128. package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +20 -29
  129. package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  130. package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  131. package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js +21 -0
  132. package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
  133. package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
  134. package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
  135. package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  136. package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +59 -0
  137. package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
  138. package/mobile/lib/api/RetailApi/RetailApi.d.ts +3 -1
  139. package/mobile/lib/api/RetailApi/RetailApi.js +15 -1
  140. package/mobile/lib/api/RetailApi/RetailApi.js.map +1 -1
  141. package/mobile/lib/api/RetailApi/RetailApiTypes.d.ts +3 -0
  142. package/mobile/lib/common.css +1 -1
  143. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
  144. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  145. package/mobile/lib/icons/IconName.d.ts +4 -2
  146. package/mobile/lib/icons/IconName.js +3 -1
  147. package/mobile/lib/icons/IconName.js.map +1 -1
  148. package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
  149. package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.js +20 -0
  150. package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
  151. package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
  152. package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.js +13 -0
  153. package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
  154. package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
  155. package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.js +6 -0
  156. package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
  157. package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
  158. package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js +12 -0
  159. package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
  160. package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
  161. package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
  162. package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
  163. package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
  164. package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +21 -30
  165. package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
  166. package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
  167. package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js +18 -0
  168. package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
  169. package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
  170. package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
  171. package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
  172. package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +56 -0
  173. package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
  174. package/mobile/src/api/RetailApi/RetailApi.ts +18 -1
  175. package/mobile/src/api/RetailApi/RetailApiTypes.ts +4 -0
  176. package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.ts +3 -4
  177. package/mobile/src/icons/IconName.ts +5 -5
  178. package/mobile/src/icons/RefreshIcon.svg +3 -0
  179. package/mobile/src/ui-kit/CaptchaDialog/CaptchaDialog.tsx +68 -0
  180. package/mobile/src/ui-kit/CaptchaDialog/checkCaptcha.ts +25 -0
  181. package/mobile/src/ui-kit/CaptchaDialog/createCaptcha.ts +6 -0
  182. package/mobile/src/ui-kit/CaptchaDialog/useCaptchaDialog.tsx +12 -0
  183. package/mobile/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +3 -2
  184. package/mobile/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +66 -51
  185. package/mobile/src/ui-kit/VerifyPhoneDialog/handleSendCode.ts +37 -0
  186. package/mobile/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +2 -1
  187. package/mobile/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +71 -0
  188. package/package.json +2 -2
  189. package/src/api/RetailApi/RetailApi.ts +18 -1
  190. package/src/api/RetailApi/RetailApiTypes.ts +4 -0
  191. package/src/components/ApplicationLeadForm/useApplicationLeadApi.ts +3 -4
  192. package/src/icons/IconName.ts +353 -6
  193. package/src/icons/RefreshIcon.svg +3 -0
  194. package/src/ui-kit/CaptchaDialog/CaptchaDialog.fixture.tsx +11 -0
  195. package/src/ui-kit/CaptchaDialog/CaptchaDialog.tsx +68 -0
  196. package/src/ui-kit/CaptchaDialog/checkCaptcha.ts +25 -0
  197. package/src/ui-kit/CaptchaDialog/createCaptcha.ts +6 -0
  198. package/src/ui-kit/CaptchaDialog/useCaptchaDialog.tsx +12 -0
  199. package/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +3 -2
  200. package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.fixture.tsx +11 -8
  201. package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +66 -51
  202. package/src/ui-kit/VerifyPhoneDialog/handleSendCode.ts +37 -0
  203. package/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +2 -1
  204. package/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +71 -0
@@ -1,71 +1,70 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
- import { useCallback, useEffect, useMemo, useState } from '@redneckz/uni-jsx/lib/hooks';
3
- import { RETAIL_API } from '../../api/RetailApi/RetailApi';
2
+ import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
4
3
  import { Headline } from '../../components/Headline/Headline';
4
+ import { noop } from '../../utils/noop';
5
+ import { useCaptchaDialog } from '../CaptchaDialog/useCaptchaDialog';
5
6
  import { Dialog } from '../DialogManager/Dialog';
6
- import { useDialogManager } from '../DialogManager/useDialogManager';
7
7
  import { LinkButton } from '../LinkButton/LinkButton';
8
8
  import { Loader } from '../Loader/Loader';
9
9
  import { RichText } from '../RichText/RichText';
10
10
  import { Timer } from '../TimerCircle/Timer';
11
+ import { handleSendCode } from './handleSendCode';
11
12
  import { InputCode } from './InputCode';
12
13
  import { SubmitButton } from './SubmitButton';
14
+ import { useVerifyPhoneDialogSubmit } from './useVerifyPhoneDialogSubmit';
13
15
 
14
16
  export interface VerifyPhoneDialogProps {
15
- phone: string;
17
+ close?: () => void;
18
+ onClose?: () => void;
16
19
  title?: string;
17
20
  description?: string;
18
21
  code?: boolean;
19
22
  __html?: string;
20
23
  codeLength?: number;
21
24
  textButton?: string;
22
- onClose?: () => Promise<void>;
23
- href?: string;
25
+ phoneNumber?: string;
24
26
  }
25
27
 
26
28
  export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
27
29
  ({
30
+ close = noop,
31
+ onClose = noop,
28
32
  title,
29
- phone,
30
33
  description,
31
34
  __html,
32
35
  code = true,
33
36
  codeLength = 4,
34
37
  textButton = '',
35
- onClose,
36
- href = '',
38
+ phoneNumber = '+79999999999',
37
39
  }) => {
38
- const { close } = useDialogManager();
40
+ const [values, setValues] = useState(Array(codeLength).fill(''));
39
41
 
40
- const [values, setValues] = useState<string[]>(Array(codeLength).fill('') as string[]);
41
- const [hasError, setHasError] = useState(false);
42
- const [isLoading, setIsLoading] = useState(false);
43
- const [timeNextReq, setTimeNextReq] = useState<number>(180);
42
+ const {
43
+ handleSubmit,
44
+ hasError,
45
+ errorText,
46
+ isLoading,
47
+ timeNextReq,
48
+ isSubmitButtonDisabled,
49
+ setTimeNextReq,
50
+ setIsTimerStarted,
51
+ setAttemps,
52
+ } = useVerifyPhoneDialogSubmit({ values, close });
44
53
 
45
- const isValidCode = useMemo(() => values.every(Boolean), [values]);
46
-
47
- useEffect(() => {
48
- RETAIL_API.SendCode({
49
- phoneNumber: phone,
50
- smsCodesSetName: { key: 'AUTHENTICATION' },
54
+ const sendCode = useCallback(() => {
55
+ handleSendCode({
56
+ phoneNumber,
57
+ captchaDialog,
58
+ setTimeNextReq,
59
+ setIsTimerStarted,
60
+ setAttemps,
51
61
  });
52
62
  }, []);
63
+ const captchaDialog = useCaptchaDialog({ phoneNumber, sendCode }, onClose);
53
64
 
54
- const handleSubmit = useCallback(async () => {
55
- try {
56
- setIsLoading(true);
57
- await RETAIL_API.CheckCode({
58
- smsText: values.join(''),
59
- smsCodesSetName: { key: 'AUTHENTICATION' },
60
- });
61
- globalThis.location.href = href;
62
- close();
63
- onClose && onClose();
64
- } catch {
65
- setIsLoading(false);
66
- setHasError(true);
67
- }
68
- }, [values]);
65
+ useEffect(() => {
66
+ sendCode();
67
+ }, []);
69
68
 
70
69
  return (
71
70
  <Dialog className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg">
@@ -77,24 +76,19 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
77
76
  headlineVersion="S"
78
77
  isEmbedded={true}
79
78
  />
80
- {code ? <InputCode values={values} setValues={setValues} hasError={hasError} /> : null}
81
- {timeNextReq ? (
82
- <div className="flex flex-row text-l font-light text-primary-main">
83
- Получить новый код можно через
84
- <Timer
85
- className="text-primary-main ml-1"
86
- time={timeNextReq}
87
- setTime={setTimeNextReq}
88
- />
89
- </div>
90
- ) : (
91
- <LinkButton className="text-primary-main">Получить новый код</LinkButton>
92
- )}
79
+ {code ? (
80
+ <InputCode
81
+ values={values}
82
+ setValues={setValues}
83
+ errorText={errorText}
84
+ hasError={hasError}
85
+ />
86
+ ) : null}
87
+ {renderText(timeNextReq, setTimeNextReq, sendCode)}
93
88
 
94
89
  <RichText itemSize="list-s" __html={__html} />
95
- {textButton ? (
96
- <SubmitButton isDisabled={!isValidCode} onClick={handleSubmit} text={textButton} />
97
- ) : null}
90
+
91
+ {renderTextButton(textButton, isSubmitButtonDisabled, handleSubmit)}
98
92
 
99
93
  {isLoading ? <Loader blur={false} /> : null}
100
94
  </div>
@@ -102,3 +96,24 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
102
96
  );
103
97
  },
104
98
  );
99
+
100
+ const renderTextButton = (textButton: string, isDisabled: boolean, handleSubmit: () => void) =>
101
+ textButton ? (
102
+ <SubmitButton isDisabled={isDisabled} onClick={handleSubmit} text={textButton} />
103
+ ) : null;
104
+
105
+ const renderText = (
106
+ timeNextReq: number,
107
+ setTimeNextReq: React.Dispatch<React.SetStateAction<number>>,
108
+ sendCode: () => void,
109
+ ) =>
110
+ timeNextReq ? (
111
+ <div className="flex flex-row text-l font-light text-primary-main">
112
+ Получить новый код можно через
113
+ <Timer className="text-primary-main ml-1" time={timeNextReq} setTime={setTimeNextReq} />
114
+ </div>
115
+ ) : (
116
+ <LinkButton onClick={sendCode} className="text-primary-main">
117
+ Получить новый код
118
+ </LinkButton>
119
+ );
@@ -0,0 +1,37 @@
1
+ import { RETAIL_API } from '../../api/RetailApi/RetailApi';
2
+ import { type CaptchaDialogProps } from '../CaptchaDialog/CaptchaDialog';
3
+ import { type DialogOptions } from '../DialogManager/useDialogManager';
4
+
5
+ interface HandleSendCodeProps {
6
+ phoneNumber: string;
7
+ captchaDialog: {
8
+ open: (props?: CaptchaDialogProps, options?: DialogOptions) => void;
9
+ close: () => void;
10
+ closeAll: () => void;
11
+ };
12
+ setTimeNextReq: (timeNextReq: number) => void;
13
+ setIsTimerStarted: (isTimerStarted: boolean) => void;
14
+ setAttemps: (attemps: number) => void;
15
+ }
16
+
17
+ export const handleSendCode = async ({
18
+ phoneNumber,
19
+ captchaDialog,
20
+ setTimeNextReq,
21
+ setIsTimerStarted,
22
+ setAttemps,
23
+ }: HandleSendCodeProps) => {
24
+ try {
25
+ await RETAIL_API.SendCode({
26
+ phoneNumber: phoneNumber,
27
+ smsCodesSetName: { key: 'AUTHENTICATION' },
28
+ });
29
+ setAttemps(0);
30
+ setTimeNextReq(180);
31
+ setIsTimerStarted(true);
32
+ } catch (e: any) {
33
+ if (e?.status === 429) {
34
+ captchaDialog.open();
35
+ }
36
+ }
37
+ };
@@ -5,7 +5,8 @@ export const useVerifyPhoneDialog = (props: VerifyPhoneDialogProps) => {
5
5
  const { open, close } = useDialogManager();
6
6
 
7
7
  return {
8
- open: (options: DialogOptions = {}) => open(<VerifyPhoneDialog {...props} />, options),
8
+ open: (options: DialogOptions = {}) =>
9
+ open(<VerifyPhoneDialog onClose={close} {...props} />, options),
9
10
  close,
10
11
  };
11
12
  };
@@ -0,0 +1,71 @@
1
+ import { useCallback, useEffect, useMemo, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { RETAIL_API } from '../../api/RetailApi/RetailApi';
3
+
4
+ type useVerifyPhoneDialogSubmitProps = {
5
+ values: string[];
6
+ close?: () => void;
7
+ };
8
+
9
+ export const useVerifyPhoneDialogSubmit = ({ close, values }: useVerifyPhoneDialogSubmitProps) => {
10
+ const [hasError, setHasError] = useState(false);
11
+ const [errorText, setErrorText] = useState('');
12
+ const [isLoading, setIsLoading] = useState(false);
13
+ const [timeNextReq, setTimeNextReq] = useState<number>(0);
14
+ const [isTimerStarted, setIsTimerStarted] = useState(false);
15
+ const [attemps, setAttemps] = useState(0);
16
+
17
+ const resetError = useCallback(() => {
18
+ setHasError(false);
19
+ setErrorText('');
20
+ }, []);
21
+
22
+ const isTimeExpired = useMemo(
23
+ () => timeNextReq === 0 && isTimerStarted,
24
+ [timeNextReq, isTimerStarted],
25
+ );
26
+
27
+ const isSubmitButtonDisabled = useMemo(
28
+ () => attemps > 2 || !values.every(Boolean) || isTimeExpired,
29
+ [values],
30
+ );
31
+
32
+ const handleSubmit = useCallback(async () => {
33
+ try {
34
+ setIsTimerStarted(false);
35
+ setTimeNextReq(0);
36
+ setAttemps(attemps + 1);
37
+ setIsLoading(true);
38
+ await RETAIL_API.CheckCode({
39
+ smsText: values.join(''),
40
+ smsCodesSetName: { key: 'AUTHENTICATION' },
41
+ });
42
+ resetError();
43
+ close && close();
44
+ } catch {
45
+ setIsLoading(false);
46
+ attemps > 1 ? setErrorText('Исчерпан лимит ввода смс-кода') : setErrorText('Неверный код');
47
+ setHasError(true);
48
+ }
49
+ }, [values, attemps]);
50
+
51
+ useEffect(() => {
52
+ if (isTimeExpired) {
53
+ setHasError(true);
54
+ setErrorText('Код просрочен');
55
+ } else {
56
+ setHasError(false);
57
+ }
58
+ }, [isTimeExpired]);
59
+
60
+ return {
61
+ handleSubmit,
62
+ hasError,
63
+ errorText,
64
+ isLoading,
65
+ timeNextReq,
66
+ isSubmitButtonDisabled,
67
+ setTimeNextReq,
68
+ setIsTimerStarted,
69
+ setAttemps,
70
+ };
71
+ };