Skip to content

Commit 593ddc8

Browse files
committed
requested changes
1 parent 70338a1 commit 593ddc8

File tree

1 file changed

+48
-38
lines changed

1 file changed

+48
-38
lines changed

components/LazerPriceIdTable.tsx

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,19 @@ const useLazerPriceIdState = () => {
5757
return state;
5858
};
5959

60-
export function LazerPriceIdTable() {
61-
const lazerPriceIdState = useLazerPriceIdState();
60+
const LoadedLazerPriceIdTable = ({
61+
priceFeeds,
62+
}: {
63+
priceFeeds: LazerPriceIdMetadata[];
64+
}) => {
6265
const [search, setSearch] = useState("");
6366

6467
const updateSearch = useCallback((event: ChangeEvent<HTMLInputElement>) => {
6568
setSearch(event.target.value);
6669
}, []);
6770

6871
const filteredFeeds = useMemo(() => {
69-
if (lazerPriceIdState.type !== LazerPriceIdStateType.Loaded) return [];
70-
return lazerPriceIdState.priceFeeds.filter((feed) => {
72+
return priceFeeds.filter((feed) => {
7173
const searchLower = search.toLowerCase();
7274
return (
7375
feed.symbol.toLowerCase().includes(searchLower) ||
@@ -76,7 +78,47 @@ export function LazerPriceIdTable() {
7678
feed.pyth_lazer_id.toString().includes(searchLower)
7779
);
7880
});
79-
}, [lazerPriceIdState, search]);
81+
}, [priceFeeds, search]);
82+
83+
return (
84+
<div>
85+
<input
86+
type="text"
87+
placeholder="Search by symbol, name, description, or pyth lazer id..."
88+
value={search}
89+
onChange={updateSearch}
90+
className="w-full p-2 mb-4 border border-gray-300 rounded-md"
91+
/>
92+
<table>
93+
<thead>
94+
<tr>
95+
<th>Asset Type</th>
96+
<th>Description</th>
97+
<th>Name</th>
98+
<th>Symbol</th>
99+
<th>Pyth Lazer Id</th>
100+
<th>Exponent</th>
101+
</tr>
102+
</thead>
103+
<tbody>
104+
{filteredFeeds.map((priceFeed) => (
105+
<tr key={priceFeed.symbol}>
106+
<StyledTd>{priceFeed.asset_type}</StyledTd>
107+
<StyledTd>{priceFeed.description}</StyledTd>
108+
<StyledTd>{priceFeed.name}</StyledTd>
109+
<StyledTd>{priceFeed.symbol}</StyledTd>
110+
<StyledTd>{priceFeed.pyth_lazer_id}</StyledTd>
111+
<StyledTd>{priceFeed.exponent}</StyledTd>
112+
</tr>
113+
))}
114+
</tbody>
115+
</table>
116+
</div>
117+
);
118+
};
119+
120+
export function LazerPriceIdTable() {
121+
const lazerPriceIdState = useLazerPriceIdState();
80122

81123
switch (lazerPriceIdState.type) {
82124
case LazerPriceIdStateType.NotLoaded:
@@ -85,39 +127,7 @@ export function LazerPriceIdTable() {
85127
return <Spinner />;
86128
case LazerPriceIdStateType.Loaded:
87129
return (
88-
<div>
89-
<input
90-
type="text"
91-
placeholder="Search by symbol, name, description, or pyth lazer id..."
92-
value={search}
93-
onChange={updateSearch}
94-
className="w-full p-2 mb-4 border border-gray-300 rounded-md"
95-
/>
96-
<table>
97-
<thead>
98-
<tr>
99-
<th>Asset Type</th>
100-
<th>Description</th>
101-
<th>Name</th>
102-
<th>Symbol</th>
103-
<th>Pyth Lazer Id</th>
104-
<th>Exponent</th>
105-
</tr>
106-
</thead>
107-
<tbody>
108-
{filteredFeeds.map((priceFeed) => (
109-
<tr key={priceFeed.symbol}>
110-
<StyledTd>{priceFeed.asset_type}</StyledTd>
111-
<StyledTd>{priceFeed.description}</StyledTd>
112-
<StyledTd>{priceFeed.name}</StyledTd>
113-
<StyledTd>{priceFeed.symbol}</StyledTd>
114-
<StyledTd>{priceFeed.pyth_lazer_id}</StyledTd>
115-
<StyledTd>{priceFeed.exponent}</StyledTd>
116-
</tr>
117-
))}
118-
</tbody>
119-
</table>
120-
</div>
130+
<LoadedLazerPriceIdTable priceFeeds={lazerPriceIdState.priceFeeds} />
121131
);
122132
case LazerPriceIdStateType.Error:
123133
return <div>Error</div>;

0 commit comments

Comments
 (0)