diff --git a/src/app/p/[secret]/verification/page.tsx b/src/app/p/[secret]/verification/page.tsx index 45c4bd9..d1aff27 100644 --- a/src/app/p/[secret]/verification/page.tsx +++ b/src/app/p/[secret]/verification/page.tsx @@ -102,6 +102,51 @@ export default function AdminVerificationPage() { const allChecked = Object.values(checklist).every(Boolean); const missingLabels = CHECKLIST.filter((c) => !checklist[c.key]).map((c) => c.label); + const activeRequest = requests.find((r) => r.id === reviewTarget); + + // Repeats the same profile data already shown on the card, but pinned + // directly above the matching checkbox — double verification so nothing + // gets checked off from memory instead of the actual evidence. + function renderEvidence(key: ChecklistKey) { + if (!activeRequest) return null; + const pet = activeRequest.pet; + switch (key) { + case "meetsAuthenticity": + return ( + <> + {pet.name} ·{" "} + {pet.breed?.name ?? pet.species.name} + {pet.bio ? <> — “{pet.bio}” : <> — no bio set} + + ); + case "meetsCompleteProfile": + return ( + <> + Avatar {pet.avatarKey ? "✓ set" : "✗ missing"} · Bio {pet.bio ? "✓ set" : "✗ missing"} + + ); + case "meetsGoodStanding": + return pet.owner.ban ? ( + + Banned{pet.owner.ban.reason ? `: ${pet.owner.ban.reason}` : ""} + + ) : pet.owner._count.warnings > 0 ? ( + + No ban, but {pet.owner._count.warnings} warning + {pet.owner._count.warnings !== 1 ? "s" : ""} + + ) : ( + No ban, no warnings + ); + case "meetsEstablishedPresence": + return ( + <> + Joined {new Date(pet.createdAt).toLocaleDateString()} · {pet._count.posts} posts ·{" "} + {pet._count.followers} followers + + ); + } + } return (
@@ -265,22 +310,25 @@ export default function AdminVerificationPage() { Review request -
+
{CHECKLIST.map((c) => ( - +
+

{renderEvidence(c.key)}

+ +
))}