"use client"; import { ScoresaberPlayer } from "@/schemas/scoresaber/player"; import { ScoresaberPlayerScore } from "@/schemas/scoresaber/playerScore"; import { useSettingsStore } from "@/store/settingsStore"; import { SortType, SortTypes } from "@/types/SortTypes"; import useStore from "@/utils/useStore"; import { useRouter } from "next/navigation"; import Card from "../Card"; import Pagination from "../Pagination"; import Score from "./Score"; type ScoresProps = { playerData: ScoresaberPlayer; page: number; totalPages: number; sortType: SortType; scores: ScoresaberPlayerScore[]; }; export default function Scores({ playerData, page, totalPages, sortType, scores, }: ScoresProps) { const settingsStore = useStore(useSettingsStore, (store) => store); const playerId = playerData.id; const router = useRouter(); const lastUsedSortType = settingsStore?.lastUsedSortType; if (lastUsedSortType && lastUsedSortType != sortType) { router.push( `/player/${playerId}/scoresaber/${lastUsedSortType.value}/${page}`, { scroll: false, }, ); } function setPage(page: number, sortTypee?: SortType) { if (sortTypee) { if (sortTypee.value !== sortType.value) { settingsStore?.setLastUsedSortType(sortTypee); } } router.push( `/player/${playerId}/scoresaber/${ sortTypee ? sortTypee.value : sortType.value }/${page}`, { scroll: false, }, ); } return ( {/* Sort */}
{Object.values(SortTypes).map((sortTypee) => { return ( ); })}
{scores.map((scoreData, id) => { const { score, leaderboard } = scoreData; return ( ); })}
{/* Pagination */}
{ setPage(page); }} />
); }