Skip to content

Commit ee2eac0

Browse files
committed
[MNY-213] SDK/SwapWidget: token search improvements
1 parent 54392ab commit ee2eac0

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

.changeset/beige-sites-jog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
Token Search improvements in SwapWidget

packages/thirdweb/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Spacer } from "../../components/Spacer.js";
2020
import { Spinner } from "../../components/Spinner.js";
2121
import { Text } from "../../components/text.js";
2222
import { StyledDiv } from "../../design-system/elements.js";
23+
import { useDebouncedValue } from "../../hooks/useDebouncedValue.js";
2324
import { useIsMobile } from "../../hooks/useisMobile.js";
2425
import { SearchInput } from "./SearchInput.js";
2526
import { SelectChainButton } from "./SelectChainButton.js";
@@ -57,6 +58,7 @@ function getDefaultSelectedChain(
5758
export function SelectToken(props: SelectTokenUIProps) {
5859
const chainQuery = useBridgeChains(props.client);
5960
const [search, setSearch] = useState("");
61+
const debouncedSearch = useDebouncedValue(search, 500);
6062
const [limit, setLimit] = useState(1000);
6163

6264
const [_selectedChain, setSelectedChain] = useState<BridgeChain | undefined>(
@@ -76,7 +78,7 @@ export function SelectToken(props: SelectTokenUIProps) {
7678
const tokensQuery = useTokens({
7779
client: props.client,
7880
chainId: selectedChain?.chainId,
79-
search,
81+
search: debouncedSearch,
8082
limit,
8183
offset: 0,
8284
});
@@ -93,12 +95,14 @@ export function SelectToken(props: SelectTokenUIProps) {
9395
const filteredOwnedTokens = useMemo(() => {
9496
return ownedTokensQuery.data?.tokens?.filter((token) => {
9597
return (
96-
token.symbol.toLowerCase().includes(search.toLowerCase()) ||
97-
token.name.toLowerCase().includes(search.toLowerCase()) ||
98-
token.token_address.toLowerCase().includes(search.toLowerCase())
98+
token.symbol.toLowerCase().includes(debouncedSearch.toLowerCase()) ||
99+
token.name.toLowerCase().includes(debouncedSearch.toLowerCase()) ||
100+
token.token_address
101+
.toLowerCase()
102+
.includes(debouncedSearch.toLowerCase())
99103
);
100104
});
101-
}, [ownedTokensQuery.data?.tokens, search]);
105+
}, [ownedTokensQuery.data?.tokens, debouncedSearch]);
102106

103107
const isFetching = tokensQuery.isFetching || ownedTokensQuery.isFetching;
104108

packages/thirdweb/src/react/web/ui/Bridge/swap-widget/use-tokens.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ export function useTokens(options: {
3131
offset: options.offset,
3232
limit: options.limit,
3333
includePrices: false,
34-
name: !options.search || isSearchAddress ? undefined : options.search,
35-
tokenAddress: isSearchAddress ? options.search : undefined,
34+
query: options.search && !isSearchAddress ? options.search : undefined,
35+
tokenAddress:
36+
options.search && isSearchAddress ? options.search : undefined,
3637
});
3738
},
3839
});

0 commit comments

Comments
 (0)