@aurora-is-near/intents-swap-widget 3.24.0 → 3.25.0
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/dist/{config-Bg5hUlJL.js → config-6S9JcYY_.js} +319 -318
- package/dist/config-6S9JcYY_.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +1 -1
- package/dist/errors.js +1 -1
- package/dist/ext/alchemy/index.js +1 -1
- package/dist/ext/index.js +1 -1
- package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
- package/dist/features/BalanceRpcLoader/index.js +1 -1
- package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
- package/dist/features/ChainsDropdown/index.js +1 -1
- package/dist/features/ChainsSelector/index.js +1 -1
- package/dist/features/DepositMethodSwitcher.js +1 -1
- package/dist/features/ErrorBoundary.js +1 -1
- package/dist/features/ExternalDeposit.js +1 -1
- package/dist/features/SendAddress/index.js +1 -1
- package/dist/features/SendAddress/useNotification.js +1 -1
- package/dist/features/SubmitButton/index.js +1 -1
- package/dist/features/SuccessScreen/index.js +1 -1
- package/dist/features/SuccessScreen/useSummaryItemsCount.js +1 -1
- package/dist/features/SwapDirectionSwitcher.js +1 -1
- package/dist/features/SwapQuote/SwapQuote.js +1 -1
- package/dist/features/SwapQuote/index.js +1 -1
- package/dist/features/TokenInput/TokenInput.js +1 -1
- package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
- package/dist/features/TokenInput/TokenInputSource.js +1 -1
- package/dist/features/TokenInput/TokenInputTarget.js +1 -1
- package/dist/features/TokenInput/WalletBalance.js +1 -1
- package/dist/features/TokenInput/hooks/index.js +1 -1
- package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
- package/dist/features/TokenInput/index.js +1 -1
- package/dist/features/TokensList/TokenItem.js +1 -1
- package/dist/features/TokensList/TokensList.js +1 -1
- package/dist/features/TokensList/index.js +1 -1
- package/dist/features/TokensModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +1 -1
- package/dist/features/WalletCompatibilityCheck/index.js +1 -1
- package/dist/features/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useAllTokens.js +1 -1
- package/dist/hooks/useChains.js +1 -1
- package/dist/hooks/useCompatibilityCheck.js +1 -1
- package/dist/hooks/useDefaultToken.js +1 -1
- package/dist/hooks/useExternalDepositStatus/index.js +1 -1
- package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
- package/dist/hooks/useIntentsBalance.js +1 -1
- package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
- package/dist/hooks/useMakeDepositAddress.js +1 -1
- package/dist/hooks/useMakeIntentsTransfer.js +1 -1
- package/dist/hooks/useMakeNEARFtTransferCall.js +1 -1
- package/dist/hooks/useMakeQuote.js +1 -1
- package/dist/hooks/useMakeQuoteTransfer.js +1 -1
- package/dist/hooks/useMakeTransfer.js +1 -1
- package/dist/hooks/useMergedBalance.js +1 -1
- package/dist/hooks/useSwitchChain.js +1 -1
- package/dist/hooks/useTheme.js +1 -1
- package/dist/hooks/useTokenInputPair.js +1 -1
- package/dist/hooks/useTokens.js +1 -1
- package/dist/hooks/useTokensFiltered.js +1 -1
- package/dist/hooks/useTokensIntentsUnique.js +1 -1
- package/dist/index.js +1 -1
- package/dist/machine/effects/index.js +1 -1
- package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
- package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
- package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
- package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
- package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
- package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
- package/dist/machine/effects/useWalletConnEffect.js +1 -1
- package/dist/machine/events/index.js +1 -1
- package/dist/machine/events/tokenSelect.js +1 -1
- package/dist/machine/events/validateInputAndMoveTo.js +1 -1
- package/dist/machine/events/validateInputs.js +1 -1
- package/dist/machine/index.js +1 -1
- package/dist/machine/snap.js +1 -1
- package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
- package/dist/machine/subscriptions/index.js +1 -1
- package/dist/theme/ThemeProvider.js +1 -1
- package/dist/types/config.d.ts +2 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/intents/signers/near.js +1 -1
- package/dist/utils/intents/signers/privy.js +1 -1
- package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
- package/dist/widgets/Widget/WidgetContent.js +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +81 -77
- package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
- package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js +101 -90
- package/dist/widgets/WidgetSwap/WidgetSwapContent.js.map +1 -1
- package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +97 -90
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js.map +1 -1
- package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
- package/package.json +1 -1
- package/src/machine/effects/useSelectedTokensEffect.ts +8 -2
- package/src/types/config.ts +2 -1
- package/src/types/index.ts +1 -0
- package/src/widgets/WidgetDeposit/WidgetDepositContent.tsx +19 -9
- package/src/widgets/WidgetSwap/WidgetSwapContent.tsx +24 -19
- package/src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx +22 -7
- package/dist/config-Bg5hUlJL.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { jsx as t, jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { useTokenModal as
|
|
4
|
-
import { WidgetWithdrawSkeleton as
|
|
5
|
-
import { useTypedTranslation as
|
|
6
|
-
import { b as
|
|
1
|
+
import { jsx as t, jsxs as _ } from "react/jsx-runtime";
|
|
2
|
+
import { useState as b, useEffect as y, useMemo as N } from "react";
|
|
3
|
+
import { useTokenModal as O } from "../../hooks/useTokenModal.js";
|
|
4
|
+
import { WidgetWithdrawSkeleton as T } from "./WidgetWithdrawSkeleton.js";
|
|
5
|
+
import { useTypedTranslation as Q } from "../../localisation.js";
|
|
6
|
+
import { b as j, u as q, y as U, n as K, c as P, p as S, o as z, S as G } from "../../config-6S9JcYY_.js";
|
|
7
7
|
import "@tanstack/react-query";
|
|
8
8
|
import "@headlessui/react";
|
|
9
9
|
import "@material-symbols-svg/react-rounded/icons/chevron-left";
|
|
@@ -11,18 +11,18 @@ import "framer-motion";
|
|
|
11
11
|
import "../../features/ChainsDropdown/ChainItem.js";
|
|
12
12
|
import "../../utils/cn.js";
|
|
13
13
|
import "../../constants/chains.js";
|
|
14
|
-
import { notReachable as
|
|
15
|
-
import { SendAddress as
|
|
16
|
-
import { SuccessScreen as
|
|
17
|
-
import { TokensModal as
|
|
18
|
-
import { DirectionSwitcher as
|
|
14
|
+
import { notReachable as s } from "../../utils/notReachable.js";
|
|
15
|
+
import { SendAddress as H } from "../../features/SendAddress/index.js";
|
|
16
|
+
import { SuccessScreen as J } from "../../features/SuccessScreen/index.js";
|
|
17
|
+
import { TokensModal as L } from "../../features/TokensModal.js";
|
|
18
|
+
import { DirectionSwitcher as V } from "../../components/DirectionSwitcher.js";
|
|
19
19
|
import "ethers";
|
|
20
20
|
import "../../machine/machine.js";
|
|
21
|
-
import { fireEvent as
|
|
21
|
+
import { fireEvent as C } from "../../machine/events/utils/fireEvent.js";
|
|
22
22
|
import "qrcode.react";
|
|
23
23
|
import "@defuse-protocol/one-click-sdk-typescript";
|
|
24
24
|
import "@material-symbols-svg/react-rounded/icons/progress-activity";
|
|
25
|
-
import { isDebug as
|
|
25
|
+
import { isDebug as X } from "../../utils/checkers/isDebug.js";
|
|
26
26
|
import "viem";
|
|
27
27
|
import "zod";
|
|
28
28
|
import "../../utils/near/rpc.js";
|
|
@@ -35,15 +35,15 @@ import "../../index-xuotMAFm.js";
|
|
|
35
35
|
import "axios";
|
|
36
36
|
import "../../network.js";
|
|
37
37
|
import "viem/chains";
|
|
38
|
-
import { useTokenInputPair as
|
|
39
|
-
import { useIsCompatibilityCheckRequired as
|
|
38
|
+
import { useTokenInputPair as Y } from "../../hooks/useTokenInputPair.js";
|
|
39
|
+
import { useIsCompatibilityCheckRequired as Z } from "../../hooks/useIsCompatibilityCheckRequired.js";
|
|
40
40
|
import "browser-or-node";
|
|
41
|
-
import { Card as
|
|
41
|
+
import { Card as x } from "../../components/Card.js";
|
|
42
42
|
import "@material-symbols-svg/react-rounded/icons/close";
|
|
43
43
|
import "@material-symbols-svg/react-rounded/icons/emergency";
|
|
44
44
|
import "@material-symbols-svg/react-rounded/icons/error";
|
|
45
45
|
import "@material-symbols-svg/react-rounded/icons/verified";
|
|
46
|
-
import { BlockingError as
|
|
46
|
+
import { BlockingError as $ } from "../../components/BlockingError.js";
|
|
47
47
|
import "copy-text-to-clipboard";
|
|
48
48
|
import "@material-symbols-svg/react-rounded/icons/content-copy";
|
|
49
49
|
import "../../components/Input.js";
|
|
@@ -53,27 +53,28 @@ import "@material-symbols-svg/react-rounded/icons/check-circle";
|
|
|
53
53
|
import "../../components/ChainShortcut.js";
|
|
54
54
|
import "@material-symbols-svg/react-rounded/icons/qr-code";
|
|
55
55
|
import "@material-symbols-svg/react-rounded/icons/wallet";
|
|
56
|
-
import { WalletCompatibilityCheck as
|
|
57
|
-
const
|
|
56
|
+
import { WalletCompatibilityCheck as ee } from "../../features/WalletCompatibilityCheck/index.js";
|
|
57
|
+
const rt = ({
|
|
58
58
|
providers: m,
|
|
59
|
-
makeTransfer:
|
|
59
|
+
makeTransfer: W,
|
|
60
60
|
onMsg: i,
|
|
61
|
-
isLoading:
|
|
61
|
+
isLoading: v
|
|
62
62
|
}) => {
|
|
63
|
-
const { t:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
const { t: n } = Q(), { ctx: o } = j(), { isDirectNearTokenWithdrawal: I } = q(), {
|
|
64
|
+
chainsFilter: c,
|
|
65
|
+
alchemyApiKey: A,
|
|
66
|
+
refetchQuoteInterval: M,
|
|
67
|
+
intentsAccountType: E,
|
|
68
|
+
onWalletSignout: R
|
|
69
|
+
} = U(), { status: d, refetch: B } = K(), { tokenModalOpen: r, updateTokenModalState: a } = O({ onMsg: i }), { onChangeAmount: f, onChangeToken: l, lastChangedInput: p } = Y(), k = Z(), [D, u] = b(!1);
|
|
70
|
+
y(() => {
|
|
71
|
+
k && u(!0);
|
|
71
72
|
}, [k]);
|
|
72
|
-
const [
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}, []),
|
|
76
|
-
debug:
|
|
73
|
+
const [h, g] = b();
|
|
74
|
+
y(() => {
|
|
75
|
+
C("reset", { clearWalletAddress: !0 });
|
|
76
|
+
}, []), P({
|
|
77
|
+
debug: X(),
|
|
77
78
|
listenTo: [
|
|
78
79
|
"checkWalletConnection",
|
|
79
80
|
"setSourceTokenBalance",
|
|
@@ -86,98 +87,104 @@ const et = ({
|
|
|
86
87
|
{
|
|
87
88
|
message: void 0,
|
|
88
89
|
type: p === "target" ? "exact_out" : "exact_in",
|
|
89
|
-
refetchQuoteInterval:
|
|
90
|
+
refetchQuoteInterval: M
|
|
90
91
|
}
|
|
91
92
|
],
|
|
92
|
-
["setBalancesUsingAlchemyExt", { alchemyApiKey:
|
|
93
|
+
["setBalancesUsingAlchemyExt", { alchemyApiKey: A }]
|
|
93
94
|
]
|
|
94
95
|
});
|
|
95
|
-
const
|
|
96
|
-
|
|
96
|
+
const w = N(() => c || {
|
|
97
|
+
source: {
|
|
98
|
+
intents: "with-balance",
|
|
99
|
+
external: "none"
|
|
100
|
+
},
|
|
101
|
+
target: {
|
|
102
|
+
intents: "none",
|
|
103
|
+
external: "all"
|
|
104
|
+
}
|
|
105
|
+
}, [c, o.walletAddress]), F = () => {
|
|
106
|
+
C("reset", { clearWalletAddress: !1, keepSelectedTokens: !0 });
|
|
97
107
|
};
|
|
98
|
-
if (
|
|
99
|
-
return /* @__PURE__ */ t(
|
|
100
|
-
if (
|
|
108
|
+
if (v || d !== "error" && !o.sourceToken)
|
|
109
|
+
return /* @__PURE__ */ t(T, {});
|
|
110
|
+
if (D)
|
|
101
111
|
return /* @__PURE__ */ t(
|
|
102
|
-
|
|
112
|
+
ee,
|
|
103
113
|
{
|
|
104
114
|
providers: m,
|
|
105
115
|
onMsg: (e) => {
|
|
106
116
|
switch (e.type) {
|
|
107
117
|
case "on_sign_out":
|
|
108
|
-
|
|
118
|
+
R?.(E), u(!1);
|
|
109
119
|
break;
|
|
110
120
|
case "on_close":
|
|
111
|
-
|
|
121
|
+
u(!1);
|
|
112
122
|
break;
|
|
113
123
|
default:
|
|
114
|
-
|
|
124
|
+
s(e.type);
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
127
|
}
|
|
118
128
|
);
|
|
119
|
-
if (
|
|
129
|
+
if (o.state === "transfer_success" && h)
|
|
120
130
|
return /* @__PURE__ */ t(
|
|
121
|
-
|
|
131
|
+
J,
|
|
122
132
|
{
|
|
123
133
|
showTargetToken: !0,
|
|
124
|
-
title:
|
|
125
|
-
...
|
|
134
|
+
title: n("transfer.success.withdrawal.title", "Withdrawal successful"),
|
|
135
|
+
...h,
|
|
126
136
|
onMsg: (e) => {
|
|
127
137
|
switch (e.type) {
|
|
128
138
|
case "on_dismiss_success":
|
|
129
|
-
|
|
139
|
+
g(void 0), F();
|
|
130
140
|
break;
|
|
131
141
|
default:
|
|
132
|
-
|
|
142
|
+
s(e.type);
|
|
133
143
|
}
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
);
|
|
137
|
-
switch (
|
|
147
|
+
switch (d) {
|
|
138
148
|
case "error":
|
|
139
149
|
return /* @__PURE__ */ t(
|
|
140
|
-
|
|
150
|
+
$,
|
|
141
151
|
{
|
|
142
152
|
message: "Couldn't load tokens list.",
|
|
143
|
-
onClickRetry:
|
|
153
|
+
onClickRetry: B
|
|
144
154
|
}
|
|
145
155
|
);
|
|
146
156
|
case "success":
|
|
147
|
-
return
|
|
148
|
-
|
|
157
|
+
return r !== "none" ? /* @__PURE__ */ t(
|
|
158
|
+
L,
|
|
149
159
|
{
|
|
150
160
|
showBalances: !0,
|
|
151
|
-
variant:
|
|
152
|
-
showChainsSelector:
|
|
161
|
+
variant: r,
|
|
162
|
+
showChainsSelector: r === "target",
|
|
153
163
|
groupTokens: !1,
|
|
154
|
-
chainsFilter:
|
|
155
|
-
intents: "with-balance",
|
|
156
|
-
external: "none"
|
|
157
|
-
} : { intents: "none", external: "all" },
|
|
164
|
+
chainsFilter: r === "source" ? w.source : w.target,
|
|
158
165
|
onMsg: (e) => {
|
|
159
166
|
switch (e.type) {
|
|
160
167
|
case "on_select_token":
|
|
161
|
-
|
|
168
|
+
l(r, e.token), a("none"), i?.({
|
|
162
169
|
type: e.type,
|
|
163
170
|
token: e.token,
|
|
164
|
-
variant:
|
|
171
|
+
variant: r
|
|
165
172
|
});
|
|
166
173
|
break;
|
|
167
174
|
case "on_dismiss_tokens_modal":
|
|
168
175
|
a("none");
|
|
169
176
|
break;
|
|
170
177
|
default:
|
|
171
|
-
|
|
178
|
+
s(e);
|
|
172
179
|
}
|
|
173
180
|
}
|
|
174
181
|
}
|
|
175
|
-
) : /* @__PURE__ */
|
|
176
|
-
/* @__PURE__ */
|
|
177
|
-
/* @__PURE__ */ t(
|
|
178
|
-
|
|
182
|
+
) : /* @__PURE__ */ _("div", { className: "gap-sw-2xl relative flex flex-col", children: [
|
|
183
|
+
/* @__PURE__ */ _("div", { className: "gap-[10px] relative flex flex-col", children: [
|
|
184
|
+
/* @__PURE__ */ t(x, { padding: "none", children: /* @__PURE__ */ t(
|
|
185
|
+
S.Source,
|
|
179
186
|
{
|
|
180
|
-
heading:
|
|
187
|
+
heading: n(
|
|
181
188
|
"tokenInput.heading.source.withdraw",
|
|
182
189
|
"Withdraw token"
|
|
183
190
|
),
|
|
@@ -185,25 +192,25 @@ const et = ({
|
|
|
185
192
|
onMsg: (e) => {
|
|
186
193
|
switch (e.type) {
|
|
187
194
|
case "on_select_token":
|
|
188
|
-
|
|
195
|
+
l("source", e.token);
|
|
189
196
|
break;
|
|
190
197
|
case "on_change_amount":
|
|
191
|
-
|
|
198
|
+
f("source", e.amount);
|
|
192
199
|
break;
|
|
193
200
|
case "on_click_select_token":
|
|
194
201
|
a("source");
|
|
195
202
|
break;
|
|
196
203
|
default:
|
|
197
|
-
|
|
204
|
+
s(e);
|
|
198
205
|
}
|
|
199
206
|
}
|
|
200
207
|
}
|
|
201
208
|
) }),
|
|
202
|
-
/* @__PURE__ */ t(
|
|
203
|
-
/* @__PURE__ */ t(
|
|
204
|
-
|
|
209
|
+
/* @__PURE__ */ t(V, { isEnabled: !1 }),
|
|
210
|
+
/* @__PURE__ */ t(x, { padding: "none", children: /* @__PURE__ */ t(
|
|
211
|
+
S.Target,
|
|
205
212
|
{
|
|
206
|
-
heading:
|
|
213
|
+
heading: n(
|
|
207
214
|
"tokenInput.heading.target.withdraw",
|
|
208
215
|
"Receive token"
|
|
209
216
|
),
|
|
@@ -211,53 +218,53 @@ const et = ({
|
|
|
211
218
|
onMsg: (e) => {
|
|
212
219
|
switch (e.type) {
|
|
213
220
|
case "on_select_token":
|
|
214
|
-
|
|
221
|
+
l("target", e.token);
|
|
215
222
|
break;
|
|
216
223
|
case "on_change_amount":
|
|
217
|
-
|
|
224
|
+
f("target", e.amount);
|
|
218
225
|
break;
|
|
219
226
|
case "on_click_select_token":
|
|
220
227
|
a("target");
|
|
221
228
|
break;
|
|
222
229
|
default:
|
|
223
|
-
|
|
230
|
+
s(e);
|
|
224
231
|
}
|
|
225
232
|
}
|
|
226
233
|
}
|
|
227
234
|
) })
|
|
228
235
|
] }),
|
|
229
|
-
!!
|
|
230
|
-
|
|
236
|
+
!!o.walletAddress && o.targetToken && !o.targetToken.isIntent && /* @__PURE__ */ t(
|
|
237
|
+
H,
|
|
231
238
|
{
|
|
232
239
|
onMsg: (e) => {
|
|
233
240
|
switch (e.type) {
|
|
234
241
|
case "on_change_send_address":
|
|
235
242
|
break;
|
|
236
243
|
default:
|
|
237
|
-
|
|
244
|
+
s(e.type, { throwError: !1 });
|
|
238
245
|
}
|
|
239
246
|
}
|
|
240
247
|
}
|
|
241
248
|
),
|
|
242
|
-
!
|
|
249
|
+
!I && /* @__PURE__ */ t(z, {}),
|
|
243
250
|
/* @__PURE__ */ t(
|
|
244
|
-
|
|
251
|
+
G,
|
|
245
252
|
{
|
|
246
253
|
providers: m,
|
|
247
|
-
makeTransfer:
|
|
248
|
-
label:
|
|
254
|
+
makeTransfer: W,
|
|
255
|
+
label: n("submit.active.withdraw", "Swap & withdraw"),
|
|
249
256
|
onSuccess: (e) => {
|
|
250
|
-
|
|
257
|
+
g(e), i?.({ type: "on_transfer_success" });
|
|
251
258
|
}
|
|
252
259
|
}
|
|
253
260
|
)
|
|
254
261
|
] });
|
|
255
262
|
case "pending":
|
|
256
263
|
default:
|
|
257
|
-
return /* @__PURE__ */ t(
|
|
264
|
+
return /* @__PURE__ */ t(T, {});
|
|
258
265
|
}
|
|
259
266
|
};
|
|
260
267
|
export {
|
|
261
|
-
|
|
268
|
+
rt as WidgetWithdrawContent
|
|
262
269
|
};
|
|
263
270
|
//# sourceMappingURL=WidgetWithdrawContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { Token, TransferResult } from '@/types';\n\nexport type Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n const onBackToSwap = () => {\n fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });\n };\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n showTargetToken\n title={t('transfer.success.withdrawal.title', 'Withdrawal successful')}\n {...transferResult}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n onBackToSwap();\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? {\n intents: 'with-balance',\n external: 'none',\n }\n : { intents: 'none', external: 'all' }\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","onBackToSwap","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WidgetWithdrawContent.js","sources":["../../../src/widgets/WidgetWithdraw/WidgetWithdrawContent.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport type { CommonWidgetProps, TokenInputType } from '../types';\nimport { useTokenModal } from '../../hooks/useTokenModal';\nimport { WidgetWithdrawSkeleton } from './WidgetWithdrawSkeleton';\nimport { useTypedTranslation } from '../../localisation';\nimport {\n SendAddress,\n SubmitButton,\n SuccessScreen,\n SwapQuote,\n TokenInput,\n TokensModal,\n} from '@/features';\n\nimport { BlockingError, Card, DirectionSwitcher } from '@/components';\nimport { WalletCompatibilityCheck } from '@/features/WalletCompatibilityCheck';\n\nimport { useStoreSideEffects } from '@/machine/effects';\nimport { useComputedSnapshot, useUnsafeSnapshot } from '@/machine/snap';\nimport { fireEvent } from '@/machine/events/utils/fireEvent';\n\nimport {\n useIsCompatibilityCheckRequired,\n useTokenInputPair,\n useTokens,\n} from '@/hooks';\nimport { useConfig } from '@/config';\n\nimport { isDebug, notReachable } from '@/utils';\n\nimport type { ChainsFilters, Token, TransferResult } from '@/types';\n\nexport type Msg =\n | { type: 'on_select_token'; token: Token; variant: TokenInputType }\n | { type: 'on_transfer_success' }\n | { type: 'on_tokens_modal_toggled'; isOpen: boolean };\n\nexport type Props = CommonWidgetProps<Msg>;\n\nexport const WidgetWithdrawContent = ({\n providers,\n makeTransfer,\n onMsg,\n isLoading,\n}: Props) => {\n const { t } = useTypedTranslation();\n const { ctx } = useUnsafeSnapshot();\n const { isDirectNearTokenWithdrawal } = useComputedSnapshot();\n const {\n chainsFilter: customChainsFilter,\n alchemyApiKey,\n refetchQuoteInterval,\n intentsAccountType,\n onWalletSignout,\n } = useConfig();\n\n const { status: tokensStatus, refetch: refetchTokens } = useTokens();\n const { tokenModalOpen, updateTokenModalState } = useTokenModal({ onMsg });\n const { onChangeAmount, onChangeToken, lastChangedInput } =\n useTokenInputPair();\n\n const isCompatibilityCheckRequired = useIsCompatibilityCheckRequired();\n const [isCompatibilityOpen, setIsCompatibilityOpen] = useState(false);\n\n useEffect(() => {\n if (isCompatibilityCheckRequired) {\n setIsCompatibilityOpen(true);\n }\n }, [isCompatibilityCheckRequired]);\n\n const [transferResult, setTransferResult] = useState<\n TransferResult | undefined\n >();\n\n useEffect(() => {\n fireEvent('reset', { clearWalletAddress: true });\n }, []);\n\n useStoreSideEffects({\n debug: isDebug(),\n listenTo: [\n 'checkWalletConnection',\n 'setSourceTokenBalance',\n [\n 'setDefaultSelectedTokens',\n { skipIntents: false, target: 'same-asset' },\n ],\n [\n 'makeQuote',\n {\n message: undefined,\n type: lastChangedInput === 'target' ? 'exact_out' : 'exact_in',\n refetchQuoteInterval,\n },\n ],\n ['setBalancesUsingAlchemyExt', { alchemyApiKey }],\n ],\n });\n\n const chainsFilters = useMemo((): ChainsFilters => {\n if (customChainsFilter) {\n return customChainsFilter;\n }\n\n return {\n source: {\n intents: 'with-balance',\n external: 'none',\n },\n target: {\n intents: 'none',\n external: 'all',\n },\n };\n }, [customChainsFilter, ctx.walletAddress]);\n\n const onBackToSwap = () => {\n fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });\n };\n\n if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {\n return <WidgetWithdrawSkeleton />;\n }\n\n if (isCompatibilityOpen) {\n return (\n <WalletCompatibilityCheck\n providers={providers}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_sign_out':\n onWalletSignout?.(intentsAccountType);\n setIsCompatibilityOpen(false);\n break;\n case 'on_close':\n setIsCompatibilityOpen(false);\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n if (ctx.state === 'transfer_success' && !!transferResult) {\n return (\n <SuccessScreen\n showTargetToken\n title={t('transfer.success.withdrawal.title', 'Withdrawal successful')}\n {...transferResult}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_dismiss_success':\n setTransferResult(undefined);\n onBackToSwap();\n break;\n default:\n notReachable(msg.type);\n }\n }}\n />\n );\n }\n\n switch (tokensStatus) {\n case 'error':\n return (\n <BlockingError\n message=\"Couldn't load tokens list.\"\n onClickRetry={refetchTokens}\n />\n );\n\n case 'success': {\n if (tokenModalOpen !== 'none') {\n return (\n <TokensModal\n showBalances\n variant={tokenModalOpen}\n showChainsSelector={tokenModalOpen === 'target'}\n groupTokens={false}\n chainsFilter={\n tokenModalOpen === 'source'\n ? chainsFilters.source\n : chainsFilters.target\n }\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken(tokenModalOpen, msg.token);\n updateTokenModalState('none');\n onMsg?.({\n type: msg.type,\n token: msg.token,\n variant: tokenModalOpen,\n });\n break;\n case 'on_dismiss_tokens_modal':\n updateTokenModalState('none');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n );\n }\n\n return (\n <div className=\"gap-sw-2xl relative flex flex-col\">\n <div className=\"gap-[10px] relative flex flex-col\">\n <Card padding=\"none\">\n <TokenInput.Source\n heading={t(\n 'tokenInput.heading.source.withdraw',\n 'Withdraw token',\n )}\n isChanging={lastChangedInput === 'source'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('source', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('source', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('source');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n\n <DirectionSwitcher isEnabled={false} />\n\n <Card padding=\"none\">\n <TokenInput.Target\n heading={t(\n 'tokenInput.heading.target.withdraw',\n 'Receive token',\n )}\n isChanging={lastChangedInput === 'target'}\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_select_token':\n onChangeToken('target', msg.token);\n break;\n case 'on_change_amount':\n onChangeAmount('target', msg.amount);\n break;\n case 'on_click_select_token':\n updateTokenModalState('target');\n break;\n default:\n notReachable(msg);\n }\n }}\n />\n </Card>\n </div>\n\n {!!ctx.walletAddress &&\n ctx.targetToken &&\n !ctx.targetToken.isIntent && (\n <SendAddress\n onMsg={(msg) => {\n switch (msg.type) {\n case 'on_change_send_address':\n break;\n default:\n notReachable(msg.type, { throwError: false });\n }\n }}\n />\n )}\n\n {!isDirectNearTokenWithdrawal && <SwapQuote />}\n\n <SubmitButton\n providers={providers}\n makeTransfer={makeTransfer}\n label={t('submit.active.withdraw', 'Swap & withdraw')}\n onSuccess={(transfer) => {\n setTransferResult(transfer);\n onMsg?.({ type: 'on_transfer_success' });\n }}\n />\n </div>\n );\n }\n\n case 'pending':\n default:\n return <WidgetWithdrawSkeleton />;\n }\n};\n"],"names":["WidgetWithdrawContent","providers","makeTransfer","onMsg","isLoading","t","useTypedTranslation","ctx","useUnsafeSnapshot","isDirectNearTokenWithdrawal","useComputedSnapshot","customChainsFilter","alchemyApiKey","refetchQuoteInterval","intentsAccountType","onWalletSignout","useConfig","tokensStatus","refetchTokens","useTokens","tokenModalOpen","updateTokenModalState","useTokenModal","onChangeAmount","onChangeToken","lastChangedInput","useTokenInputPair","isCompatibilityCheckRequired","useIsCompatibilityCheckRequired","isCompatibilityOpen","setIsCompatibilityOpen","useState","useEffect","transferResult","setTransferResult","fireEvent","useStoreSideEffects","isDebug","chainsFilters","useMemo","onBackToSwap","WidgetWithdrawSkeleton","jsx","WalletCompatibilityCheck","msg","notReachable","SuccessScreen","BlockingError","TokensModal","jsxs","Card","TokenInput","DirectionSwitcher","SendAddress","SwapQuote","SubmitButton","transfer"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import o from "clsx";
|
|
3
3
|
import { SkeletonBox as l } from "../../components/SkeletonBox.js";
|
|
4
|
-
import { y as x } from "../../config-
|
|
4
|
+
import { y as x } from "../../config-6S9JcYY_.js";
|
|
5
5
|
const p = () => {
|
|
6
6
|
const { hideTokenInputHeadings: s } = x();
|
|
7
7
|
return /* @__PURE__ */ a("div", { className: "w-full gap-sw-xl relative flex flex-col", children: [
|
package/package.json
CHANGED
|
@@ -41,6 +41,7 @@ export const useSelectedTokensEffect = ({
|
|
|
41
41
|
const {
|
|
42
42
|
walletSupportedChains,
|
|
43
43
|
enableAccountAbstraction,
|
|
44
|
+
chainsFilter,
|
|
44
45
|
intentsAccountType,
|
|
45
46
|
} = useConfig();
|
|
46
47
|
|
|
@@ -61,7 +62,12 @@ export const useSelectedTokensEffect = ({
|
|
|
61
62
|
] as const;
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
if (
|
|
65
|
+
if (
|
|
66
|
+
(chainsFilter
|
|
67
|
+
? chainsFilter.source.intents !== 'none'
|
|
68
|
+
: enableAccountAbstraction) &&
|
|
69
|
+
!skipIntents
|
|
70
|
+
) {
|
|
65
71
|
if (!highestIntentsToken) {
|
|
66
72
|
return [
|
|
67
73
|
{ token: undefined, status: 'loading' },
|
|
@@ -87,7 +93,7 @@ export const useSelectedTokensEffect = ({
|
|
|
87
93
|
}, [
|
|
88
94
|
tokens,
|
|
89
95
|
skipIntents,
|
|
90
|
-
|
|
96
|
+
chainsFilter,
|
|
91
97
|
ctx.walletAddress,
|
|
92
98
|
highestIntentsToken,
|
|
93
99
|
walletSupportedChains,
|
package/src/types/config.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Quote, QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
|
|
2
|
-
import { Chains,
|
|
2
|
+
import { Chains, ChainsFilters } from './chain';
|
|
3
3
|
import { SimpleToken, Token } from './token';
|
|
4
4
|
import { FetchQuoteOptions } from './quote';
|
|
5
5
|
|
|
@@ -56,6 +56,7 @@ export type WidgetConfig = {
|
|
|
56
56
|
topChainShortcuts?: (
|
|
57
57
|
intentsAccountType?: IntentsAccountType,
|
|
58
58
|
) => [Chains, Chains, Chains, Chains];
|
|
59
|
+
chainsFilter?: ChainsFilters;
|
|
59
60
|
|
|
60
61
|
// API
|
|
61
62
|
fetchQuote?: (
|
package/src/types/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './transfer';
|
|
|
5
5
|
export * from './config';
|
|
6
6
|
export * from './providers';
|
|
7
7
|
export * from './theme';
|
|
8
|
+
export * from './widget';
|
|
8
9
|
|
|
9
10
|
export type { QuoteTransferArgs } from '../hooks/useMakeQuoteTransfer';
|
|
10
11
|
export type { IntentsTransferArgs } from '../hooks/useMakeIntentsTransfer';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
2
|
|
|
3
3
|
import type { CommonWidgetProps, TokenInputType } from '../types';
|
|
4
4
|
import { useTokenModal } from '../../hooks/useTokenModal';
|
|
@@ -30,7 +30,7 @@ import { useConfig } from '@/config';
|
|
|
30
30
|
|
|
31
31
|
import { isDebug, notReachable } from '@/utils';
|
|
32
32
|
|
|
33
|
-
import type { Token, TransferResult } from '@/types';
|
|
33
|
+
import type { ChainsFilters, Token, TransferResult } from '@/types';
|
|
34
34
|
|
|
35
35
|
export type Msg =
|
|
36
36
|
| { type: 'on_select_token'; token: Token; variant: TokenInputType }
|
|
@@ -50,6 +50,7 @@ export const WidgetDepositContent = ({
|
|
|
50
50
|
const { t } = useTypedTranslation();
|
|
51
51
|
const { isDirectNearTokenWithdrawal } = useComputedSnapshot();
|
|
52
52
|
const {
|
|
53
|
+
chainsFilter: customChainsFilter,
|
|
53
54
|
alchemyApiKey,
|
|
54
55
|
refetchQuoteInterval,
|
|
55
56
|
intentsAccountType,
|
|
@@ -120,6 +121,20 @@ export const WidgetDepositContent = ({
|
|
|
120
121
|
});
|
|
121
122
|
}, [ctx.isDepositFromExternalWallet]);
|
|
122
123
|
|
|
124
|
+
const chainsFilters = useMemo((): ChainsFilters => {
|
|
125
|
+
if (customChainsFilter) {
|
|
126
|
+
return customChainsFilter;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
source: {
|
|
131
|
+
intents: 'none',
|
|
132
|
+
external: ctx.isDepositFromExternalWallet ? 'all' : 'wallet-supported',
|
|
133
|
+
},
|
|
134
|
+
target: { intents: 'all', external: 'none' },
|
|
135
|
+
};
|
|
136
|
+
}, [customChainsFilter, ctx.isDepositFromExternalWallet]);
|
|
137
|
+
|
|
123
138
|
const onBackToSwap = () => {
|
|
124
139
|
fireEvent('reset', { clearWalletAddress: false, keepSelectedTokens: true });
|
|
125
140
|
};
|
|
@@ -187,13 +202,8 @@ export const WidgetDepositContent = ({
|
|
|
187
202
|
groupTokens={tokenModalOpen === 'source'}
|
|
188
203
|
chainsFilter={
|
|
189
204
|
tokenModalOpen === 'source'
|
|
190
|
-
?
|
|
191
|
-
|
|
192
|
-
external: ctx.isDepositFromExternalWallet
|
|
193
|
-
? 'all'
|
|
194
|
-
: 'wallet-supported',
|
|
195
|
-
}
|
|
196
|
-
: { intents: 'all', external: 'none' }
|
|
205
|
+
? chainsFilters.source
|
|
206
|
+
: chainsFilters.target
|
|
197
207
|
}
|
|
198
208
|
onMsg={(msg) => {
|
|
199
209
|
switch (msg.type) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
2
|
|
|
3
3
|
import type { CommonWidgetProps, TokenInputType } from '../types';
|
|
4
4
|
import { useTokenModal } from '../../hooks/useTokenModal';
|
|
@@ -30,7 +30,7 @@ import { useConfig } from '@/config';
|
|
|
30
30
|
|
|
31
31
|
import { isDebug, notReachable } from '@/utils';
|
|
32
32
|
|
|
33
|
-
import type {
|
|
33
|
+
import type { ChainsFilters, Token, TransferResult } from '@/types';
|
|
34
34
|
|
|
35
35
|
export type Msg =
|
|
36
36
|
| { type: 'on_tokens_modal_toggled'; isOpen: boolean }
|
|
@@ -39,18 +39,6 @@ export type Msg =
|
|
|
39
39
|
|
|
40
40
|
export type Props = CommonWidgetProps<Msg>;
|
|
41
41
|
|
|
42
|
-
const getSourceTokens = (
|
|
43
|
-
enableAccountAbstraction: boolean,
|
|
44
|
-
walletAddress?: string,
|
|
45
|
-
): ChainsFilter => {
|
|
46
|
-
const enabledIntentsFilter = walletAddress ? 'with-balance' : 'all';
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
intents: enableAccountAbstraction ? enabledIntentsFilter : 'none',
|
|
50
|
-
external: walletAddress ? 'wallet-supported' : 'all',
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
42
|
export const WidgetSwapContent = ({
|
|
55
43
|
providers,
|
|
56
44
|
makeTransfer,
|
|
@@ -60,6 +48,7 @@ export const WidgetSwapContent = ({
|
|
|
60
48
|
const { ctx } = useUnsafeSnapshot();
|
|
61
49
|
const { isDirectNearTokenWithdrawal } = useComputedSnapshot();
|
|
62
50
|
const {
|
|
51
|
+
chainsFilter: customChainsFilter,
|
|
63
52
|
enableAccountAbstraction,
|
|
64
53
|
alchemyApiKey,
|
|
65
54
|
refetchQuoteInterval,
|
|
@@ -114,6 +103,25 @@ export const WidgetSwapContent = ({
|
|
|
114
103
|
],
|
|
115
104
|
});
|
|
116
105
|
|
|
106
|
+
const chainsFilters = useMemo((): ChainsFilters => {
|
|
107
|
+
if (customChainsFilter) {
|
|
108
|
+
return customChainsFilter;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const enabledIntentsFilter = ctx.walletAddress ? 'with-balance' : 'all';
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
source: {
|
|
115
|
+
intents: enableAccountAbstraction ? enabledIntentsFilter : 'none',
|
|
116
|
+
external: ctx.walletAddress ? 'wallet-supported' : 'all',
|
|
117
|
+
},
|
|
118
|
+
target: {
|
|
119
|
+
intents: enableAccountAbstraction ? 'all' : 'none',
|
|
120
|
+
external: 'all',
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}, [customChainsFilter, enableAccountAbstraction, ctx.walletAddress]);
|
|
124
|
+
|
|
117
125
|
if (!!isLoading || (tokensStatus !== 'error' && !ctx.sourceToken)) {
|
|
118
126
|
return <WidgetSwapSkeleton />;
|
|
119
127
|
}
|
|
@@ -178,11 +186,8 @@ export const WidgetSwapContent = ({
|
|
|
178
186
|
groupTokens={tokenModalOpen === 'source'}
|
|
179
187
|
chainsFilter={
|
|
180
188
|
tokenModalOpen === 'source'
|
|
181
|
-
?
|
|
182
|
-
:
|
|
183
|
-
intents: enableAccountAbstraction ? 'with-balance' : 'all',
|
|
184
|
-
external: 'all',
|
|
185
|
-
}
|
|
189
|
+
? chainsFilters.source
|
|
190
|
+
: chainsFilters.target
|
|
186
191
|
}
|
|
187
192
|
onMsg={(msg) => {
|
|
188
193
|
switch (msg.type) {
|