diff --git a/src/pages/music/components/TrendsTab.jsx b/src/pages/music/components/TrendsTab.jsx index f241de8..726b637 100644 --- a/src/pages/music/components/TrendsTab.jsx +++ b/src/pages/music/components/TrendsTab.jsx @@ -10,6 +10,7 @@ const FLAG = { BR: '๐ง๐ท', US: '๐บ๐ธ', ID: '๐ฎ๐ฉ', MX: '๐ฒ๐ฝ', K function fmtDateTime(iso) { if (!iso) return null; const d = new Date(iso); + if (isNaN(d.getTime())) return iso.slice(0, 10); const today = new Date().toDateString(); if (d.toDateString() === today) { return `์ค๋ ${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`; @@ -24,16 +25,25 @@ export default function TrendsTab() { const [selectedReport, setSelectedReport] = useState(null); const [researching, setResearching] = useState(false); const [copiedIdx, setCopiedIdx] = useState(null); + const [loading, setLoading] = useState(true); + const [researchMsg, setResearchMsg] = useState(''); const loadAll = async () => { - const [latest, rpts, sugg] = await Promise.all([ - getLatestTrendReport().catch(() => null), - getTrendReports().catch(() => []), - getMarketSuggestions().catch(() => []), - ]); - setLatestReport(latest); - setReports(Array.isArray(rpts) ? rpts : rpts.reports ?? []); - setSuggestions(Array.isArray(sugg) ? sugg : sugg.suggestions ?? []); + setLoading(true); + try { + const [latest, rpts, sugg] = await Promise.all([ + getLatestTrendReport().catch(() => null), + getTrendReports().catch(() => []), + getMarketSuggestions().catch(() => []), + ]); + setLatestReport(latest); + setReports(Array.isArray(rpts) ? rpts : rpts.reports ?? []); + setSuggestions(Array.isArray(sugg) ? sugg : sugg.suggestions ?? []); + } catch (e) { + console.error('loadAll:', e); + } finally { + setLoading(false); + } }; useEffect(() => { loadAll(); }, []); @@ -42,6 +52,8 @@ export default function TrendsTab() { setResearching(true); try { await triggerYoutubeResearch(); + setResearchMsg('์์ง์ด ์์๋์์ต๋๋ค. ์ ์ ํ ์๋ก๊ณ ์นจํ์ธ์.'); + setTimeout(() => setResearchMsg(''), 4000); } catch (e) { console.error('triggerYoutubeResearch:', e); } finally { @@ -66,6 +78,8 @@ export default function TrendsTab() { ? (selectedReport.recommended_styles ?? []) : suggestions; + if (loading) return
๋ฐ์ดํฐ ๋ก๋ฉ ์ค...
{researchMsg}
}