From 3cdf9dcf34ec9a875dfedd0a75fde34bf0e88b95 Mon Sep 17 00:00:00 2001 From: "Kalle (Sendou)" <38327916+Sendouc@users.noreply.github.com> Date: Sat, 25 Dec 2021 22:04:02 +0200 Subject: [PATCH] Remove formDataFromRequest helper function --- .../manage-roster.tsx | 19 ++++++++-------- app/utils/index.ts | 22 ------------------- 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/app/routes/to/$organization.$tournament/manage-roster.tsx b/app/routes/to/$organization.$tournament/manage-roster.tsx index 05f4eeb98..7217c7153 100644 --- a/app/routes/to/$organization.$tournament/manage-roster.tsx +++ b/app/routes/to/$organization.$tournament/manage-roster.tsx @@ -23,7 +23,7 @@ import { import { getTrustingUsers } from "~/services/user"; import type { FindManyByTrustReceiverId } from "~/models/TrustRelationship"; import styles from "~/styles/tournament-manage-roster.css"; -import { formDataFromRequest, requireUser } from "~/utils"; +import { requireUser } from "~/utils"; import { useBaseURL, useIsSubmitting, useTimeoutState } from "~/utils/hooks"; import { Catcher } from "~/components/Catcher"; @@ -42,10 +42,9 @@ export const action: ActionFunction = async ({ request, context, }): Promise => { - const { userId, teamId } = await formDataFromRequest({ - request, - fields: ["userId", "teamId"], - }); + const data = Object.fromEntries(await request.formData()); + invariant(typeof data.userId === "string", "Invalid type for userId"); + invariant(typeof data.teamId === "string", "Invalid type for teamId"); const user = requireUser(context); @@ -53,16 +52,16 @@ export const action: ActionFunction = async ({ case "POST": try { await putPlayerToTeam({ - teamId, + teamId: data.teamId, captainId: user.id, - newPlayerId: userId, + newPlayerId: data.userId, }); } catch (e) { if (e instanceof Prisma.PrismaClientKnownRequestError) { if (e.code === "P2002" && e.message.includes("`tournamentId`")) { return { fieldErrors: { userId: "This player is already in a team." }, - fields: { userId }, + fields: { userId: data.userId }, }; } } @@ -73,8 +72,8 @@ export const action: ActionFunction = async ({ case "DELETE": await removePlayerFromTeam({ captainId: user.id, - playerId: userId, - teamId, + playerId: data.userId, + teamId: data.teamId, }); return new Response("Player deleted from team", { status: 200 }); default: diff --git a/app/utils/index.ts b/app/utils/index.ts index c7cf34438..63f0c6375 100644 --- a/app/utils/index.ts +++ b/app/utils/index.ts @@ -32,28 +32,6 @@ export function getLogInUrl(location: ReturnType) { )}`; } -/** Get fields from `request.formData()`. Throw an error if the formData doesn't contain a requested field. */ -export async function formDataFromRequest({ - request, - fields, -}: { - request: Request; - fields: T[]; -}): Promise> { - const formData = await request.formData(); - let result: Partial> = {}; - - for (const field of fields) { - const value = formData.get(field); - - invariant(typeof value === "string", `Expected ${field} to be string`); - - result[field] = value; - } - - return result as Record; -} - /** @link https://stackoverflow.com/a/69413184 */ // @ts-expect-error export const assertType = () => {};