mirror of
https://github.com/owncast/owncast.git
synced 2024-12-20 16:24:16 +03:00
d1f3fffe2f
* refactor: move/rename BanUserButton file * refactor: move/rename Chart file * refactor: update generic component filenames to PascalCase * refactor: update config component filenames to PascalCase * refactor: update AdminLayout component filename to PascalCase * refactor: update/move VideoJS component * chore(eslint): disable bad react/require-default-props rule * refactor: normalize ActionButton component * refactor: normalize ActionButtonRow component * refactor: normalize FollowButton component * refactor: normalize NotifyButton component * refactor: normalize ChatActionMessage component * refactor: normalize ChatContainer component * refactor: normalize ChatJoinMessage component * refactor: normalize ChatModerationActionMenu component * refactor: normalize ChatModerationDetailsModal component * refactor: normalize ChatModeratorNotification component * refactor: normalize ChatSocialMessage component * refactor: normalize ChatSystemMessage component * refactor: normalize ChatTextField component * refactor: normalize ChatUserBadge component * refactor: normalize ChatUserMessage component * refactor: normalize ContentHeader component * refactor: normalize OwncastLogo component * refactor: normalize UserDropdown component * chore(eslint): modify react/function-component-definition rule * refactor: normalize CodecSelector component * refactor: update a bunch of functional components using eslint * refactor: update a bunch of functional components using eslint, pt2 * refactor: update a bunch of functional components using eslint, pt3 * refactor: replace all component->component default imports with named imports * refactor: replace all component-stories->component default imports with named imports * refactor: remove default exports from most components * chore(eslint): add eslint config files for the components and pages dirs * fix: use-before-define error in ChatContainer * Fix ChatContainer import * Only process .tsx files in Next builds Co-authored-by: Gabe Kangas <gabek@real-ity.com>
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { FC, useEffect, useState } from 'react';
|
|
import { Col, Pagination, Row } from 'antd';
|
|
import { Follower } from '../../../../interfaces/follower';
|
|
import { SingleFollower } from '../SingleFollower/SingleFollower';
|
|
import styles from '../SingleFollower/SingleFollower.module.scss';
|
|
|
|
export const FollowerCollection: FC = () => {
|
|
const ENDPOINT = '/api/followers';
|
|
const ITEMS_PER_PAGE = 24;
|
|
|
|
const [followers, setFollowers] = useState<Follower[]>([]);
|
|
const [total, setTotal] = useState(0);
|
|
const [page, setPage] = useState(1);
|
|
const pages = Math.ceil(total / ITEMS_PER_PAGE);
|
|
|
|
const getFollowers = async () => {
|
|
try {
|
|
const response = await fetch(`${ENDPOINT}?page=${page}`);
|
|
const data = await response.json();
|
|
|
|
setFollowers(data.response);
|
|
setTotal(data.total);
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
};
|
|
|
|
useEffect(() => {
|
|
getFollowers();
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
getFollowers();
|
|
}, [page]);
|
|
|
|
const noFollowers = (
|
|
<div>A message explaining how to follow goes here since there are no followers.</div>
|
|
);
|
|
|
|
if (!followers?.length) {
|
|
return noFollowers;
|
|
}
|
|
|
|
return (
|
|
<div className={styles.followers}>
|
|
<Row wrap gutter={[10, 10]} justify="space-around">
|
|
{followers.map(follower => (
|
|
<Col>
|
|
<SingleFollower key={follower.link} follower={follower} />
|
|
</Col>
|
|
))}
|
|
</Row>
|
|
|
|
<Pagination
|
|
current={page}
|
|
pageSize={ITEMS_PER_PAGE}
|
|
total={pages || 1}
|
|
onChange={p => {
|
|
setPage(p);
|
|
}}
|
|
hideOnSinglePage
|
|
/>
|
|
</div>
|
|
);
|
|
};
|