Compare commits
2 Commits
b5cfbf384a
...
b8553c3138
Author | SHA1 | Date | |
---|---|---|---|
b8553c3138 | |||
f83492ffdc |
@ -4,9 +4,6 @@ import { PlayerHistory } from "../player-history";
|
|||||||
import ScoreSaberPlayerToken from "../../token/scoresaber/score-saber-player-token";
|
import ScoreSaberPlayerToken from "../../token/scoresaber/score-saber-player-token";
|
||||||
import { formatDateMinimal, getDaysAgoDate, getMidnightAlignedDate } from "../../../utils/time-utils";
|
import { formatDateMinimal, getDaysAgoDate, getMidnightAlignedDate } from "../../../utils/time-utils";
|
||||||
import { getPageFromRank } from "../../../utils/utils";
|
import { getPageFromRank } from "../../../utils/utils";
|
||||||
import { db } from "website/src/common/database/database";
|
|
||||||
import { isServer } from "@tanstack/react-query";
|
|
||||||
import { getCookieValue } from "../../../utils/cookie-utils";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ScoreSaber player.
|
* A ScoreSaber player.
|
||||||
@ -79,10 +76,12 @@ export default interface ScoreSaberPlayer extends Player {
|
|||||||
*
|
*
|
||||||
* @param token the player token
|
* @param token the player token
|
||||||
* @param apiUrl the api url for SSR
|
* @param apiUrl the api url for SSR
|
||||||
|
* @param playerIdCookie the id of the claimed player
|
||||||
*/
|
*/
|
||||||
export async function getScoreSaberPlayerFromToken(
|
export async function getScoreSaberPlayerFromToken(
|
||||||
token: ScoreSaberPlayerToken,
|
token: ScoreSaberPlayerToken,
|
||||||
apiUrl: string
|
apiUrl: string,
|
||||||
|
playerIdCookie?: string
|
||||||
): Promise<ScoreSaberPlayer> {
|
): Promise<ScoreSaberPlayer> {
|
||||||
const bio: ScoreSaberBio = {
|
const bio: ScoreSaberBio = {
|
||||||
lines: token.bio?.split("\n") || [],
|
lines: token.bio?.split("\n") || [],
|
||||||
@ -101,13 +100,12 @@ export async function getScoreSaberPlayerFromToken(
|
|||||||
const todayDate = formatDateMinimal(getMidnightAlignedDate(new Date()));
|
const todayDate = formatDateMinimal(getMidnightAlignedDate(new Date()));
|
||||||
let statisticHistory: { [key: string]: PlayerHistory } = {};
|
let statisticHistory: { [key: string]: PlayerHistory } = {};
|
||||||
|
|
||||||
const playerIdCookie = isServer ? await getCookieValue("playerId") : (await db.getSettings())?.playerId;
|
|
||||||
try {
|
try {
|
||||||
const { statistics: history } = await ky
|
const { statistics: history } = await ky
|
||||||
.get<{
|
.get<{
|
||||||
statistics: { [key: string]: PlayerHistory };
|
statistics: { [key: string]: PlayerHistory };
|
||||||
}>(
|
}>(
|
||||||
`${apiUrl}/player/history/${token.id}${playerIdCookie && playerIdCookie === token.id ? "?createIfMissing=true" : ""}`
|
`${apiUrl}/player/history/${token.id}${playerIdCookie && playerIdCookie == token.id ? "?createIfMissing=true" : ""}`
|
||||||
)
|
)
|
||||||
.json();
|
.json();
|
||||||
if (history) {
|
if (history) {
|
||||||
|
@ -55,7 +55,8 @@ const getPlayerData = async ({ params }: Props, fetchScores: boolean = true): Pr
|
|||||||
}
|
}
|
||||||
|
|
||||||
const playerToken = await scoresaberService.lookupPlayer(id);
|
const playerToken = await scoresaberService.lookupPlayer(id);
|
||||||
const player = playerToken && (await getScoreSaberPlayerFromToken(playerToken, config.siteApi));
|
const player =
|
||||||
|
playerToken && (await getScoreSaberPlayerFromToken(playerToken, config.siteApi, await getCookieValue("playerId")));
|
||||||
let scores: ScoreSaberPlayerScoresPageToken | undefined;
|
let scores: ScoreSaberPlayerScoresPageToken | undefined;
|
||||||
if (fetchScores) {
|
if (fetchScores) {
|
||||||
scores = await scoresaberService.lookupPlayerScores({
|
scores = await scoresaberService.lookupPlayerScores({
|
||||||
|
@ -49,7 +49,7 @@ export default function PlayerData({
|
|||||||
if (playerResponse == undefined) {
|
if (playerResponse == undefined) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return await getScoreSaberPlayerFromToken(playerResponse, config.siteApi);
|
return await getScoreSaberPlayerFromToken(playerResponse, config.siteApi, settings?.playerId);
|
||||||
},
|
},
|
||||||
refetchInterval: REFRESH_INTERVAL,
|
refetchInterval: REFRESH_INTERVAL,
|
||||||
refetchIntervalInBackground: false,
|
refetchIntervalInBackground: false,
|
||||||
@ -63,12 +63,10 @@ export default function PlayerData({
|
|||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<article className="flex flex-col gap-2">
|
<article className="flex flex-col gap-2">
|
||||||
<PlayerHeader player={player} />
|
<PlayerHeader player={player} />
|
||||||
{!player.inactive && (
|
<Card className="gap-1">
|
||||||
<Card className="gap-1">
|
<PlayerBadges player={player} />
|
||||||
<PlayerBadges player={player} />
|
{!player.inactive && <PlayerCharts player={player} />}
|
||||||
<PlayerCharts player={player} />
|
</Card>
|
||||||
</Card>
|
|
||||||
)}
|
|
||||||
<PlayerScores
|
<PlayerScores
|
||||||
initialScoreData={initialScoreData}
|
initialScoreData={initialScoreData}
|
||||||
initialSearch={initialSearch}
|
initialSearch={initialSearch}
|
||||||
|
Reference in New Issue
Block a user