in pca-ui/src/www/src/routes/Home.js [10:69]
function Home({ setAlert }) {
const fetcher = (url, startKey, startTimestamp) => {
const opts = {
count: config.api.pageSize,
};
if (startTimestamp) opts.startTimestamp = startTimestamp;
if (startKey) opts.startKey = startKey;
return list(opts);
};
const getKey = (pageIndex, previousPageData) => {
if (previousPageData && !previousPageData.StartKey) return null;
if (pageIndex === 0) return `/list`;
const { StartKey, StartTimestamp } = previousPageData;
return [
`/list?startKey=${StartKey}&startTimestamp=${StartTimestamp}`,
StartKey,
StartTimestamp,
];
};
const { data, error, size, setSize } = useSWRInfinite(getKey, fetcher);
const isLoadingInitialData = !data && !error;
const isLoadingMore =
isLoadingInitialData ||
(size > 0 && data && typeof data[size - 1] === "undefined");
const isEmpty = data?.[0]?.length === 0;
const isReachingEnd =
isEmpty ||
(data && data[data.length - 1].Records?.length < config.api.pageSize);
const details = (data || []).map((d) => d.Records).flat();
useDangerAlert(error, setAlert);
return (
<div>
<h3>Home</h3>
<ContactTable
data={details}
loading={!data && !error}
empty={<Empty />}
/>
<Button
variant="primary"
onClick={() => setSize(size + 1)}
disabled={isLoadingMore || isReachingEnd}
>
{isLoadingMore
? "Loading..."
: isReachingEnd
? "No more to load"
: "Load more"}
</Button>
</div>
);
}