import { useState } from "react"; import useSWR from "swr"; import { useMedia } from "react-use"; import theme from "../../lib/theme"; import { ContainerLoadingIndicator } from "../LoadingIndicator"; import FileTable from "./FileTable"; import useFormattedFilesData from "./useFormattedFilesData"; import { MobileFileList } from "./MobileFileList"; import { Pagination } from "./Pagination"; const PAGE_SIZE = 10; const FileList = ({ type }) => { const isMediumScreenOrLarger = useMedia(`(min-width: ${theme.screens.md})`); const [offset, setOffset] = useState(0); const baseUrl = `user/${type}?pageSize=${PAGE_SIZE}`; const { data, error, mutate: refreshList, } = useSWR(`${baseUrl}&offset=${offset}`, { revalidateOnMount: true, }); const items = useFormattedFilesData(data?.items || []); const count = data?.count || 0; // Next page preloading const hasMoreRecords = data ? data.offset + data.pageSize < data.count : false; const nextPageOffset = hasMoreRecords ? data.offset + data.pageSize : offset; useSWR(`${baseUrl}&offset=${nextPageOffset}`); if (!items.length) { return (
{!data && !error && } {!data && error &&

An error occurred while loading this data.

} {data &&

No {type} found.

}
); } return ( <> {isMediumScreenOrLarger ? ( ) : ( )} ); }; export default FileList;