@redneckz/wildless-cms-uni-blocks 0.14.745 → 0.14.746

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 (78) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +81 -8
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/CardTransfer/CardTransferContent.d.ts +2 -1
  5. package/bundle/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  6. package/bundle/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  7. package/bundle/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  8. package/dist/components/CardTransfer/CardTransfer.js +9 -7
  9. package/dist/components/CardTransfer/CardTransfer.js.map +1 -1
  10. package/dist/components/CardTransfer/CardTransferContent.d.ts +2 -1
  11. package/dist/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  12. package/dist/components/CardTransfer/SubmitFailedDialog.js +13 -0
  13. package/dist/components/CardTransfer/SubmitFailedDialog.js.map +1 -0
  14. package/dist/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  15. package/dist/components/CardTransfer/submitCardTransfer.js +44 -0
  16. package/dist/components/CardTransfer/submitCardTransfer.js.map +1 -0
  17. package/dist/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  18. package/dist/components/CardTransfer/useSubmitCardTransfer.js +33 -0
  19. package/dist/components/CardTransfer/useSubmitCardTransfer.js.map +1 -0
  20. package/lib/common.css +1 -1
  21. package/lib/components/CardTransfer/CardTransfer.fixture.d.ts +2 -1
  22. package/lib/components/CardTransfer/CardTransfer.fixture.mobile.d.ts +2 -1
  23. package/lib/components/CardTransfer/CardTransfer.js +10 -8
  24. package/lib/components/CardTransfer/CardTransfer.js.map +1 -1
  25. package/lib/components/CardTransfer/CardTransferContent.d.ts +2 -1
  26. package/lib/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  27. package/lib/components/CardTransfer/SubmitFailedDialog.js +10 -0
  28. package/lib/components/CardTransfer/SubmitFailedDialog.js.map +1 -0
  29. package/lib/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  30. package/lib/components/CardTransfer/submitCardTransfer.js +39 -0
  31. package/lib/components/CardTransfer/submitCardTransfer.js.map +1 -0
  32. package/lib/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  33. package/lib/components/CardTransfer/useSubmitCardTransfer.js +30 -0
  34. package/lib/components/CardTransfer/useSubmitCardTransfer.js.map +1 -0
  35. package/mobile/bundle/bundle.umd.js +81 -8
  36. package/mobile/bundle/bundle.umd.min.js +1 -1
  37. package/mobile/bundle/components/CardTransfer/CardTransferContent.d.ts +2 -1
  38. package/mobile/bundle/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  39. package/mobile/bundle/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  40. package/mobile/bundle/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  41. package/mobile/dist/components/CardTransfer/CardTransfer.js +9 -7
  42. package/mobile/dist/components/CardTransfer/CardTransfer.js.map +1 -1
  43. package/mobile/dist/components/CardTransfer/CardTransferContent.d.ts +2 -1
  44. package/mobile/dist/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  45. package/mobile/dist/components/CardTransfer/SubmitFailedDialog.js +13 -0
  46. package/mobile/dist/components/CardTransfer/SubmitFailedDialog.js.map +1 -0
  47. package/mobile/dist/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  48. package/mobile/dist/components/CardTransfer/submitCardTransfer.js +44 -0
  49. package/mobile/dist/components/CardTransfer/submitCardTransfer.js.map +1 -0
  50. package/mobile/dist/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  51. package/mobile/dist/components/CardTransfer/useSubmitCardTransfer.js +33 -0
  52. package/mobile/dist/components/CardTransfer/useSubmitCardTransfer.js.map +1 -0
  53. package/mobile/lib/common.css +1 -1
  54. package/mobile/lib/components/CardTransfer/CardTransfer.js +10 -8
  55. package/mobile/lib/components/CardTransfer/CardTransfer.js.map +1 -1
  56. package/mobile/lib/components/CardTransfer/CardTransferContent.d.ts +2 -1
  57. package/mobile/lib/components/CardTransfer/SubmitFailedDialog.d.ts +6 -0
  58. package/mobile/lib/components/CardTransfer/SubmitFailedDialog.js +10 -0
  59. package/mobile/lib/components/CardTransfer/SubmitFailedDialog.js.map +1 -0
  60. package/mobile/lib/components/CardTransfer/submitCardTransfer.d.ts +16 -0
  61. package/mobile/lib/components/CardTransfer/submitCardTransfer.js +39 -0
  62. package/mobile/lib/components/CardTransfer/submitCardTransfer.js.map +1 -0
  63. package/mobile/lib/components/CardTransfer/useSubmitCardTransfer.d.ts +11 -0
  64. package/mobile/lib/components/CardTransfer/useSubmitCardTransfer.js +30 -0
  65. package/mobile/lib/components/CardTransfer/useSubmitCardTransfer.js.map +1 -0
  66. package/mobile/src/components/CardTransfer/CardTransfer.tsx +12 -9
  67. package/mobile/src/components/CardTransfer/CardTransferContent.ts +3 -1
  68. package/mobile/src/components/CardTransfer/SubmitFailedDialog.tsx +42 -0
  69. package/mobile/src/components/CardTransfer/submitCardTransfer.ts +72 -0
  70. package/mobile/src/components/CardTransfer/useSubmitCardTransfer.tsx +47 -0
  71. package/package.json +1 -1
  72. package/src/components/CardTransfer/CardTransfer.fixture.mobile.tsx +11 -3
  73. package/src/components/CardTransfer/CardTransfer.fixture.tsx +13 -1
  74. package/src/components/CardTransfer/CardTransfer.tsx +12 -9
  75. package/src/components/CardTransfer/CardTransferContent.ts +3 -1
  76. package/src/components/CardTransfer/SubmitFailedDialog.tsx +42 -0
  77. package/src/components/CardTransfer/submitCardTransfer.ts +72 -0
  78. package/src/components/CardTransfer/useSubmitCardTransfer.tsx +47 -0
@@ -0,0 +1,6 @@
1
+ export interface FormResponseDialogProps {
2
+ onClose?: () => void;
3
+ errorCode?: number;
4
+ errorMessage?: string;
5
+ }
6
+ export declare const SubmitFailedDialog: ({ onClose, errorCode, errorMessage, }: FormResponseDialogProps) => any;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
+ import { Dialog } from '../../ui-kit/DialogManager/Dialog.js';
3
+ import { Img } from '../../ui-kit/Img/Img.js';
4
+ import { Headline } from '../Headline/Headline.js';
5
+ const FAILED_TITLE = 'Ошибка перевода';
6
+ export const SubmitFailedDialog = ({ onClose, errorCode, errorMessage, }) => {
7
+ const description = errorCode ? `Код ошибки - ${errorCode}` : 'Пожалуйста, повторите позднее';
8
+ return (_jsx(Dialog, { className: "my-6xl max-w-lg w-full min-h-fit mx-auto", onClose: onClose, children: _jsxs("div", { className: "flex flex-col gap-lg items-center rounded-md space-x-m", children: [_jsx(Img, { image: { icon: 'ResponseFailIcon', iconVersion: 'normal' }, width: "136", height: "136" }), _jsx(Headline, { className: "w-full", title: FAILED_TITLE, description: description, headlineVersion: "XS", isEmbedded: true }), errorMessage ? (_jsxs("div", { className: "bg-secondary-dark rounded-xl px-4 pt-4 pb-8 grid gap-4 grid-cols-12", children: [_jsxs("div", { className: "col-span-8", children: [" ", errorMessage] }), _jsx("div", { className: "col-span-4", children: _jsx(Img, { image: { icon: 'ResponseFailIcon', iconVersion: 'normal' } }) })] })) : null] }) }));
9
+ };
10
+ //# sourceMappingURL=SubmitFailedDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubmitFailedDialog.js","sourceRoot":"","sources":["../../../src/components/CardTransfer/SubmitFailedDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,OAAO,EACP,SAAS,EACT,YAAY,GACY,EAAE,EAAE;IAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAE9F,OAAO,CACL,KAAC,MAAM,IAAC,SAAS,EAAC,0CAA0C,EAAC,OAAO,EAAE,OAAO,YAC3E,eAAK,SAAS,EAAC,wDAAwD,aACrE,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,GAAG,EAC5F,KAAC,QAAQ,IACP,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAC,IAAI,EACpB,UAAU,EAAE,IAAI,GAChB,EACD,YAAY,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAC,qEAAqE,aAClF,eAAK,SAAS,EAAC,YAAY,kBAAG,YAAY,IAAO,EACjD,cAAK,SAAS,EAAC,YAAY,YACzB,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAI,GAC/D,IACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACC,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type CardTransferFormType } from './CardTransferContent';
2
+ export declare type CardTransferResponse = Partial<{
3
+ errorCode: number;
4
+ errorMessage: string;
5
+ orderId: string;
6
+ formUrl: string;
7
+ }>;
8
+ export declare const submitCardTransfer: (typeForm: CardTransferFormType, amount: number) => Promise<CardTransferResponse | null>;
9
+ export declare const isSuccessResponse: (response: CardTransferResponse | null) => response is {
10
+ orderId: string;
11
+ formUrl: string;
12
+ };
13
+ export declare const isErrorInResponse: (response: CardTransferResponse | null) => response is {
14
+ errorCode: number;
15
+ errorMessage: string;
16
+ };
@@ -0,0 +1,39 @@
1
+ import { API_BASE_URI } from '../../api/apiBaseUrl.js';
2
+ import { locationNavigator } from '../../external/locationNavigator.js';
3
+ const paymentURLMap = {
4
+ private: 'p2p/registerP2P',
5
+ business: 'b2c/registerB2C',
6
+ };
7
+ const SUCCESS_URL = '/p2p/success';
8
+ const FAIL_URL = '/p2p/success';
9
+ const CURRENCY_CODE = '643';
10
+ const LANGUAGE = 'ru';
11
+ export const submitCardTransfer = async (typeForm, amount) => {
12
+ const navigator = locationNavigator();
13
+ const submitBody = {
14
+ amount: String(amount),
15
+ currency: CURRENCY_CODE,
16
+ returnUrl: `${navigator.origin}${SUCCESS_URL}`,
17
+ failUrl: `${navigator.origin}${FAIL_URL}`,
18
+ language: LANGUAGE,
19
+ };
20
+ const url = `${API_BASE_URI}/payment/${paymentURLMap[typeForm]}`;
21
+ try {
22
+ const res = await fetch(url, {
23
+ method: 'POST',
24
+ headers: { 'Content-Type': 'application/json' },
25
+ mode: 'cors',
26
+ body: JSON.stringify(submitBody),
27
+ });
28
+ if (!res.ok) {
29
+ return null;
30
+ }
31
+ return await res.json();
32
+ }
33
+ catch (ex) {
34
+ return null;
35
+ }
36
+ };
37
+ export const isSuccessResponse = (response) => Boolean(response?.formUrl) && Boolean(response?.orderId);
38
+ export const isErrorInResponse = (response) => Boolean(response?.errorMessage) && response?.errorCode !== 0;
39
+ //# sourceMappingURL=submitCardTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submitCardTransfer.js","sourceRoot":"","sources":["../../../src/components/CardTransfer/submitCardTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAkBrE,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,iBAAiB;CAC5B,CAAC;AAEF,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,QAA8B,EAC9B,MAAc,EACwB,EAAE;IACxC,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAA2B;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,EAAE;QAC9C,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,EAAE;QACzC,QAAQ,EAAE,QAAQ;KACnB,CAAC;IAEF,MAAM,GAAG,GAAG,GAAG,YAAY,YAAY,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEjE,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAED,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;KACzB;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAqC,EACa,EAAE,CACpD,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAqC,EACoB,EAAE,CAC3D,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,QAAQ,EAAE,SAAS,KAAK,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type CardTransferFormType } from './CardTransferContent';
2
+ export interface TransactionStore {
3
+ transaction: {
4
+ orderId: string;
5
+ type: 'p2p' | 'b2c';
6
+ url: string;
7
+ };
8
+ }
9
+ export declare const useSubmitCardTransfer: (formType: CardTransferFormType) => ({ amount }: {
10
+ amount: number;
11
+ }) => Promise<void>;
@@ -0,0 +1,30 @@
1
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { useSessionStore } from '@redneckz/uni-jsx/lib/Store/useSessionStore';
3
+ import { locationNavigator } from '../../external/locationNavigator.js';
4
+ import { useDialog } from '../../ui-kit/DialogManager/useDialog.js';
5
+ import { isErrorInResponse, isSuccessResponse, submitCardTransfer } from './submitCardTransfer.js';
6
+ import { SubmitFailedDialog } from './SubmitFailedDialog.js';
7
+ export const useSubmitCardTransfer = (formType) => {
8
+ const responseTypeDialog = useDialog(SubmitFailedDialog);
9
+ const sessionStore = useSessionStore();
10
+ const navigator = locationNavigator();
11
+ const adjustedTypeForm = formType === 'private' ? 'p2p' : 'b2c';
12
+ return useCallback(async ({ amount }) => {
13
+ const response = await submitCardTransfer(formType, amount);
14
+ if (isSuccessResponse(response)) {
15
+ sessionStore.transaction = {
16
+ orderId: response.orderId,
17
+ type: adjustedTypeForm,
18
+ url: navigator.href,
19
+ };
20
+ navigator.assign(`${adjustedTypeForm}/?formUrl=${encodeURIComponent(response.formUrl)}`);
21
+ }
22
+ if (isErrorInResponse(response)) {
23
+ responseTypeDialog.open({
24
+ errorCode: response.errorCode,
25
+ errorMessage: response.errorMessage,
26
+ });
27
+ }
28
+ }, [formType]);
29
+ };
30
+ //# sourceMappingURL=useSubmitCardTransfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSubmitCardTransfer.js","sourceRoot":"","sources":["../../../src/components/CardTransfer/useSubmitCardTransfer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAA8B,EAAE,EAAE;IACtE,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,eAAe,EAAoB,CAAC;IACzD,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,MAAM,gBAAgB,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhE,OAAO,WAAW,CAChB,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;YAC/B,YAAY,CAAC,WAAW,GAAG;gBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,SAAS,CAAC,IAAI;aACpB,CAAC;YAEF,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,aAAa,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC1F;QAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;YAC/B,kBAAkB,CAAC,IAAI,CAAC;gBACtB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAC;SACJ;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;AACJ,CAAC,CAAC"}
@@ -6492,24 +6492,97 @@
6492
6492
 
6493
6493
  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" }) }) })));
6494
6494
 
6495
+ const sessionStore = new Store(); // sessionStorage cache
6496
+ replicate(sessionStore, new StorageAdapter(globalThis?.sessionStorage));
6497
+ function useSessionStore() {
6498
+ return useStore(sessionStore);
6499
+ }
6500
+
6501
+ const paymentURLMap = {
6502
+ private: 'p2p/registerP2P',
6503
+ business: 'b2c/registerB2C',
6504
+ };
6505
+ const SUCCESS_URL = '/p2p/success';
6506
+ const FAIL_URL = '/p2p/success';
6507
+ const CURRENCY_CODE = '643';
6508
+ const LANGUAGE = 'ru';
6509
+ const submitCardTransfer = async (typeForm, amount) => {
6510
+ const navigator = locationNavigator();
6511
+ const submitBody = {
6512
+ amount: String(amount),
6513
+ currency: CURRENCY_CODE,
6514
+ returnUrl: `${navigator.origin}${SUCCESS_URL}`,
6515
+ failUrl: `${navigator.origin}${FAIL_URL}`,
6516
+ language: LANGUAGE,
6517
+ };
6518
+ const url = `${API_BASE_URI}/payment/${paymentURLMap[typeForm]}`;
6519
+ try {
6520
+ const res = await fetch(url, {
6521
+ method: 'POST',
6522
+ headers: { 'Content-Type': 'application/json' },
6523
+ mode: 'cors',
6524
+ body: JSON.stringify(submitBody),
6525
+ });
6526
+ if (!res.ok) {
6527
+ return null;
6528
+ }
6529
+ return await res.json();
6530
+ }
6531
+ catch (ex) {
6532
+ return null;
6533
+ }
6534
+ };
6535
+ const isSuccessResponse = (response) => Boolean(response?.formUrl) && Boolean(response?.orderId);
6536
+ const isErrorInResponse = (response) => Boolean(response?.errorMessage) && response?.errorCode !== 0;
6537
+
6538
+ const FAILED_TITLE = 'Ошибка перевода';
6539
+ const SubmitFailedDialog = ({ onClose, errorCode, errorMessage, }) => {
6540
+ const description = errorCode ? `Код ошибки - ${errorCode}` : 'Пожалуйста, повторите позднее';
6541
+ return (jsx(Dialog, { className: "my-6xl max-w-lg w-full min-h-fit mx-auto", onClose: onClose, children: jsxs("div", { className: "flex flex-col gap-lg items-center rounded-md space-x-m", children: [jsx(Img, { image: { icon: 'ResponseFailIcon', iconVersion: 'normal' }, width: "136", height: "136" }), jsx(Headline, { className: "w-full", title: FAILED_TITLE, description: description, headlineVersion: "XS", isEmbedded: true }), errorMessage ? (jsxs("div", { className: "bg-secondary-dark rounded-xl px-4 pt-4 pb-8 grid gap-4 grid-cols-12", children: [jsxs("div", { className: "col-span-8", children: [" ", errorMessage] }), jsx("div", { className: "col-span-4", children: jsx(Img, { image: { icon: 'ResponseFailIcon', iconVersion: 'normal' } }) })] })) : null] }) }));
6542
+ };
6543
+
6544
+ const useSubmitCardTransfer = (formType) => {
6545
+ const responseTypeDialog = useDialog(SubmitFailedDialog);
6546
+ const sessionStore = useSessionStore();
6547
+ const navigator = locationNavigator();
6548
+ const adjustedTypeForm = formType === 'private' ? 'p2p' : 'b2c';
6549
+ return useCallback(async ({ amount }) => {
6550
+ const response = await submitCardTransfer(formType, amount);
6551
+ if (isSuccessResponse(response)) {
6552
+ sessionStore.transaction = {
6553
+ orderId: response.orderId,
6554
+ type: adjustedTypeForm,
6555
+ url: navigator.href,
6556
+ };
6557
+ navigator.assign(`${adjustedTypeForm}/?formUrl=${encodeURIComponent(response.formUrl)}`);
6558
+ }
6559
+ if (isErrorInResponse(response)) {
6560
+ responseTypeDialog.open({
6561
+ errorCode: response.errorCode,
6562
+ errorMessage: response.errorMessage,
6563
+ });
6564
+ }
6565
+ }, [formType]);
6566
+ };
6567
+
6495
6568
  const DEFAULT_TITLE = 'Укажите сумму перевода';
6496
6569
  const DEFAULT_LABEL = 'Сумма перевода';
6497
6570
  const MAX_AMOUNT = 300000;
6498
6571
  const MIN_AMOUNT = 1;
6499
- const FORM_URL_MAP = {
6500
- private: 'https://old.rshb.ru/p2p/',
6501
- business: 'https://old.rshb.ru/smallbusiness/p2p/',
6502
- };
6503
6572
  const INITIAL_FORM_STATE = {
6504
6573
  amount: 1500,
6505
6574
  };
6506
6575
  const CardTransfer = JSX(({ className = '', title = DEFAULT_TITLE, label = DEFAULT_LABEL, button, formType = 'private', ...rest }) => {
6507
- const [{ amount }, { field }] = useForm(INITIAL_FORM_STATE);
6508
- const [isDisabled, setDisabled] = useState(false);
6576
+ const [isDisabled, { setValue: setDisabled }] = useBool(false);
6577
+ const handleSubmit = useSubmitCardTransfer(formType);
6578
+ const [{ amount }, { field, onSubmit }] = useForm(INITIAL_FORM_STATE, {
6579
+ onSubmit: handleSubmit,
6580
+ });
6581
+ // TODO: dont set state in useEffect
6509
6582
  useEffect(() => {
6510
6583
  setDisabled(amount <= 0);
6511
6584
  }, [amount]);
6512
- return (jsxs(BlockWrapper, { className: style('flex flex-col items-center', className), defaultPadding: "p-6xl", ...rest, children: [title ? (jsx(Heading, { className: "pb-lg xl:pb-4xl self-start xl:self-center", headingType: "h3", title: title })) : null, jsxs("form", { className: "w-full xl:max-w-[468px]", method: "POST", action: FORM_URL_MAP[formType], children: [jsx(CurrencyInput, { valid: !isDisabled, label: label, max: MAX_AMOUNT, min: MIN_AMOUNT, ...field('amount', { parse: Number, format: String }) }), jsx("input", { type: "hidden", name: "amount", value: amount }), button?.text ? (jsx(Button, { className: "w-full mt-lg", type: "submit", disabled: isDisabled, children: button.text })) : null] })] }));
6585
+ return (jsxs(BlockWrapper, { className: style('flex flex-col items-center', className), defaultPadding: "p-6xl", ...rest, children: [title ? (jsx(Heading, { className: "pb-lg xl:pb-4xl self-start xl:self-center", headingType: "h3", title: title })) : null, jsxs("form", { className: "w-full xl:max-w-[468px]", method: "POST", onSubmit: onSubmit, children: [jsx(CurrencyInput, { valid: !isDisabled, label: label, max: MAX_AMOUNT, min: MIN_AMOUNT, ...field('amount', { parse: Number, format: String }) }), jsx("input", { type: "hidden", name: "amount", value: amount }), button?.text ? (jsx(Button, { className: "w-full mt-lg", type: "submit", disabled: isDisabled, children: button.text })) : null] })] }));
6513
6586
  });
6514
6587
 
6515
6588
  const ITEMS_GAP = 16;
@@ -10017,7 +10090,7 @@
10017
10090
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
10018
10091
  });
10019
10092
 
10020
- const packageVersion = "0.14.744";
10093
+ const packageVersion = "0.14.745";
10021
10094
 
10022
10095
  exports.Blocks = Blocks;
10023
10096
  exports.ContentPage = ContentPage;