From 2209a176878fadebece2e71d4127d5844875ba14 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Wed, 22 Apr 2026 16:54:00 +0100 Subject: [PATCH] fix: mii reviewedAt property for time select and responsiveness for sort menus also bypassCache profile url query param --- .../migrations/20260422154939_reviewed_at/migration.sql | 2 ++ backend/prisma/schema.prisma | 3 ++- backend/src/app/api/mii/list/route.ts | 2 +- frontend/src/components/mii/list/index.tsx | 6 ++++-- frontend/src/pages/profile/index.tsx | 8 +++++++- 5 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 backend/prisma/migrations/20260422154939_reviewed_at/migration.sql diff --git a/backend/prisma/migrations/20260422154939_reviewed_at/migration.sql b/backend/prisma/migrations/20260422154939_reviewed_at/migration.sql new file mode 100644 index 0000000..99a4d0b --- /dev/null +++ b/backend/prisma/migrations/20260422154939_reviewed_at/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "miis" ADD COLUMN "reviewedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 041eb4e..a5ccbae 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -88,7 +88,8 @@ model Mii { islandName String? allowedCopying Boolean? - createdAt DateTime @default(now()) + createdAt DateTime @default(now()) + reviewedAt DateTime @default(now()) user User @relation(fields: [userId], references: [id], onDelete: Cascade) likeCount Int @default(0) diff --git a/backend/src/app/api/mii/list/route.ts b/backend/src/app/api/mii/list/route.ts index 21b152d..9b3beda 100644 --- a/backend/src/app/api/mii/list/route.ts +++ b/backend/src/app/api/mii/list/route.ts @@ -72,7 +72,7 @@ export async function GET(request: NextRequest) { ...(!quarantined && !userId && { quarantined: false }), // Time range ...(timeRange && { - createdAt: { + reviewedAt: { gte: new Date(Date.now() - { day: 86400000, week: 604800000, month: 2592000000, year: 31536000000 }[timeRange]), }, }), diff --git a/frontend/src/components/mii/list/index.tsx b/frontend/src/components/mii/list/index.tsx index 0309362..9f04154 100644 --- a/frontend/src/components/mii/list/index.tsx +++ b/frontend/src/components/mii/list/index.tsx @@ -20,9 +20,10 @@ interface ApiResponse { interface Props { userId?: number; parentPage?: "likes"; + bypassCache?: boolean; } -export default function MiiList({ parentPage, userId }: Props) { +export default function MiiList({ parentPage, userId, bypassCache }: Props) { const [searchParams] = useSearchParams(); const [data, setData] = useState(null); const [loading, setLoading] = useState(true); @@ -34,6 +35,7 @@ export default function MiiList({ parentPage, userId }: Props) { const params = new URLSearchParams(searchParams.toString()); if (userId) params.append("userId", userId.toString()); if (parentPage) params.append("parentPage", parentPage); + if (bypassCache) params.append("bypassCache", "true"); fetch(`${import.meta.env.VITE_API_URL}/api/mii/list?${params.toString()}`, { credentials: "include" }) .then((res) => { @@ -71,7 +73,7 @@ export default function MiiList({ parentPage, userId }: Props) { {data.totalCount === 1 ? "Mii" : "Miis"} -
+
diff --git a/frontend/src/pages/profile/index.tsx b/frontend/src/pages/profile/index.tsx index 5b8c99b..60092c6 100644 --- a/frontend/src/pages/profile/index.tsx +++ b/frontend/src/pages/profile/index.tsx @@ -1,8 +1,14 @@ import { useParams } from "react-router"; import MiiList from "../../components/mii/list"; +import { useStore } from "@nanostores/react"; +import { session } from "../../session"; export default function ProfilePage() { const { id } = useParams(); + const $session = useStore(session); - return ; + const userId = Number(id ?? $session?.user?.id); + const isOwnProfile = !!$session?.user?.id && userId === Number($session.user.id); + + return ; }