feat: add server-side pagination to proxy-hosts page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
fuomag9
2026-02-27 18:00:26 +01:00
parent ce042d968d
commit 6bd7fe92d8
2 changed files with 27 additions and 7 deletions
@@ -21,9 +21,10 @@ type Props = {
certificates: Certificate[];
accessLists: AccessList[];
authentikDefaults: AuthentikSettings | null;
pagination: { total: number; page: number; perPage: number };
};
export default function ProxyHostsClient({ hosts, certificates, accessLists, authentikDefaults }: Props) {
export default function ProxyHostsClient({ hosts, certificates, accessLists, authentikDefaults, pagination }: Props) {
const [createOpen, setCreateOpen] = useState(false);
const [duplicateHost, setDuplicateHost] = useState<ProxyHost | null>(null);
const [editHost, setEditHost] = useState<ProxyHost | null>(null);
@@ -159,6 +160,7 @@ export default function ProxyHostsClient({ hosts, certificates, accessLists, aut
data={filteredHosts}
keyField="id"
emptyMessage={searchTerm ? "No hosts match your search" : "No proxy hosts found"}
pagination={pagination}
/>
<CreateHostDialog
+24 -6
View File
@@ -1,18 +1,36 @@
import ProxyHostsClient from "./ProxyHostsClient";
import { listProxyHosts } from "@/src/lib/models/proxy-hosts";
import { listProxyHostsPaginated, countProxyHosts } from "@/src/lib/models/proxy-hosts";
import { listCertificates } from "@/src/lib/models/certificates";
import { listAccessLists } from "@/src/lib/models/access-lists";
import { getAuthentikSettings } from "@/src/lib/settings";
import { requireAdmin } from "@/src/lib/auth";
export default async function ProxyHostsPage() {
const PER_PAGE = 25;
interface PageProps {
searchParams: { page?: string };
}
export default async function ProxyHostsPage({ searchParams }: PageProps) {
await requireAdmin();
const [hosts, certificates, accessLists, authentikDefaults] = await Promise.all([
listProxyHosts(),
const page = Math.max(1, parseInt(searchParams.page ?? "1", 10) || 1);
const offset = (page - 1) * PER_PAGE;
const [hosts, total, certificates, accessLists, authentikDefaults] = await Promise.all([
listProxyHostsPaginated(PER_PAGE, offset),
countProxyHosts(),
listCertificates(),
listAccessLists(),
getAuthentikSettings()
getAuthentikSettings(),
]);
return <ProxyHostsClient hosts={hosts} certificates={certificates} accessLists={accessLists} authentikDefaults={authentikDefaults} />;
return (
<ProxyHostsClient
hosts={hosts}
certificates={certificates}
accessLists={accessLists}
authentikDefaults={authentikDefaults}
pagination={{ total, page, perPage: PER_PAGE }}
/>
);
}