"use client"; import { useEffect, useState } from "react"; interface Match { matchId: string; championImg: string; win: boolean; kills: number; deaths: number; assists: number; isOld?: boolean; } interface SummonerData { tier: string; division?: string; lp: number; wins: number; losses: number; winrate: number; matches: Match[]; } export default function Ranked ( { name, tag }: { name: string; tag: string } ) { const [ data, setData ] = useState( null ); useEffect( () => { const fetchData = async () => { try { const res = await fetch( `/api/ranked/${ name }/${ tag }` ); if ( !res.ok ) throw new Error( "API error" ); const json = await res.json(); setData( json ); } catch ( err ) { console.error( "Failed to fetch ranked data:", err ); } }; fetchData(); const interval = setInterval( fetchData, 2 * 60 * 1000 ); return () => clearInterval( interval ); }, [ name, tag ] ); if ( !data ) return null; return (
{ [ "MASTER", "GRANDMASTER", "CHALLENGER" ].includes( data.tier ) ? (
{ data.tier } { data.lp } LP
) : (
{ data.tier } { data.division } { data.lp } LP
) }
{ data.wins }W
{ data.losses }L
{ data.winrate }%
{ data.matches.map( ( match, index ) => (
{ match.kills }/{ match.deaths }/{ match.assists }
) ) }
); }