import { useEffect, useState } from 'react'; import { useAccountComment } from '@plebbit/plebbit-react-hooks'; import { Link, useLocation, useNavigate, useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { isAllView, isCatalogView, isSubscriptionsView } from '../../lib/utils/view-utils'; import styles from './board-nav.module.css'; import useDefaultSubplebbits, { categorizeSubplebbits, useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; import { debounce } from 'lodash'; const BoardNavDesktop = () => { const { t } = useTranslation(); const location = useLocation(); const isInCatalogView = isCatalogView(location.pathname); const subplebbits = useDefaultSubplebbits(); const { plebbitSubs, interestsSubs, randomSubs, internationalSubs, projectsSubs } = categorizeSubplebbits(subplebbits); const renderSubplebbits = (subplebbits: any) => { return subplebbits.map((sub: any, index: any) => ( {index === 0 ? null : ' '} {sub.address.includes('.') ? sub.address : sub.address.slice(0, 10).concat('...')} {index !== subplebbits.length - 1 ? ' /' : null} )); }; return (
[all / subscriptions] [{renderSubplebbits(plebbitSubs)}] [{renderSubplebbits(projectsSubs)}] [ {renderSubplebbits(interestsSubs)}] [{renderSubplebbits(randomSubs)}] [{renderSubplebbits(internationalSubs)}] [{t('settings')}] [{t('home')} ]
); }; const BoardNavMobile = ({ subplebbitAddress }: { subplebbitAddress: string }) => { const { t } = useTranslation(); const navigate = useNavigate(); const subplebbitAddresses = useDefaultSubplebbitAddresses(); const displaySubplebbitAddress = subplebbitAddress && subplebbitAddress.length > 30 ? subplebbitAddress.slice(0, 30).concat('...') : subplebbitAddress; const currentSubplebbitIsInList = subplebbitAddresses.some((address: string) => address === subplebbitAddress); const location = useLocation(); const isInAllView = isAllView(location.pathname); const isInCatalogView = isCatalogView(location.pathname); const isInSubscriptionsView = isSubscriptionsView(location.pathname); const selectValue = isInAllView ? 'all' : isInSubscriptionsView ? 'subscriptions' : subplebbitAddress; const boardSelect = ( ); // navbar animation on scroll const [prevScrollPos, setPrevScrollPos] = useState(0); const [visible, setVisible] = useState(true); useEffect(() => { const debouncedHandleScroll = debounce(() => { const currentScrollPos = window.scrollY; setVisible(prevScrollPos > currentScrollPos || currentScrollPos < 10); setPrevScrollPos(currentScrollPos); }, 50); window.addEventListener('scroll', debouncedHandleScroll); return () => window.removeEventListener('scroll', debouncedHandleScroll); }, [prevScrollPos, visible]); return ( ); }; const BoardNav = () => { const params = useParams(); const accountComment = useAccountComment({ commentIndex: params?.accountCommentIndex as any }); const subplebbitAddress = params?.subplebbitAddress || accountComment?.subplebbitAddress; return ( <> ); }; export default BoardNav;