feat: add server-side pagination to proxy-hosts page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 }}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user