"use client"; import BeatSaverMap from "@/common/database/types/beatsaver-map"; import ScoreSaberPlayerScoreToken from "@/common/model/token/scoresaber/score-saber-player-score-token"; import { beatsaverService } from "@/common/service/impl/beatsaver"; import LeaderboardScores from "@/components/leaderboard/leaderboard-scores"; import { useCallback, useEffect, useState } from "react"; import ScoreButtons from "./score-buttons"; import ScoreSongInfo from "./score-info"; import ScoreRankInfo from "./score-rank-info"; import ScoreStats from "./score-stats"; type Props = { /** * The score to display. */ playerScore: ScoreSaberPlayerScoreToken; }; export default function Score({ playerScore }: Props) { const { score, leaderboard } = playerScore; const [beatSaverMap, setBeatSaverMap] = useState(); const [isLeaderboardExpanded, setIsLeaderboardExpanded] = useState(false); const fetchBeatSaverData = useCallback(async () => { const beatSaverMap = await beatsaverService.lookupMap(leaderboard.songHash); setBeatSaverMap(beatSaverMap); }, [leaderboard.songHash]); useEffect(() => { fetchBeatSaverData(); }, [fetchBeatSaverData]); return (
{isLeaderboardExpanded && }
); }