Skip to content

Commit 7c7d044

Browse files
committed
extract hook for client side pagination
1 parent 05c7da3 commit 7c7d044

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/components/AlertsTable.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ import { useAlertSearch } from "@/hooks/useAlertSearch";
2323
import { useCallback } from "react";
2424
import { useSearchParams } from "react-router-dom";
2525
import { useFilteredAlerts } from "@/hooks/useAlertsData";
26-
27-
const PAGE_SIZE = 15;
26+
import { useClientSidePagination } from "@/hooks/useClientSidePagination";
2827

2928
const wrapObjectOutput = (input: AlertConversation["trigger_string"]) => {
3029
const data = getMaliciousPackage(input);
@@ -79,13 +78,11 @@ export function AlertsTable() {
7978
const [searchParams, setSearchParams] = useSearchParams();
8079
const { data: filteredAlerts = [] } = useFilteredAlerts();
8180

82-
const pageStart = page * PAGE_SIZE;
83-
const pageEnd = page * PAGE_SIZE + PAGE_SIZE - 1;
84-
85-
const dataView = filteredAlerts.slice(pageStart, pageEnd);
86-
87-
const hasPreviousPage = page > 0;
88-
const hasNextPage = pageEnd + 1 < filteredAlerts.length;
81+
const { dataView, hasNextPage, hasPreviousPage } = useClientSidePagination(
82+
filteredAlerts,
83+
page,
84+
15,
85+
);
8986

9087
const handleToggleFilter = useCallback(
9188
(isChecked: boolean) => {

src/hooks/useClientSidePagination.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export function useClientSidePagination<T>(
2+
data: T[],
3+
page: number,
4+
pageSize: number,
5+
) {
6+
const pageStart = page * pageSize;
7+
const pageEnd = page * pageSize + pageSize - 1;
8+
9+
const dataView = data.slice(pageStart, pageEnd);
10+
11+
const hasPreviousPage = page > 0;
12+
const hasNextPage = pageEnd + 1 < data.length;
13+
14+
return { pageStart, pageEnd, dataView, hasPreviousPage, hasNextPage };
15+
}

0 commit comments

Comments
 (0)