import debounce from 'lodash/debounce'; import React from 'react'; import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; import { useDispatch } from 'react-redux'; import { fetchDomainBlocks, expandDomainBlocks } from 'soapbox/actions/domain-blocks'; import Domain from 'soapbox/components/domain'; import ScrollableList from 'soapbox/components/scrollable-list'; import { Spinner } from 'soapbox/components/ui'; import { useAppSelector } from 'soapbox/hooks'; import Column from '../ui/components/column'; const messages = defineMessages({ heading: { id: 'column.domain_blocks', defaultMessage: 'Hidden domains' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' }, }); const handleLoadMore = debounce((dispatch) => { dispatch(expandDomainBlocks()); }, 300, { leading: true }); const DomainBlocks: React.FC = () => { const dispatch = useDispatch(); const intl = useIntl(); const domains = useAppSelector((state) => state.domain_lists.blocks.items); const hasMore = useAppSelector((state) => !!state.domain_lists.blocks.next); React.useEffect(() => { dispatch(fetchDomainBlocks()); }, []); if (!domains) { return ( ); } const emptyMessage = ; return ( handleLoadMore(dispatch)} hasMore={hasMore} emptyMessage={emptyMessage} className='divide-y divide-gray-200 dark:divide-gray-800' > {['gab.com', 'gab.ai'].map((domain) => , )} ); }; export default DomainBlocks;