Servers ITEMS_PER_PAGE

This commit is contained in:
headlessdev 2025-04-14 21:26:12 +02:00
parent 0a8ea98dae
commit 8fc4fea687
2 changed files with 10 additions and 4 deletions

View File

@ -2,15 +2,16 @@ import { NextResponse, NextRequest } from "next/server";
import { prisma } from "@/lib/prisma"; import { prisma } from "@/lib/prisma";
interface GetRequest { interface GetRequest {
page: number; page?: number;
ITEMS_PER_PAGE?: number;
} }
const ITEMS_PER_PAGE = 5;
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {
const body: GetRequest = await request.json(); const body: GetRequest = await request.json();
const page = Math.max(1, body.page || 1); const page = Math.max(1, body.page || 1);
const ITEMS_PER_PAGE = body.ITEMS_PER_PAGE || 4;
const servers = await prisma.server.findMany({ const servers = await prisma.server.findMany({
skip: (page - 1) * ITEMS_PER_PAGE, skip: (page - 1) * ITEMS_PER_PAGE,

View File

@ -107,6 +107,7 @@ export default function Dashboard() {
const [currentPage, setCurrentPage] = useState<number>(1); const [currentPage, setCurrentPage] = useState<number>(1);
const [maxPage, setMaxPage] = useState<number>(1); const [maxPage, setMaxPage] = useState<number>(1);
const [itemsPerPage, setItemsPerPage] = useState<number>(4);
const [servers, setServers] = useState<Server[]>([]); const [servers, setServers] = useState<Server[]>([]);
const [isGridLayout, setIsGridLayout] = useState<boolean>(false); const [isGridLayout, setIsGridLayout] = useState<boolean>(false);
const [loading, setLoading] = useState<boolean>(true); const [loading, setLoading] = useState<boolean>(true);
@ -126,7 +127,9 @@ export default function Dashboard() {
useEffect(() => { useEffect(() => {
const savedLayout = Cookies.get("layoutPreference-servers"); const savedLayout = Cookies.get("layoutPreference-servers");
setIsGridLayout(savedLayout === "grid"); const layout_bool = savedLayout === "grid";
setIsGridLayout(layout_bool);
setItemsPerPage(layout_bool ? 6 : 4);
}, []); }, []);
const toggleLayout = () => { const toggleLayout = () => {
@ -137,6 +140,7 @@ export default function Dashboard() {
path: "/", path: "/",
sameSite: "strict", sameSite: "strict",
}); });
setItemsPerPage(newLayout ? 6 : 4);
}; };
const add = async () => { const add = async () => {
@ -164,6 +168,7 @@ export default function Dashboard() {
"/api/servers/get", "/api/servers/get",
{ {
page: currentPage, page: currentPage,
ITEMS_PER_PAGE: itemsPerPage,
} }
); );
setServers(response.data.servers); setServers(response.data.servers);
@ -176,7 +181,7 @@ export default function Dashboard() {
useEffect(() => { useEffect(() => {
getServers(); getServers();
}, [currentPage]); }, [currentPage, itemsPerPage]);
const handlePrevious = () => { const handlePrevious = () => {
setCurrentPage((prev) => Math.max(1, prev - 1)); setCurrentPage((prev) => Math.max(1, prev - 1));