diff --git a/src/app/player/[id]/page.tsx b/src/app/player/[id]/page.tsx index 38366ae..b3d5cfb 100644 --- a/src/app/player/[id]/page.tsx +++ b/src/app/player/[id]/page.tsx @@ -10,7 +10,7 @@ import { ScoresaberPlayer } from "@/schemas/scoresaber/player"; import { ScoresaberPlayerScore } from "@/schemas/scoresaber/playerScore"; import { formatNumber } from "@/utils/number"; import { fetchScores, getPlayerInfo } from "@/utils/scoresaber/api"; -import { GlobeAsiaAustraliaIcon } from "@heroicons/react/20/solid"; +import { GlobeAsiaAustraliaIcon, HomeIcon } from "@heroicons/react/20/solid"; import moment from "moment"; import Image from "next/image"; import { useCallback, useEffect, useState } from "react"; @@ -53,7 +53,7 @@ export default function Player({ params }: { params: { id: string } }) { (scoresResponse) => { if (!scoresResponse) { setError(true); - setErrorMessage("Failed to fetch scores"); + setErrorMessage("No Scores"); setScores({ ...scores, loading: false }); return; } @@ -70,6 +70,15 @@ export default function Player({ params }: { params: { id: string } }) { [params.id, scores], ); + function claimProfile() { + // set cookie to claim profile + document.cookie = `profile=${params.id};path=/`; + } + + function isClaimedProfile() { + return document.cookie.includes(`profile=${params.id}`); + } + useEffect(() => { if (!params.id) { setError(true); @@ -129,7 +138,20 @@ export default function Player({ params }: { params: { id: string } }) { {/* Player Info */}
- +
+
+ + {!isClaimedProfile() && ( + + )} +
+

{playerData.name}

@@ -193,7 +215,7 @@ export default function Player({ params }: { params: { id: string } }) { ) : (
{!scores.loading && scores.scores.length == 0 ? ( -

No Scores

+

{errorMessage}

) : ( scores.scores.map((scoreData, id) => { const { score, leaderboard } = scoreData; diff --git a/src/middleware.ts b/src/middleware.ts index 859b6a0..f688d84 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -2,9 +2,18 @@ import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; export function middleware(request: NextRequest) { - // todo: make this redirect to the users profile if they have a profile selected + console.log(request.cookies); + const profileCookie = request.cookies.get("profile"); + if (request.nextUrl.pathname == "/") { - return NextResponse.redirect(new URL("/search", request.url)); + // Has a claimed profile cookie + if (profileCookie) { + const id = profileCookie.value; + return NextResponse.redirect(new URL(`/profile/${id}`, request.url)); + } else { + // User has not claimed a profile + return NextResponse.redirect(new URL("/search", request.url)); + } } }