mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-22 19:40:57 -05:00
* Initial * CSS lint * Test CI * Add 1v1, 2v2, and 3v3 Tags (#1771) * Initial * CSS lint * Test CI * Rename step --------- Co-authored-by: xi <104683822+ximk@users.noreply.github.com>
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import type { ActionFunction } from "@remix-run/node";
|
|
import { redirect } from "@remix-run/node";
|
|
import { requireUserId } from "~/features/auth/core/user.server";
|
|
import { parseRequestFormData, validate } from "~/utils/remix";
|
|
import { mySlugify, teamPage } from "~/utils/urls";
|
|
import { allTeams } from "../queries/allTeams.server";
|
|
import { createNewTeam } from "../queries/createNewTeam.server";
|
|
import { createTeamSchema } from "../team-schemas.server";
|
|
|
|
export const action: ActionFunction = async ({ request }) => {
|
|
const user = await requireUserId(request);
|
|
const data = await parseRequestFormData({
|
|
request,
|
|
schema: createTeamSchema,
|
|
});
|
|
|
|
const teams = allTeams();
|
|
|
|
validate(
|
|
teams.every((team) =>
|
|
team.members.every((member) => member.id !== user.id),
|
|
),
|
|
"Already in a team",
|
|
);
|
|
|
|
// two teams can't have same customUrl
|
|
const customUrl = mySlugify(data.name);
|
|
|
|
validate(customUrl.length > 0, "Team name can't be only special characters");
|
|
|
|
if (teams.some((team) => team.customUrl === customUrl)) {
|
|
return {
|
|
errors: ["forms.errors.duplicateName"],
|
|
};
|
|
}
|
|
|
|
createNewTeam({
|
|
captainId: user.id,
|
|
name: data.name,
|
|
customUrl,
|
|
});
|
|
|
|
throw redirect(teamPage(customUrl));
|
|
};
|