sendou.ink/app/features/tournament-admin/actions/to.$id.admin.stream.server.ts
Kalle 6e987d506f
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
Tournament layout refresh, improve admin experience (#3152)
2026-06-11 18:31:10 +03:00

42 lines
1.3 KiB
TypeScript

import type { ActionFunction } from "react-router";
import { requireUser } from "~/features/auth/core/user.server";
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";
import {
clearTournamentDataCache,
tournamentFromDB,
} from "~/features/tournament-bracket/core/Tournament.server";
import { parseFormData } from "~/form/parse.server";
import { parseParams } from "~/utils/remix.server";
import { idObject } from "~/utils/zod";
import { adminStreamFormSchema } from "../tournament-admin-staff-schemas";
import { requireTournamentOrganizer } from "../tournament-admin-utils.server";
export const action: ActionFunction = async ({ request, params }) => {
const user = requireUser();
const { id: tournamentId } = parseParams({
params,
schema: idObject,
});
const tournament = await tournamentFromDB({ tournamentId, user });
requireTournamentOrganizer(tournament, user);
const result = await parseFormData({
request,
schema: adminStreamFormSchema,
});
if (!result.success) {
return { fieldErrors: result.fieldErrors };
}
await TournamentRepository.updateCastTwitchAccounts({
tournamentId: tournament.ctx.id,
castTwitchAccounts: result.data.castTwitchAccounts,
});
clearTournamentDataCache(tournamentId);
return null;
};