import { User as U } from "@prisma/client"; import Link from "next/link"; import { useEffect, useState } from "react"; interface User extends U { subscriptions: { active: boolean; }; } export default function Admin() { const [users, setUsers] = useState(); const [searchQuery, setSearchQuery] = useState(""); const [filteredUsers, setFilteredUsers] = useState(); useEffect(() => { // fetch users fetch("/api/v1/users") .then((res) => res.json()) .then((data) => setUsers(data.response)); }, []); return (

User Administration

{ setSearchQuery(e.target.value); if (users) { setFilteredUsers( users.filter((user) => JSON.stringify(user) .toLowerCase() .includes(e.target.value.toLowerCase()) ) ); } }} className="border border-neutral-content bg-base-200 focus:border-primary py-1 rounded-md pl-9 pr-2 w-full max-w-[15rem] md:w-[15rem] md:max-w-full duration-200 outline-none" />
{filteredUsers && filteredUsers.length > 0 && searchQuery !== "" ? ( UserLising(filteredUsers) ) : searchQuery !== "" ? (

No users found with the given search query.

) : users && users.length > 0 ? ( UserLising(users) ) : (

No users found.

)}
); } const UserLising = (users: User[]) => { return (
{process.env.NEXT_PUBLIC_EMAIL_PROVIDER === "true" && ( )} {process.env.NEXT_PUBLIC_STRIPE === "true" && } {users.map((user, index) => ( {process.env.NEXT_PUBLIC_EMAIL_PROVIDER === "true" && ( )} {process.env.NEXT_PUBLIC_STRIPE === "true" && ( )} ))}
UsernameEmailSubscribedCreated At
{index + 1} {user.username}{user.email}{JSON.stringify(user.subscriptions.active)}{new Date(user.createdAt).toLocaleString()}
); };