-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathSelectAssetContent.tsx
More file actions
72 lines (64 loc) · 2.02 KB
/
SelectAssetContent.tsx
File metadata and controls
72 lines (64 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { Dispatch, SetStateAction, useMemo } from 'react';
import { assetLists } from 'chain-registry';
import { LuPlus } from 'react-icons/lu';
import {
defaultSelectedAsset,
SelectedAssetWithAmount,
} from './AttachFundsRadio';
import { Button } from '@/components';
import { SelectAssetItem } from './SelectAssetItem';
import { useChainStore } from '@/contexts';
type SelectAssetContentProps = {
selectedAssetsWithAmount: SelectedAssetWithAmount[];
setSelectedAssetsWithAmount: Dispatch<
SetStateAction<SelectedAssetWithAmount[]>
>;
};
export const SelectAssetContent = ({
selectedAssetsWithAmount,
setSelectedAssetsWithAmount,
}: SelectAssetContentProps) => {
const { selectedChain } = useChainStore();
const nativeAssets = useMemo(() => {
return (
assetLists
.find(({ chainName }) => chainName === selectedChain)
?.assets.filter(
({ typeAsset, base }) =>
typeAsset !== 'cw20' &&
typeAsset !== 'ics20' &&
!base.startsWith('factory/')
) || []
);
}, [selectedChain]);
const selectedSymbols = selectedAssetsWithAmount
.map(({ asset }) => asset?.symbol)
.filter(Boolean) as string[];
const handleAddAssets = () => {
setSelectedAssetsWithAmount((prev) => [...prev, defaultSelectedAsset]);
};
return (
<>
{selectedAssetsWithAmount.map((assetWithAmount, index) => (
<SelectAssetItem
key={assetWithAmount.asset?.symbol || index}
itemIndex={index}
allAssets={nativeAssets}
selectedSymbols={selectedSymbols}
disableTrashButton={selectedAssetsWithAmount.length === 1}
selectedAssetWithAmount={assetWithAmount}
setSelectedAssetsWithAmount={setSelectedAssetsWithAmount}
/>
))}
<Button
leftIcon={<LuPlus size="20px" />}
width="$fit"
px="10px"
onClick={handleAddAssets}
disabled={selectedAssetsWithAmount.length === nativeAssets.length}
>
New Asset
</Button>
</>
);
};