@multiversx/sdk-dapp-liquidity 1.0.4 → 1.0.5
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/api/tests/confirmRate.spec.js +6 -3
- package/api/tests/confirmRate.spec.mjs +6 -3
- package/api/tests/getRate.spec.js +4 -2
- package/api/tests/getRate.spec.mjs +4 -2
- package/package.json +1 -1
- package/reactjs/components/BridgeForm/BridgeForm.js +18 -2
- package/reactjs/components/BridgeForm/BridgeForm.mjs +18 -2
- package/reactjs/hooks/useBridgeFormik.d.ts +3 -3
- package/reactjs/hooks/useBridgeFormik.js +9 -9
- package/reactjs/hooks/useBridgeFormik.mjs +9 -9
- package/reactjs/queries/useGetMvxTokensBalances.query.js +1 -0
- package/reactjs/queries/useGetMvxTokensBalances.query.mjs +1 -0
- package/reactjs/queries/useGetRate.mutation.js +10 -1
- package/reactjs/queries/useGetRate.mutation.mjs +10 -1
- package/types/rate.d.ts +2 -0
|
@@ -18,7 +18,8 @@ describe("confirmRate", () => {
|
|
|
18
18
|
toChainId: "44",
|
|
19
19
|
sender: "0x123",
|
|
20
20
|
receiver: "0x456",
|
|
21
|
-
provider: types_providerType.ProviderType.None
|
|
21
|
+
provider: types_providerType.ProviderType.None,
|
|
22
|
+
orderId: "123"
|
|
22
23
|
};
|
|
23
24
|
const nativeAuthToken = "ZXJkMXdoOWMwc2pyMnhuOGh6ZjAybHd3Y3I0amsyczg0dGF0OXVkMmthcTZ6cjd4enB2bDlsNXE4YXdtZXg.YUhSMGNITTZMeTlrWlhadVpYUXVkR1Z0Y0d4aGRHVXRaR0Z3Y0M1dGRXeDBhWFpsY25ONExtTnZiUS5lZjc2YjRjNzZlZjZlMTNhNjM5MDc2N2ZjNzhhODhjYTRiYmI1OTE4YTJiOWRkYzQ0OTQyOTI3NjkzNjUwNjUxLjg2NDAwLmV5SjBhVzFsYzNSaGJYQWlPakUzTXpNME9EazBNREI5.04a986df7f0142837f9b1ca1ae4829f7b471e4c3470602ca6a16f2a4d7c6616c4e7628a93b4ce87d9534e95ab9215f893faeb9e0904e1d834007c16e43b12d01";
|
|
24
25
|
const config = {
|
|
@@ -64,7 +65,8 @@ describe("confirmRate", () => {
|
|
|
64
65
|
toChainId: "44",
|
|
65
66
|
sender: "0x123",
|
|
66
67
|
receiver: "0x456",
|
|
67
|
-
provider: types_providerType.ProviderType.None
|
|
68
|
+
provider: types_providerType.ProviderType.None,
|
|
69
|
+
orderId: "123"
|
|
68
70
|
};
|
|
69
71
|
const nativeAuthToken = "";
|
|
70
72
|
const config = {
|
|
@@ -108,7 +110,8 @@ describe("confirmRate", () => {
|
|
|
108
110
|
toChainId: "44",
|
|
109
111
|
sender: "0x123",
|
|
110
112
|
receiver: "0x456",
|
|
111
|
-
provider: types_providerType.ProviderType.None
|
|
113
|
+
provider: types_providerType.ProviderType.None,
|
|
114
|
+
orderId: "123"
|
|
112
115
|
};
|
|
113
116
|
const nativeAuthToken = "";
|
|
114
117
|
const config = {
|
|
@@ -16,7 +16,8 @@ describe("confirmRate", () => {
|
|
|
16
16
|
toChainId: "44",
|
|
17
17
|
sender: "0x123",
|
|
18
18
|
receiver: "0x456",
|
|
19
|
-
provider: ProviderType.None
|
|
19
|
+
provider: ProviderType.None,
|
|
20
|
+
orderId: "123"
|
|
20
21
|
};
|
|
21
22
|
const nativeAuthToken = "ZXJkMXdoOWMwc2pyMnhuOGh6ZjAybHd3Y3I0amsyczg0dGF0OXVkMmthcTZ6cjd4enB2bDlsNXE4YXdtZXg.YUhSMGNITTZMeTlrWlhadVpYUXVkR1Z0Y0d4aGRHVXRaR0Z3Y0M1dGRXeDBhWFpsY25ONExtTnZiUS5lZjc2YjRjNzZlZjZlMTNhNjM5MDc2N2ZjNzhhODhjYTRiYmI1OTE4YTJiOWRkYzQ0OTQyOTI3NjkzNjUwNjUxLjg2NDAwLmV5SjBhVzFsYzNSaGJYQWlPakUzTXpNME9EazBNREI5.04a986df7f0142837f9b1ca1ae4829f7b471e4c3470602ca6a16f2a4d7c6616c4e7628a93b4ce87d9534e95ab9215f893faeb9e0904e1d834007c16e43b12d01";
|
|
22
23
|
const config = {
|
|
@@ -62,7 +63,8 @@ describe("confirmRate", () => {
|
|
|
62
63
|
toChainId: "44",
|
|
63
64
|
sender: "0x123",
|
|
64
65
|
receiver: "0x456",
|
|
65
|
-
provider: ProviderType.None
|
|
66
|
+
provider: ProviderType.None,
|
|
67
|
+
orderId: "123"
|
|
66
68
|
};
|
|
67
69
|
const nativeAuthToken = "";
|
|
68
70
|
const config = {
|
|
@@ -106,7 +108,8 @@ describe("confirmRate", () => {
|
|
|
106
108
|
toChainId: "44",
|
|
107
109
|
sender: "0x123",
|
|
108
110
|
receiver: "0x456",
|
|
109
|
-
provider: ProviderType.None
|
|
111
|
+
provider: ProviderType.None,
|
|
112
|
+
orderId: "123"
|
|
110
113
|
};
|
|
111
114
|
const nativeAuthToken = "";
|
|
112
115
|
const config = {
|
|
@@ -26,7 +26,8 @@ describe("getRate", () => {
|
|
|
26
26
|
const response = {
|
|
27
27
|
fee: "5",
|
|
28
28
|
amountOut: "100",
|
|
29
|
-
provider: types_providerType.ProviderType.None
|
|
29
|
+
provider: types_providerType.ProviderType.None,
|
|
30
|
+
orderId: "123"
|
|
30
31
|
};
|
|
31
32
|
mockedAxios.post.mockResolvedValue({ data: response });
|
|
32
33
|
const result = await api_getRate.getRate({
|
|
@@ -53,7 +54,8 @@ describe("getRate", () => {
|
|
|
53
54
|
const response = {
|
|
54
55
|
fee: "5",
|
|
55
56
|
amountOut: "100",
|
|
56
|
-
provider: types_providerType.ProviderType.None
|
|
57
|
+
provider: types_providerType.ProviderType.None,
|
|
58
|
+
orderId: "123"
|
|
57
59
|
};
|
|
58
60
|
mockedAxios.post.mockResolvedValue({ data: response });
|
|
59
61
|
const result = await api_getRate.getRate({
|
|
@@ -24,7 +24,8 @@ describe("getRate", () => {
|
|
|
24
24
|
const response = {
|
|
25
25
|
fee: "5",
|
|
26
26
|
amountOut: "100",
|
|
27
|
-
provider: ProviderType.None
|
|
27
|
+
provider: ProviderType.None,
|
|
28
|
+
orderId: "123"
|
|
28
29
|
};
|
|
29
30
|
mockedAxios.post.mockResolvedValue({ data: response });
|
|
30
31
|
const result = await getRate({
|
|
@@ -51,7 +52,8 @@ describe("getRate", () => {
|
|
|
51
52
|
const response = {
|
|
52
53
|
fee: "5",
|
|
53
54
|
amountOut: "100",
|
|
54
|
-
provider: ProviderType.None
|
|
55
|
+
provider: ProviderType.None,
|
|
56
|
+
orderId: "123"
|
|
55
57
|
};
|
|
56
58
|
mockedAxios.post.mockResolvedValue({ data: response });
|
|
57
59
|
const result = await getRate({
|
package/package.json
CHANGED
|
@@ -435,8 +435,7 @@ const BridgeForm = ({
|
|
|
435
435
|
resetSwapForm,
|
|
436
436
|
setLastChangedField
|
|
437
437
|
} = reactjs_hooks_useBridgeFormik.useBridgeFormik({
|
|
438
|
-
|
|
439
|
-
provider: rate == null ? void 0 : rate.provider,
|
|
438
|
+
rate,
|
|
440
439
|
nativeAuthToken,
|
|
441
440
|
mvxAccountAddress: mvxAddress,
|
|
442
441
|
firstToken,
|
|
@@ -477,6 +476,23 @@ const BridgeForm = ({
|
|
|
477
476
|
};
|
|
478
477
|
});
|
|
479
478
|
}, [evmTokensWithBalances, firstToken == null ? void 0 : firstToken.address]);
|
|
479
|
+
require$$0.useEffect(() => {
|
|
480
|
+
const selectedTokenOption = mvxTokensWithBalances == null ? void 0 : mvxTokensWithBalances.find(
|
|
481
|
+
(x) => x.address === (secondToken == null ? void 0 : secondToken.address)
|
|
482
|
+
);
|
|
483
|
+
if (!selectedTokenOption) {
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
setSecondToken((prevState) => {
|
|
487
|
+
if (!prevState) {
|
|
488
|
+
return prevState;
|
|
489
|
+
}
|
|
490
|
+
return {
|
|
491
|
+
...prevState,
|
|
492
|
+
balance: selectedTokenOption == null ? void 0 : selectedTokenOption.balance
|
|
493
|
+
};
|
|
494
|
+
});
|
|
495
|
+
}, [mvxTokensWithBalances, secondToken == null ? void 0 : secondToken.address]);
|
|
480
496
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
481
497
|
"form",
|
|
482
498
|
{
|
|
@@ -432,8 +432,7 @@ const BridgeForm = ({
|
|
|
432
432
|
resetSwapForm,
|
|
433
433
|
setLastChangedField
|
|
434
434
|
} = useBridgeFormik({
|
|
435
|
-
|
|
436
|
-
provider: rate == null ? void 0 : rate.provider,
|
|
435
|
+
rate,
|
|
437
436
|
nativeAuthToken,
|
|
438
437
|
mvxAccountAddress: mvxAddress,
|
|
439
438
|
firstToken,
|
|
@@ -474,6 +473,23 @@ const BridgeForm = ({
|
|
|
474
473
|
};
|
|
475
474
|
});
|
|
476
475
|
}, [evmTokensWithBalances, firstToken == null ? void 0 : firstToken.address]);
|
|
476
|
+
useEffect(() => {
|
|
477
|
+
const selectedTokenOption = mvxTokensWithBalances == null ? void 0 : mvxTokensWithBalances.find(
|
|
478
|
+
(x) => x.address === (secondToken == null ? void 0 : secondToken.address)
|
|
479
|
+
);
|
|
480
|
+
if (!selectedTokenOption) {
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
setSecondToken((prevState) => {
|
|
484
|
+
if (!prevState) {
|
|
485
|
+
return prevState;
|
|
486
|
+
}
|
|
487
|
+
return {
|
|
488
|
+
...prevState,
|
|
489
|
+
balance: selectedTokenOption == null ? void 0 : selectedTokenOption.balance
|
|
490
|
+
};
|
|
491
|
+
});
|
|
492
|
+
}, [mvxTokensWithBalances, secondToken == null ? void 0 : secondToken.address]);
|
|
477
493
|
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
|
|
478
494
|
"form",
|
|
479
495
|
{
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ServerTransaction } from '../../types/transaction';
|
|
2
2
|
import { TokenType } from '../../types/token';
|
|
3
3
|
import { ProviderType } from '../../types/providerType';
|
|
4
|
+
import { RateRequestResponse } from '../../types';
|
|
4
5
|
|
|
5
6
|
export declare enum BridgeFormikValuesEnum {
|
|
6
7
|
firstToken = "firstToken",
|
|
@@ -18,7 +19,7 @@ export interface TradeFormikValuesType {
|
|
|
18
19
|
fromChainId?: string;
|
|
19
20
|
toChainId?: string;
|
|
20
21
|
}
|
|
21
|
-
export declare const useBridgeFormik: ({ nativeAuthToken, mvxAccountAddress, firstToken, firstAmount, secondToken, secondAmount, fromChainId, toChainId,
|
|
22
|
+
export declare const useBridgeFormik: ({ nativeAuthToken, mvxAccountAddress, firstToken, firstAmount, secondToken, secondAmount, fromChainId, toChainId, rate, onSubmit }: {
|
|
22
23
|
mvxAccountAddress?: string;
|
|
23
24
|
nativeAuthToken?: string;
|
|
24
25
|
firstAmount?: string;
|
|
@@ -27,8 +28,7 @@ export declare const useBridgeFormik: ({ nativeAuthToken, mvxAccountAddress, fir
|
|
|
27
28
|
toChainId?: string;
|
|
28
29
|
firstToken?: TokenType;
|
|
29
30
|
secondToken?: TokenType;
|
|
30
|
-
|
|
31
|
-
provider?: ProviderType;
|
|
31
|
+
rate?: RateRequestResponse;
|
|
32
32
|
onSubmit: ({ transactions, provider }: {
|
|
33
33
|
transactions: ServerTransaction[];
|
|
34
34
|
provider: ProviderType;
|
|
@@ -29,8 +29,7 @@ const useBridgeFormik = ({
|
|
|
29
29
|
secondAmount,
|
|
30
30
|
fromChainId,
|
|
31
31
|
toChainId,
|
|
32
|
-
|
|
33
|
-
provider,
|
|
32
|
+
rate,
|
|
34
33
|
onSubmit
|
|
35
34
|
}) => {
|
|
36
35
|
const [lastChangedField, setLastChangedField] = require$$0.useState(null);
|
|
@@ -69,11 +68,12 @@ const useBridgeFormik = ({
|
|
|
69
68
|
fromChainId: values2.fromChainId ?? "",
|
|
70
69
|
tokenOut: ((_b = values2.secondToken) == null ? void 0 : _b.address) ?? "",
|
|
71
70
|
toChainId: values2.toChainId ?? "",
|
|
72
|
-
fee: fee ?? "0",
|
|
73
71
|
amountOut: (secondAmount == null ? void 0 : secondAmount.toString()) ?? "",
|
|
74
72
|
sender: account.address ?? "",
|
|
75
73
|
receiver: mvxAccountAddress ?? "",
|
|
76
|
-
|
|
74
|
+
fee: (rate == null ? void 0 : rate.fee) ?? "0",
|
|
75
|
+
provider: (rate == null ? void 0 : rate.provider) ?? types_providerType.ProviderType.None,
|
|
76
|
+
orderId: (rate == null ? void 0 : rate.orderId) ?? ""
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
79
|
const transactions = data;
|
|
@@ -84,7 +84,7 @@ const useBridgeFormik = ({
|
|
|
84
84
|
resetSwapForm();
|
|
85
85
|
onSubmit({
|
|
86
86
|
transactions,
|
|
87
|
-
provider: provider ?? types_providerType.ProviderType.None
|
|
87
|
+
provider: (rate == null ? void 0 : rate.provider) ?? types_providerType.ProviderType.None
|
|
88
88
|
});
|
|
89
89
|
pendingSigningRef.current = false;
|
|
90
90
|
};
|
|
@@ -134,23 +134,23 @@ const useBridgeFormik = ({
|
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
if (lastChangedField === "firstAmount" && values.firstAmount && values.firstAmount !== "") {
|
|
137
|
-
const calculatedSecondAmount = parseFloat(values.firstAmount) - Number(fee);
|
|
137
|
+
const calculatedSecondAmount = parseFloat(values.firstAmount) - Number((rate == null ? void 0 : rate.fee) ?? "0");
|
|
138
138
|
setFieldValue(
|
|
139
139
|
"secondAmount",
|
|
140
140
|
calculatedSecondAmount > 0 ? calculatedSecondAmount : "0"
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
|
-
}, [values.firstAmount, fee, lastChangedField, touched.firstAmount]);
|
|
143
|
+
}, [values.firstAmount, rate == null ? void 0 : rate.fee, lastChangedField, touched.firstAmount]);
|
|
144
144
|
require$$0.useEffect(() => {
|
|
145
145
|
if (!values.secondAmount && touched.secondAmount) {
|
|
146
146
|
setFieldValue("firstAmount", 0, true);
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
if (lastChangedField === "secondAmount" && values.secondAmount && values.secondAmount !== "") {
|
|
150
|
-
const calculatedFirstAmount = parseFloat(values.secondAmount) + Number(fee);
|
|
150
|
+
const calculatedFirstAmount = parseFloat(values.secondAmount) + Number((rate == null ? void 0 : rate.fee) ?? "0");
|
|
151
151
|
setFieldValue("firstAmount", calculatedFirstAmount);
|
|
152
152
|
}
|
|
153
|
-
}, [values.secondAmount, fee, lastChangedField, touched.secondAmount]);
|
|
153
|
+
}, [values.secondAmount, rate == null ? void 0 : rate.fee, lastChangedField, touched.secondAmount]);
|
|
154
154
|
require$$0.useEffect(() => {
|
|
155
155
|
setFieldValue("firstToken", firstToken, true);
|
|
156
156
|
}, [firstToken]);
|
|
@@ -26,8 +26,7 @@ const useBridgeFormik = ({
|
|
|
26
26
|
secondAmount,
|
|
27
27
|
fromChainId,
|
|
28
28
|
toChainId,
|
|
29
|
-
|
|
30
|
-
provider,
|
|
29
|
+
rate,
|
|
31
30
|
onSubmit
|
|
32
31
|
}) => {
|
|
33
32
|
const [lastChangedField, setLastChangedField] = useState(null);
|
|
@@ -66,11 +65,12 @@ const useBridgeFormik = ({
|
|
|
66
65
|
fromChainId: values2.fromChainId ?? "",
|
|
67
66
|
tokenOut: ((_b = values2.secondToken) == null ? void 0 : _b.address) ?? "",
|
|
68
67
|
toChainId: values2.toChainId ?? "",
|
|
69
|
-
fee: fee ?? "0",
|
|
70
68
|
amountOut: (secondAmount == null ? void 0 : secondAmount.toString()) ?? "",
|
|
71
69
|
sender: account.address ?? "",
|
|
72
70
|
receiver: mvxAccountAddress ?? "",
|
|
73
|
-
|
|
71
|
+
fee: (rate == null ? void 0 : rate.fee) ?? "0",
|
|
72
|
+
provider: (rate == null ? void 0 : rate.provider) ?? ProviderType.None,
|
|
73
|
+
orderId: (rate == null ? void 0 : rate.orderId) ?? ""
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
const transactions = data;
|
|
@@ -81,7 +81,7 @@ const useBridgeFormik = ({
|
|
|
81
81
|
resetSwapForm();
|
|
82
82
|
onSubmit({
|
|
83
83
|
transactions,
|
|
84
|
-
provider: provider ?? ProviderType.None
|
|
84
|
+
provider: (rate == null ? void 0 : rate.provider) ?? ProviderType.None
|
|
85
85
|
});
|
|
86
86
|
pendingSigningRef.current = false;
|
|
87
87
|
};
|
|
@@ -131,23 +131,23 @@ const useBridgeFormik = ({
|
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
133
|
if (lastChangedField === "firstAmount" && values.firstAmount && values.firstAmount !== "") {
|
|
134
|
-
const calculatedSecondAmount = parseFloat(values.firstAmount) - Number(fee);
|
|
134
|
+
const calculatedSecondAmount = parseFloat(values.firstAmount) - Number((rate == null ? void 0 : rate.fee) ?? "0");
|
|
135
135
|
setFieldValue(
|
|
136
136
|
"secondAmount",
|
|
137
137
|
calculatedSecondAmount > 0 ? calculatedSecondAmount : "0"
|
|
138
138
|
);
|
|
139
139
|
}
|
|
140
|
-
}, [values.firstAmount, fee, lastChangedField, touched.firstAmount]);
|
|
140
|
+
}, [values.firstAmount, rate == null ? void 0 : rate.fee, lastChangedField, touched.firstAmount]);
|
|
141
141
|
useEffect(() => {
|
|
142
142
|
if (!values.secondAmount && touched.secondAmount) {
|
|
143
143
|
setFieldValue("firstAmount", 0, true);
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
146
|
if (lastChangedField === "secondAmount" && values.secondAmount && values.secondAmount !== "") {
|
|
147
|
-
const calculatedFirstAmount = parseFloat(values.secondAmount) + Number(fee);
|
|
147
|
+
const calculatedFirstAmount = parseFloat(values.secondAmount) + Number((rate == null ? void 0 : rate.fee) ?? "0");
|
|
148
148
|
setFieldValue("firstAmount", calculatedFirstAmount);
|
|
149
149
|
}
|
|
150
|
-
}, [values.secondAmount, fee, lastChangedField, touched.secondAmount]);
|
|
150
|
+
}, [values.secondAmount, rate == null ? void 0 : rate.fee, lastChangedField, touched.secondAmount]);
|
|
151
151
|
useEffect(() => {
|
|
152
152
|
setFieldValue("firstToken", firstToken, true);
|
|
153
153
|
}, [firstToken]);
|
|
@@ -13,7 +13,16 @@ const useGetRateMutation = () => {
|
|
|
13
13
|
return data;
|
|
14
14
|
};
|
|
15
15
|
return reactQuery.useMutation({
|
|
16
|
-
mutationFn
|
|
16
|
+
mutationFn,
|
|
17
|
+
onSuccess: (data) => {
|
|
18
|
+
const currentTime = (/* @__PURE__ */ new Date()).getTime();
|
|
19
|
+
if (data.expiresAt && new Date(data.expiresAt).getTime() < currentTime) {
|
|
20
|
+
throw new Error("Retrying due to expired rate");
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
retry: (failureCount, error) => {
|
|
24
|
+
return error.message === "Retrying due to expired rate" && failureCount < 2;
|
|
25
|
+
}
|
|
17
26
|
});
|
|
18
27
|
};
|
|
19
28
|
exports.useGetRateMutation = useGetRateMutation;
|
|
@@ -10,7 +10,16 @@ const useGetRateMutation = () => {
|
|
|
10
10
|
return data;
|
|
11
11
|
};
|
|
12
12
|
return useMutation({
|
|
13
|
-
mutationFn
|
|
13
|
+
mutationFn,
|
|
14
|
+
onSuccess: (data) => {
|
|
15
|
+
const currentTime = (/* @__PURE__ */ new Date()).getTime();
|
|
16
|
+
if (data.expiresAt && new Date(data.expiresAt).getTime() < currentTime) {
|
|
17
|
+
throw new Error("Retrying due to expired rate");
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
retry: (failureCount, error) => {
|
|
21
|
+
return error.message === "Retrying due to expired rate" && failureCount < 2;
|
|
22
|
+
}
|
|
14
23
|
});
|
|
15
24
|
};
|
|
16
25
|
export {
|