import { useState } from 'react'; import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import Plebbit from '@plebbit/plebbit-js'; import { useDefaultSubplebbitsState, MultisubSubplebbit } from '../../../hooks/use-default-subplebbits'; import useIsMobile from '../../../hooks/use-is-mobile'; import LoadingEllipsis from '../../../components/loading-ellipsis'; import styles from './boards-list.module.css'; const Board = ({ subplebbit, isMobile }: { subplebbit: MultisubSubplebbit; isMobile: boolean }) => { const { t } = useTranslation(); const { address, title, nsfw } = subplebbit || {}; const boardTitle = title?.replace(/^\/[^/]+\/\s*-\s*/, '') || ''; const displayAddress = address && Plebbit.getShortAddress(address); return (

{displayAddress} {nsfw && ({t('nsfw')})}

{boardTitle || displayAddress}

); }; const BoardsList = ({ multisub }: { multisub: MultisubSubplebbit[] }) => { const { t } = useTranslation(); const [displayCount, setDisplayCount] = useState(15); const isMobile = useIsMobile(); const { loading, error } = useDefaultSubplebbitsState(); if (loading) { return (
); } if (error) { return (
{error.message}
); } const filteredBoards = multisub.slice(0, displayCount); const totalBoardCount = multisub.length; const hasMoreBoards = displayCount < multisub.length; return (
{filteredBoards.map((sub) => ( ))}
{t('board')} {t('title')}
{t('displaying_boards', { filteredBoardsCount: filteredBoards.length, totalBoardCount: totalBoardCount, interpolation: { escapeValue: false } })}
{hasMoreBoards && (
[ setDisplayCount((prevCount) => prevCount + 15)}>{t('load_more')}]
)}
); }; export default BoardsList;