fix(backend, frontend): fix date in profiles, fix steam api error

This commit is contained in:
Aleksander Wilczyński 2024-12-13 19:57:52 +01:00
parent 6a951a5da6
commit eb1a89b69d
Signed by untrusted user: alekswilc
GPG Key ID: D4464A248E5F27FE
5 changed files with 11 additions and 15 deletions

View File

@ -58,8 +58,7 @@ export class ProfilesRoute
new SuccessResponseBuilder()
.setCode(200)
.setData({
player,
createdAt: player._id.getTimestamp().getTime()
player
})
.toJSON(),
);

View File

@ -131,6 +131,6 @@ export interface IProfile
steamTrainDistance: number;
steamTrainScore: number;
createdAt: number
flags: string[]
}

View File

@ -20,7 +20,7 @@ import { assert } from "node:console";
const STEAM_API_KEY = process.env.STEAM_APIKEY;
const steamFetch = (url: string, maxRetries: number = 5) =>
const steamFetch = (url: string) =>
{
let retries = 0;
@ -28,10 +28,7 @@ const steamFetch = (url: string, maxRetries: number = 5) =>
{
const req = () =>
{
if (retries > maxRetries)
{
throw new Error("request failed to api steam");
}
fetch(url, { signal: AbortSignal.timeout(10000) }).then(x => x.json())
.then(x => res(x))
.catch(() =>
@ -39,7 +36,7 @@ const steamFetch = (url: string, maxRetries: number = 5) =>
console.log("STEAM request failed! ", url.replace(STEAM_API_KEY!, "[XXX]"), retries);
retries++;
setTimeout(() => req(), 1000);
setTimeout(() => req(), retries * 1000);
});
};
req();
@ -57,7 +54,7 @@ export class PlayerUtil
if (!player)
{
const data = await steamFetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${ STEAM_API_KEY }&format=json&steamids=${ steamId }`, 20) as IPlayerPayload;
const data = await steamFetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${ STEAM_API_KEY }&format=json&steamids=${ steamId }`) as IPlayerPayload;
assert(data.response.players, "Expected data.response.players to be truthy");
@ -69,7 +66,6 @@ export class PlayerUtil
return player;
}
const trainStats: {
[ trainName: string ]: {
score: number,
@ -81,7 +77,6 @@ export class PlayerUtil
[ name: string ]: {
time: number
}
} = {};
let trainPoints = 0;
@ -124,6 +119,8 @@ export class PlayerUtil
dispatcherTime,
flags: !stats ? [ "private" ] : [],
createdAt: Date.now(),
}).catch(e => e);
if (player instanceof Error)
@ -152,7 +149,7 @@ export class PlayerUtil
public static async getPlayerSteamData(steamId: string)
{
const data = await steamFetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${ STEAM_API_KEY }&format=json&steamids=${ steamId }`, 5) as IPlayerPayload;
const data = await steamFetch(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${ STEAM_API_KEY }&format=json&steamids=${ steamId }`) as IPlayerPayload;
if (!data?.response?.players?.length)
{

View File

@ -244,7 +244,7 @@ export const ProfileCard = ({ data }: { data: TProfileData }) =>
<div className="shadow-default dark:bg-boxdark items-center justify-center p-2.5 flex flex-col xl:p-5 gap-2">
<h1 className="text-sm text-black dark:text-white">
{t("profile.info", { date: dayjs(data.createdAt).format('DD/MM/YYYY') })}
{t("profile.info", { date: dayjs(data.player.createdAt).format('DD/MM/YYYY') })}
</h1>
</div>

View File

@ -33,7 +33,6 @@ export interface TProfileSuccessResponse
export interface TProfileData
{
player: TProfilePlayer;
createdAt: number
}
export interface TProfilePlayer
@ -49,6 +48,7 @@ export interface TProfilePlayer
"steamTrainDistance": number,
"steamTrainScore": number,
"flags": string[]
createdAt: number;
trainStats: Record<string, {
time: number;