Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 263x 1604x 1604x 263x 1604x 1604x 277x 277x 277x 1604x 1604x | import { MERCHANTS_ROWS_PER_PAGE } from "@hooks/common/usePagination";
import { useCallback, useEffect, useState } from "react";
const getRowsPerPageFromLocalStorage = (storageKey: string): number => {
const storedValue = localStorage.getItem(storageKey);
return storedValue ? Number(storedValue) : MERCHANTS_ROWS_PER_PAGE;
};
export const useRowsPerPage = (
storageKey: string,
totalRows?: number,
page?: number,
setPageDispatcher?: React.Dispatch<React.SetStateAction<number>>,
) => {
const [rowsPerPage, setRowsPerPage] = useState<number>(
getRowsPerPageFromLocalStorage(storageKey),
);
useEffect(() => {
const handleStorageChange = () => {
const newRowsPerPage = getRowsPerPageFromLocalStorage(storageKey);
setRowsPerPage(newRowsPerPage);
};
window.addEventListener("storage", handleStorageChange);
return () => window.removeEventListener("storage", handleStorageChange);
}, []);
const updateRowsPerPage = useCallback((value: number) => {
localStorage.setItem(storageKey, String(value));
setRowsPerPage(value);
if (setPageDispatcher && page !== undefined && totalRows !== undefined) {
const maxPage = Math.max(1, Math.ceil(totalRows / value));
if (page > maxPage) {
setPageDispatcher(maxPage);
}
}
window.dispatchEvent(new Event("storage"));
}, []);
return { rowsPerPage, setRowsPerPage: updateRowsPerPage };
};
|