diff --git a/src/hooks/queries/useMarketMetricsQuery.ts b/src/hooks/queries/useMarketMetricsQuery.ts index 93a7e20e..47fd324f 100644 --- a/src/hooks/queries/useMarketMetricsQuery.ts +++ b/src/hooks/queries/useMarketMetricsQuery.ts @@ -1,8 +1,6 @@ import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useMarketPreferences, type TrendingConfig, type FlowTimeWindow } from '@/stores/useMarketPreferences'; -import { useLiquidationsQuery } from '@/hooks/queries/useLiquidationsQuery'; -import { useMonarchLiquidatedKeys } from '@/hooks/queries/useMonarchLiquidationsQuery'; // Re-export types for convenience export type { FlowTimeWindow } from '@/stores/useMarketPreferences'; @@ -178,6 +176,7 @@ export const useMarketMetricsMap = (params: MarketMetricsParams = {}) => { map.set(key, market); } console.log('[Metrics] Loaded', map.size, 'of', data.total, 'markets'); + return map; }, [data?.markets, data?.total]); @@ -267,8 +266,6 @@ export const useTrendingMarketKeys = () => { }, [metricsMap, trendingConfig]); }; -const LIQUIDATIONS_STALE_THRESHOLD_MS = (2 * 60 + 5) * 60 * 1000; - /** * Returns whether a market has ever been liquidated. * Primary: Uses Monarch API /v1/liquidations endpoint @@ -278,17 +275,12 @@ const LIQUIDATIONS_STALE_THRESHOLD_MS = (2 * 60 + 5) * 60 * 1000; * once Monarch API stability is confirmed. */ export const useEverLiquidated = (chainId: number, uniqueKey: string): boolean => { - const { liquidatedKeys, lastUpdatedAt, isLoading } = useMonarchLiquidatedKeys(); - const isStale = lastUpdatedAt * 1000 < Date.now() - LIQUIDATIONS_STALE_THRESHOLD_MS; - const needsFallback = !isLoading && (isStale || liquidatedKeys.size === 0); - - const { data: fallbackKeys } = useLiquidationsQuery({ enabled: needsFallback }); - + const { metricsMap } = useMarketMetricsMap(); + + return useMemo(() => { const key = `${chainId}-${uniqueKey.toLowerCase()}`; - if (!needsFallback) { - return liquidatedKeys.has(key); - } - return fallbackKeys?.has(uniqueKey.toLowerCase()) ?? false; - }, [liquidatedKeys, needsFallback, chainId, uniqueKey, fallbackKeys]); + const metrics = metricsMap.get(key); + return metrics?.everLiquidated ?? false; + }, [metricsMap, chainId, uniqueKey]); }; diff --git a/src/hooks/queries/useMonarchLiquidationsQuery.ts b/src/hooks/queries/useMonarchLiquidationsQuery.ts index 0bdd9850..27091439 100644 --- a/src/hooks/queries/useMonarchLiquidationsQuery.ts +++ b/src/hooks/queries/useMonarchLiquidationsQuery.ts @@ -1,4 +1,4 @@ -import { useMemo } from 'react'; + import { useQuery } from '@tanstack/react-query'; /** @@ -27,26 +27,3 @@ export const useMonarchLiquidationsQuery = () => { refetchOnWindowFocus: false, }); }; - -/** - * Returns a Set of liquidated market keys for O(1) lookup. - * Key format: `${chainId}-${marketUniqueKey.toLowerCase()}` - * - * Also returns `lastUpdatedAt` to determine if data is stale. - */ -export const useMonarchLiquidatedKeys = () => { - const { data, ...rest } = useMonarchLiquidationsQuery(); - - const liquidatedKeys = useMemo(() => { - const keys = new Set(); - if (!data?.markets) return keys; - for (const m of data.markets) { - keys.add(`${m.chainId}-${m.marketUniqueKey.toLowerCase()}`); - } - return keys; - }, [data?.markets]); - - const lastUpdatedAt = data?.lastUpdatedAt ?? 0; - - return { liquidatedKeys, lastUpdatedAt, ...rest }; -}; diff --git a/src/hooks/useMarketCampaigns.ts b/src/hooks/useMarketCampaigns.ts index 616e96f6..8869629a 100644 --- a/src/hooks/useMarketCampaigns.ts +++ b/src/hooks/useMarketCampaigns.ts @@ -62,7 +62,7 @@ export function useMarketCampaigns(options: MarketCampaignsOptions): UseMarketCa return true; }); - console.log(`[useMarketCampaigns] Active Campaigns for market ${normalizedMarketId.slice(0, 6)}`, allMarketCampaigns); + console.debug(`[useMarketCampaigns] Active Campaigns for market ${normalizedMarketId.slice(0, 6)}`, allMarketCampaigns); const activeCampaigns = allMarketCampaigns.filter((campaign) => campaign.isActive);