@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.
@@ -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
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "homepage": "https://github.com/multiversx/mx-sdk-dapp-liquidity#readme",
30
30
  "license": "MIT",
31
- "version": "1.0.4",
31
+ "version": "1.0.5",
32
32
  "main": "index.js",
33
33
  "module": "index.mjs",
34
34
  "types": "index.d.ts",
@@ -435,8 +435,7 @@ const BridgeForm = ({
435
435
  resetSwapForm,
436
436
  setLastChangedField
437
437
  } = reactjs_hooks_useBridgeFormik.useBridgeFormik({
438
- fee: rate == null ? void 0 : rate.fee,
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
- fee: rate == null ? void 0 : rate.fee,
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, fee, provider, onSubmit }: {
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
- fee?: string;
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
- fee = "0",
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
- provider: provider ?? types_providerType.ProviderType.None
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
- fee = "0",
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
- provider: provider ?? ProviderType.None
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]);
@@ -46,6 +46,7 @@ const useGetMvxTokensBalancesQuery = ({
46
46
  refetchOnWindowFocus: false,
47
47
  refetchIntervalInBackground: true,
48
48
  refetchInterval: 2e4,
49
+ refetchOnReconnect: "always",
49
50
  gcTime: 0
50
51
  });
51
52
  };
@@ -43,6 +43,7 @@ const useGetMvxTokensBalancesQuery = ({
43
43
  refetchOnWindowFocus: false,
44
44
  refetchIntervalInBackground: true,
45
45
  refetchInterval: 2e4,
46
+ refetchOnReconnect: "always",
46
47
  gcTime: 0
47
48
  });
48
49
  };
@@ -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 {
package/types/rate.d.ts CHANGED
@@ -11,4 +11,6 @@ export interface RateRequestResponse {
11
11
  fee: string;
12
12
  amountOut: string;
13
13
  provider: ProviderType;
14
+ orderId: string;
15
+ expiresAt?: number;
14
16
  }