mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-07-19 00:57:55 -05:00
Remove formDataFromRequest helper function
This commit is contained in:
parent
56e735dd28
commit
3cdf9dcf34
|
|
@ -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<Response | ActionData> => {
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -32,28 +32,6 @@ export function getLogInUrl(location: ReturnType<typeof useLocation>) {
|
|||
)}`;
|
||||
}
|
||||
|
||||
/** Get fields from `request.formData()`. Throw an error if the formData doesn't contain a requested field. */
|
||||
export async function formDataFromRequest<T extends string>({
|
||||
request,
|
||||
fields,
|
||||
}: {
|
||||
request: Request;
|
||||
fields: T[];
|
||||
}): Promise<Record<T, string>> {
|
||||
const formData = await request.formData();
|
||||
let result: Partial<Record<T, string>> = {};
|
||||
|
||||
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<T, string>;
|
||||
}
|
||||
|
||||
/** @link https://stackoverflow.com/a/69413184 */
|
||||
// @ts-expect-error
|
||||
export const assertType = <A, B extends A>() => {};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user