diff --git a/next.config.ts b/next.config.ts
index 9b88254..9736afa 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -4,7 +4,34 @@ import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
images: {
- unoptimized: true,
+ localPatterns: [
+ {
+ pathname: "/mii/*/image",
+ },
+ {
+ pathname: "/profile/*/picture",
+ },
+ {
+ pathname: "/tutorial/**",
+ },
+ {
+ pathname: "/guest.png",
+ },
+ ],
+ remotePatterns: [
+ {
+ hostname: "avatars.githubusercontent.com",
+ },
+ {
+ hostname: "cdn.discordapp.com",
+ },
+ {
+ hostname: "studio.mii.nintendo.com",
+ },
+ {
+ hostname: "*.googleusercontent.com",
+ },
+ ],
},
};
diff --git a/src/app/api/mii/[id]/edit/route.ts b/src/app/api/mii/[id]/edit/route.ts
index cb91818..e27d251 100644
--- a/src/app/api/mii/[id]/edit/route.ts
+++ b/src/app/api/mii/[id]/edit/route.ts
@@ -163,7 +163,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
await Promise.all(
images.map(async (image, index) => {
const buffer = Buffer.from(await image.arrayBuffer());
- const pngBuffer = await sharp(buffer).resize({ height: 800, fit: "inside", withoutEnlargement: true }).png({ quality: 85 }).toBuffer();
+ const pngBuffer = await sharp(buffer).png({ quality: 85 }).toBuffer();
const fileLocation = path.join(miiUploadsDirectory, `image${index}.png`);
await fs.writeFile(fileLocation, pngBuffer);
diff --git a/src/app/api/submit/route.ts b/src/app/api/submit/route.ts
index dc07a9e..136477f 100644
--- a/src/app/api/submit/route.ts
+++ b/src/app/api/submit/route.ts
@@ -313,7 +313,7 @@ export async function POST(request: NextRequest) {
await Promise.all(
customImages.map(async (image, index) => {
const buffer = Buffer.from(await image.arrayBuffer());
- const pngBuffer = await sharp(buffer).resize({ height: 800, fit: "inside", withoutEnlargement: true }).png({ quality: 85 }).toBuffer();
+ const pngBuffer = await sharp(buffer).png({ quality: 85 }).toBuffer();
const fileLocation = path.join(miiUploadsDirectory, `image${index}.png`);
await fs.writeFile(fileLocation, pngBuffer);
diff --git a/src/app/mii/[id]/image/route.ts b/src/app/mii/[id]/image/route.ts
index 1dd6b05..406991e 100644
--- a/src/app/mii/[id]/image/route.ts
+++ b/src/app/mii/[id]/image/route.ts
@@ -19,7 +19,7 @@ const searchParamsSchema = z.object({
});
export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
- const rateLimit = new RateLimit(request, 20000, "/mii/image");
+ const rateLimit = new RateLimit(request, 200, "/mii/image");
const check = await rateLimit.handle();
if (check) return check;
@@ -110,6 +110,6 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
return rateLimit.sendResponse(buffer, 200, {
"Content-Type": "image/png",
"X-Robots-Tag": "noindex, noimageindex, nofollow",
- "Cache-Control": "public, max-age=31536000, immutable",
+ "Cache-Control": "no-store",
});
}
diff --git a/src/components/mii/author-buttons.tsx b/src/components/mii/author-buttons.tsx
index 1a9414b..a237ddd 100644
--- a/src/components/mii/author-buttons.tsx
+++ b/src/components/mii/author-buttons.tsx
@@ -22,7 +22,7 @@ interface Props {
export default function AuthorButtons({ mii }: Props) {
const session = useSession();
- if (!session.data || (Number(session.data.user?.id) !== mii.userId && Number(session.data.user?.id) !== Number(process.env.NEXT_PUBLIC_ADMIN_USER_ID)))
+ if (!session.data || Number(session.data.user?.id) !== mii.userId || Number(session.data.user?.id) !== Number(process.env.NEXT_PUBLIC_ADMIN_USER_ID))
return null;
return (
diff --git a/src/components/mii/list/filter-menu.tsx b/src/components/mii/list/filter-menu.tsx
index eb17a72..8778bd6 100644
--- a/src/components/mii/list/filter-menu.tsx
+++ b/src/components/mii/list/filter-menu.tsx
@@ -121,13 +121,18 @@ export default function FilterMenu() {
<>
- Face Paint
+ Makeup
>
)}
+
+
+ Other
+
+
)}
diff --git a/src/components/mii/list/index.tsx b/src/components/mii/list/index.tsx
index 6ac9a1a..0a9a60e 100644
--- a/src/components/mii/list/index.tsx
+++ b/src/components/mii/list/index.tsx
@@ -1,4 +1,7 @@
+import Link from "next/link";
+
import { Prisma } from "@prisma/client";
+import { Icon } from "@iconify/react";
import crypto from "crypto";
import seedrandom from "seedrandom";
@@ -8,6 +11,9 @@ import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import SortSelect from "./sort-select";
+import Carousel from "../../carousel";
+import LikeButton from "../../like-button";
+import DeleteMiiButton from "../delete-mii-button";
import Pagination from "./pagination";
import FilterMenu from "./filter-menu";
import MiiGrid from "./mii-grid";
@@ -55,7 +61,7 @@ export default async function MiiList({ searchParams, userId, inLikesPage }: Pro
// Makeup
...(makeup && { makeup: { equals: makeup } }),
// Quarantined
- ...(!quarantined && !userId && { quarantined: false }),
+ ...(!quarantined && { quarantined: false }),
// Profiles
...(userId && { userId }),
};
@@ -183,7 +189,7 @@ export default async function MiiList({ searchParams, userId, inLikesPage }: Pro
-
+
);
diff --git a/src/components/mii/list/makeup-select.tsx b/src/components/mii/list/makeup-select.tsx
index 53c210a..80ae9ee 100644
--- a/src/components/mii/list/makeup-select.tsx
+++ b/src/components/mii/list/makeup-select.tsx
@@ -35,39 +35,39 @@ export default function MakeupSelect() {
{/* Full Makeup */}
{/* Partial Makeup */}
{/* No Makeup */}
diff --git a/src/components/mii/list/other-filters.tsx b/src/components/mii/list/other-filters.tsx
index fac98b2..6ccec92 100644
--- a/src/components/mii/list/other-filters.tsx
+++ b/src/components/mii/list/other-filters.tsx
@@ -1,13 +1,13 @@
"use client";
+import { Icon } from "@iconify/react";
import { MiiPlatform } from "@prisma/client";
-import { usePathname, useRouter, useSearchParams } from "next/navigation";
+import { useRouter, useSearchParams } from "next/navigation";
import { ChangeEvent, useState, useTransition } from "react";
export default function OtherFilters() {
const router = useRouter();
const searchParams = useSearchParams();
- const pathname = usePathname();
const [, startTransition] = useTransition();
const platform = (searchParams.get("platform") as MiiPlatform) || undefined;
@@ -48,35 +48,22 @@ export default function OtherFilters() {
});
};
- const showAllowCopying = platform !== "SWITCH";
- const showQuarantined = !pathname.startsWith("/profile");
-
- if (!showAllowCopying && !showQuarantined) return null;
-
return (
<>
-
-
- Other
-
-
-
- {showAllowCopying && (
-
+ {platform === "THREE_DS" && (
+
)}
- {showQuarantined && (
-
-
-
-
- )}
+
+
+
+
>
);
}
diff --git a/src/components/submit-form/edit-form.tsx b/src/components/submit-form/edit-form.tsx
index 71794e3..15cf51c 100644
--- a/src/components/submit-form/edit-form.tsx
+++ b/src/components/submit-form/edit-form.tsx
@@ -268,7 +268,7 @@ export default function EditForm({ mii, likes }: Props) {
<>
@@ -276,8 +276,8 @@ export default function EditForm({ mii, likes }: Props) {