import { useCategories } from '@library/hooks/useCategories'; import { useCacheStore } from '@library/state/cache'; import { useSiteSettingsStore } from '@library/state/site'; import { PanelBody, PanelRow, Spinner } from '@wordpress/components'; import { useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import classNames from 'classnames'; export const CategoryControl = () => { const { category, setCategory } = useSiteSettingsStore(); const { data, isLoading, errorCount } = useCategories(); const { categories, setCategories } = useCacheStore(); useEffect(() => { if (isLoading || errorCount) return; setCategories(data); }, [data, isLoading, setCategories, errorCount]); useEffect(() => { if (!categories?.length || category) return; setCategory('all'); }, [category, setCategory, categories]); return ( ); }; const CategoryList = ({ categories, errorCount, current, setCurrent }) => { const classes = (slug) => classNames( 'text-sm w-full text-left rtl:text-right px-3 py-1 mb-0.5 block rounded', { 'bg-design-main text-design-text': current === slug, 'bg-transparent text-gray-900 hover:bg-gray-100': current !== slug, }, ); // If we have categories, return early no matter the error if (categories?.length) { return ( ); } if (errorCount > 1) { return (
{__('Retrying...', 'extendify-local')}
); } return (
{__('Fetching...', 'extendify-local')}
); };