feat: cast ui

This commit is contained in:
TrèsAbhi committed 2024-09-01 16:25:43 -05:00
1 parent 2d2d31adf7
commit c5e2c1fd0f
7 files changed
+253 -37

No files matched your search

@@ -2,7 +2,10 @@ import { NextRequest, NextResponse } from 'next/server';
import { isValidBlitzId } from '../../../../../core/blitz/isValidBlitzId';
import { tankDefinitions } from '../../../../../core/blitzkit/tankDefinitions';
import { usersDatabase } from '../../../../../databases/users';
import { BlitzkitResponse } from '../../../../../hooks/useTankVotes';
import {
BlitzkitResponse,
BlitzkitResponseError,
} from '../../../../../hooks/useTankVotes';
import { TankVoteCategory } from '../cast/route';
export interface TankVotes {
@@ -22,7 +25,7 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'INVALID_TANK_ID',
} satisfies BlitzkitResponse<TankVotes>);
} satisfies BlitzkitResponseError);
}
const blitzIdString = request.nextUrl.searchParams.get('player');
@@ -33,7 +36,7 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'UNDEFINED_TOKEN_OR_PLAYER_ID',
} satisfies BlitzkitResponse<TankVotes>);
} satisfies BlitzkitResponseError);
}
if (
@@ -44,7 +47,7 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'INVALID_TOKEN_OR_PLAYER_ID',
} satisfies BlitzkitResponse);
} satisfies BlitzkitResponseError);
}
try {
@@ -76,6 +79,6 @@ export async function GET(
status: 'error',
error: 'DATABASE_ERROR',
message,
} satisfies BlitzkitResponse<TankVotes>);
} satisfies BlitzkitResponseError);
}
}
+26 -10
View File
@@ -2,7 +2,10 @@ import { NextRequest, NextResponse } from 'next/server';
import { isValidBlitzId } from '../../../../../core/blitz/isValidBlitzId';
import { tankDefinitions } from '../../../../../core/blitzkit/tankDefinitions';
import { usersDatabase } from '../../../../../databases/users';
import { BlitzkitResponse } from '../../../../../hooks/useTankVotes';
import {
BlitzkitResponse,
BlitzkitResponseError,
} from '../../../../../hooks/useTankVotes';
import { StarsInt } from '../../../../tools/tankopedia/[id]/components/Model/MetaSection/components/Stars';
export const TANK_VOTE_CATEGORIES = [
@@ -25,16 +28,29 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'INVALID_TANK_ID',
} satisfies BlitzkitResponse);
} satisfies BlitzkitResponseError);
}
const blitzId = Number(request.nextUrl.searchParams.get('player'));
const blitzIdString = request.nextUrl.searchParams.get('player');
const blitzId = Number(blitzIdString);
const blitzToken = request.nextUrl.searchParams.get('token');
if (isNaN(blitzId) || !(await isValidBlitzId(blitzId))) {
if (blitzIdString === null || blitzToken === null) {
return NextResponse.json({
status: 'error',
error: 'INVALID_PLAYER_ID',
} satisfies BlitzkitResponse);
error: 'UNDEFINED_TOKEN_OR_PLAYER_ID',
} satisfies BlitzkitResponseError);
}
if (
blitzIdString !== null &&
(!(await isValidBlitzId(blitzId, blitzToken ?? undefined)) ||
isNaN(blitzId))
) {
return NextResponse.json({
status: 'error',
error: 'INVALID_TOKEN_OR_PLAYER_ID',
} satisfies BlitzkitResponseError);
}
const votes: Partial<Record<TankVoteCategory, StarsInt>> = {};
@@ -51,7 +67,7 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'INVALID_VOTE',
} satisfies BlitzkitResponse);
} satisfies BlitzkitResponseError);
}
votes[category] = vote as StarsInt;
@@ -62,7 +78,7 @@ export async function GET(
return NextResponse.json({
status: 'error',
error: 'NO_VOTES',
} satisfies BlitzkitResponse);
} satisfies BlitzkitResponseError);
}
try {
@@ -90,12 +106,12 @@ export async function GET(
return NextResponse.json({
status: 'ok',
data: undefined,
} satisfies BlitzkitResponse<undefined>);
} satisfies BlitzkitResponse);
} catch (message) {
return NextResponse.json({
status: 'error',
error: 'DATABASE_ERROR',
message,
} satisfies BlitzkitResponse);
} satisfies BlitzkitResponseError);
}
}