import { FC, useEffect, useState } from 'react'; import { Col, Pagination, Row, Skeleton } from 'antd'; import { Follower } from '../../../../interfaces/follower'; import { SingleFollower } from '../SingleFollower/SingleFollower'; import styles from './FollowerCollection.module.scss'; import { FollowButton } from '../../../action-buttons/FollowButton'; export type FollowerCollectionProps = { name: string; onFollowButtonClick: () => void; }; export const FollowerCollection: FC = ({ name, onFollowButtonClick }) => { const ENDPOINT = '/api/followers'; const ITEMS_PER_PAGE = 24; const [followers, setFollowers] = useState([]); const [total, setTotal] = useState(0); const [page, setPage] = useState(1); const [loading, setLoading] = useState(true); const pages = Math.ceil(total / ITEMS_PER_PAGE); const getFollowers = async () => { try { const response = await fetch(`${ENDPOINT}?page=${page}`); const data = await response.json(); const { results, total: totalResults } = data; setFollowers(results); setTotal(totalResults); } catch (error) { console.error(error); } }; useEffect(() => { getFollowers(); }, []); useEffect(() => { getFollowers(); }, [page]); useEffect(() => { setLoading(false); }, [followers]); const noFollowers = (

Be the first follower!

{name !== 'Owncast' ? name : 'This server'} is a part of the{' '} Fediverse, an interconnected network of independent users and servers.

By following {name !== 'Owncast' ? name : 'this server'} you'll be able to get updates from the stream, share it with others, and and show your appreciation when it goes live, all from your own Fediverse account.

); const loadingSkeleton = ; if (loading) { return loadingSkeleton; } if (!followers?.length) { return noFollowers; } return (
{followers.map(follower => ( ))} { setPage(p); }} hideOnSinglePage />
); };