feat: send edited miis with bad images to queue as well

related to 975d55bd
This commit is contained in:
trafficlunar 2026-04-02 15:01:32 +01:00
parent 975d55bd19
commit bf670afcf1
2 changed files with 6 additions and 4 deletions

View file

@ -97,6 +97,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
const { name, tags, description, quarantined, gender, makeup, miiPortraitImage, miiFeaturesImage, instructions, image1, image2, image3 } = parsed.data; const { name, tags, description, quarantined, gender, makeup, miiPortraitImage, miiFeaturesImage, instructions, image1, image2, image3 } = parsed.data;
// Validate image files // Validate image files
let wasImagesModerated = false;
const images: File[] = []; const images: File[] = [];
for (const img of [image1, image2, image3]) { for (const img of [image1, image2, image3]) {
@ -106,7 +107,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
if (imageValidation.valid) { if (imageValidation.valid) {
images.push(img); images.push(img);
} else { } else {
return rateLimit.sendResponse({ error: imageValidation.error }, imageValidation.status ?? 400); wasImagesModerated = true;
} }
} }
@ -114,11 +115,11 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
if (mii.platform === "SWITCH") { if (mii.platform === "SWITCH") {
if (miiPortraitImage) { if (miiPortraitImage) {
const validation = await validateImage(miiPortraitImage); const validation = await validateImage(miiPortraitImage);
if (!validation.valid) return rateLimit.sendResponse({ error: `Failed to verify portrait: ${validation.error}` }, validation.status ?? 400); if (!validation.valid) wasImagesModerated = true;
} }
if (miiFeaturesImage) { if (miiFeaturesImage) {
const validation = await validateImage(miiFeaturesImage); const validation = await validateImage(miiFeaturesImage);
if (!validation.valid) return rateLimit.sendResponse({ error: `Failed to verify features: ${validation.error}` }, validation.status ?? 400); if (!validation.valid) wasImagesModerated = true;
} }
} }
@ -136,6 +137,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
if (makeup !== undefined) updateData.makeup = makeup; if (makeup !== undefined) updateData.makeup = makeup;
if (instructions !== undefined) updateData.instructions = instructions; if (instructions !== undefined) updateData.instructions = instructions;
if (images.length > 0) updateData.imageCount = images.length; if (images.length > 0) updateData.imageCount = images.length;
if (wasImagesModerated) updateData.in_queue = true;
if (Object.keys(updateData).length === 0) return rateLimit.sendResponse({ error: "Nothing was changed" }, 400); if (Object.keys(updateData).length === 0) return rateLimit.sendResponse({ error: "Nothing was changed" }, 400);
const updatedMii = await prisma.mii.update({ const updatedMii = await prisma.mii.update({

View file

@ -133,7 +133,7 @@ export default async function MiiPage({ params }: Props) {
<div className="bg-zinc-50 border-2 border-zinc-400 rounded-2xl shadow-lg p-4 flex items-center gap-3 text-zinc-700"> <div className="bg-zinc-50 border-2 border-zinc-400 rounded-2xl shadow-lg p-4 flex items-center gap-3 text-zinc-700">
<Icon icon="material-symbols:timer" className="text-2xl shrink-0" /> <Icon icon="material-symbols:timer" className="text-2xl shrink-0" />
<p className="font-medium"> <p className="font-medium">
This Mii is waiting to be manually reviewed {!settings.queueEnabled && "due to inappropriate images "} This Mii is waiting to be manually reviewed {!settings.queueEnabled && "after being auto-flagged for inappropriate images "}
and is hidden from the main page. and is hidden from the main page.
</p> </p>
</div> </div>