import UserContext from '@/contexts/UserContext'; import { FC, useContext, MutableRefObject, useRef } from 'react'; import { FaArrowUp } from 'react-icons/fa'; import { useInView } from 'react-intersection-observer'; import useBreweryPostsByUser from '@/hooks/data-fetching/brewery-posts/useBreweryPostsByUser'; import LoadingCard from '../ui/LoadingCard'; import Spinner from '../ui/Spinner'; import BreweryCard from '../BreweryIndex/BreweryCard'; const BreweryPostsByUser: FC = () => { const { user } = useContext(UserContext); const pageRef: MutableRefObject = useRef(null); const PAGE_SIZE = 2; const { breweryPosts, setSize, size, isLoading, isLoadingMore, isAtEnd } = useBreweryPostsByUser({ pageSize: PAGE_SIZE, userId: user!.id }); const { ref: lastBreweryPostRef } = useInView({ onChange: (visible) => { if (!visible || isAtEnd) return; setSize(size + 1); }, }); return (
{!!breweryPosts.length && !isLoading && ( <> {breweryPosts.map((breweryPost, i) => { return (
); })} )} {isLoadingMore && ( <> {Array.from({ length: PAGE_SIZE }, (_, i) => ( ))} )}
{(isLoading || isLoadingMore) && (
)} {!!breweryPosts.length && isAtEnd && !isLoading && (
)} {!breweryPosts.length && !isLoading && (

No posts yet.

)}
); }; export default BreweryPostsByUser;