From 5ed5af2465396b0b8db198b938fa1f03232ae62d Mon Sep 17 00:00:00 2001 From: "Kalle (Sendou)" <38327916+Sendouc@users.noreply.github.com> Date: Sun, 16 Jan 2022 21:43:44 +0200 Subject: [PATCH] Use parseRequestFormData in seeds --- .../bracket.$bid.tsx | 1 - .../to/$organization.$tournament/seeds.tsx | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/routes/to/$organization.$tournament/bracket.$bid.tsx b/app/routes/to/$organization.$tournament/bracket.$bid.tsx index ef64530f6..a2a789dba 100644 --- a/app/routes/to/$organization.$tournament/bracket.$bid.tsx +++ b/app/routes/to/$organization.$tournament/bracket.$bid.tsx @@ -114,7 +114,6 @@ export const action: ActionFunction = async ({ const typedJson = (args: BracketModified) => json(args); export const loader: LoaderFunction = async ({ params }) => { - console.log("params.bid", params.bid); invariant(typeof params.bid === "string", "Expected params.bid to be string"); const bracket = await bracketById(params.bid); diff --git a/app/routes/to/$organization.$tournament/seeds.tsx b/app/routes/to/$organization.$tournament/seeds.tsx index fd1ae645a..9e1ebde45 100644 --- a/app/routes/to/$organization.$tournament/seeds.tsx +++ b/app/routes/to/$organization.$tournament/seeds.tsx @@ -33,27 +33,33 @@ import { updateSeeds, } from "~/services/tournament"; import seedsStylesUrl from "~/styles/tournament-seeds.css"; -import { requireUser, Unpacked } from "~/utils"; +import { + parseRequestFormData, + requireUser, + safeJSONParse, + Unpacked, +} from "~/utils"; import { useTimeoutState } from "~/utils/hooks"; -export const action: ActionFunction = async ({ context, request }) => { - const data = Object.fromEntries(await request.formData()); - const user = requireUser(context); +const seedsActionSchema = z.object({ + tournamentId: z.string().uuid(), + seeds: z.preprocess(safeJSONParse, z.array(z.string())), +}); - invariant(typeof data.seeds === "string", "Invalid type for seeds"); - invariant( - typeof data.tournamentId === "string", - "Invalid type for tournamentId" - ); - const newSeeds = z.array(z.string()).parse(JSON.parse(data.seeds)); +export const action: ActionFunction = async ({ context, request }) => { + const data = await parseRequestFormData({ + request, + schema: seedsActionSchema, + }); + const user = requireUser(context); await updateSeeds({ tournamentId: data.tournamentId, userId: user.id, - newSeeds, + newSeeds: data.seeds, }); - return new Response(undefined, { status: 200 }); + return null; }; export const links: LinksFunction = () => {