Skip to content

Commit 2b64b3e

Browse files
authored
Merge pull request #1607 from mars-protocol/fix-remove-stale-perps
2 parents 51ca720 + 2ce87c3 commit 2b64b3e

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

src/hooks/perps/usePerpsMarketStates.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,43 @@ export default function usePerpsMarketStates() {
1010
const clients = useClients()
1111
const perpsParams = useAllPerpsParams()
1212

13+
const swrKey = clients && perpsParams && `chains/${chainConfig.id}/perps/market-states`
14+
1315
return useSWR(
14-
clients && perpsParams && `chains/${chainConfig.id}/perps/market-states`,
15-
() => iteratePaginationQuery<MarketResponse>(clients!.perps.markets),
16+
swrKey,
17+
async () => {
18+
try {
19+
const result = await iteratePaginationQuery<MarketResponse>(clients!.perps.markets)
20+
return result
21+
} catch (error) {
22+
console.error('Market states fetch failed:', error)
23+
24+
if (
25+
error instanceof Error &&
26+
(error.message.includes('Slinky Market') ||
27+
error.message.includes('price is older than') ||
28+
error.message.includes('Invalid price'))
29+
) {
30+
const problematicDenoms = ['perps/ufxs', 'perps/uom', 'perps/unil']
31+
const enabledDenoms =
32+
perpsParams
33+
?.map((param) => param.denom)
34+
.filter((denom) => !problematicDenoms.includes(denom)) || []
35+
const individualResults: MarketResponse[] = []
36+
for (const denom of enabledDenoms) {
37+
try {
38+
const marketState = await clients.perps.market({ denom })
39+
individualResults.push(marketState)
40+
} catch (individualError) {
41+
console.warn(`Failed to fetch market state for ${denom}:`, individualError)
42+
}
43+
}
44+
return individualResults
45+
}
46+
47+
throw error
48+
}
49+
},
1650
{
1751
revalidateOnFocus: true,
1852
refreshInterval: 10_000,

0 commit comments

Comments
 (0)