429 에러 수정

This commit is contained in:
Macbook
2026-05-31 23:31:39 +09:00
parent c1c819ef29
commit 2f5316d172
5 changed files with 185 additions and 61 deletions
@@ -8,6 +8,7 @@ import {
import { API_BASE } from '../utils/backendApi';
import { UPBIT_API } from '../utils/upbitApi';
import { fetchTickersThrottled } from '../utils/upbitTickerFetch';
import { useIsCompactDevice } from '../hooks/useMediaQuery';
import { safeToFixed } from '../utils/safeFormat';
// ─── Types ───────────────────────────────────────────────────────────────────
@@ -25,7 +26,8 @@ interface TickerInfo {
}
// ─── Constants ───────────────────────────────────────────────────────────────
const TICKER_TTL = 3000; // 3초마다 시세 갱신
const TICKER_TTL_DESKTOP = 5000;
const TICKER_TTL_COMPACT = 25_000;
function formatVol(vol: number | string | null | undefined): string {
const v = Number(vol);
@@ -77,6 +79,8 @@ export const MarketSearchPanel: React.FC<MarketSearchPanelProps> = ({
actionMode = 'favorite', onAdd, addedMarkets, maxTargetsReached = false,
}) => {
const embedded = variant === 'embedded';
const isCompact = useIsCompactDevice();
const tickerTtl = isCompact ? TICKER_TTL_COMPACT : TICKER_TTL_DESKTOP;
const [markets, setMarkets] = useState<MarketInfo[]>([]);
const [tickers, setTickers] = useState<Record<string, TickerInfo>>({});
const [internalQuery, setInternalQuery] = useState(initialQuery);
@@ -164,9 +168,9 @@ export const MarketSearchPanel: React.FC<MarketSearchPanelProps> = ({
useEffect(() => {
if (markets.length === 0) return;
fetchTickers();
tickerTimer.current = setInterval(fetchTickers, TICKER_TTL);
tickerTimer.current = setInterval(fetchTickers, tickerTtl);
return () => { if (tickerTimer.current) clearInterval(tickerTimer.current); };
}, [markets, fetchTickers]);
}, [markets, fetchTickers, tickerTtl]);
// ── 3. 즐겨찾기 토글 ─────────────────────────────────────────────────────
const toggleFav = useCallback(async (market: string, e: React.MouseEvent) => {