mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-26 01:09:02 -05:00
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import type { LoaderFunctionArgs } from "react-router";
|
|
import { redirect } from "react-router";
|
|
import { requireUser } from "~/features/auth/core/user.server";
|
|
import * as TeamRepository from "~/features/team/TeamRepository.server";
|
|
import { isTeamManager } from "~/features/team/team-utils";
|
|
import * as ImageRepository from "../ImageRepository.server";
|
|
import { requestToImgType } from "../upload-utils";
|
|
|
|
export const loader = async ({ request }: LoaderFunctionArgs) => {
|
|
const user = await requireUser();
|
|
const validatedType = requestToImgType(request);
|
|
|
|
if (!validatedType) {
|
|
throw redirect("/");
|
|
}
|
|
|
|
if (validatedType === "team-pfp" || validatedType === "team-banner") {
|
|
const teamCustomUrl = new URL(request.url).searchParams.get("team") ?? "";
|
|
const team = await TeamRepository.findByCustomUrl(teamCustomUrl);
|
|
|
|
if (!team || !isTeamManager({ team, user })) {
|
|
throw redirect("/");
|
|
}
|
|
}
|
|
|
|
return {
|
|
type: validatedType,
|
|
unvalidatedImages: await ImageRepository.countUnvalidatedBySubmitterUserId(
|
|
user.id,
|
|
),
|
|
};
|
|
};
|