import { useLayoutEffect, useState } from 'react'; import { useLocation } from 'react-router-dom'; import BackendError from '../../components/BackendError' import { Loader } from '../../components/Common/Loader' import { useAuth } from '../../context/AuthContext'; import { useLibrary } from '../../context/LibraryContext'; import { useNavSearch } from '../../context/NavSearchContext'; import { ILibraryFilter, IRSFormMeta } from '../../utils/models'; import ViewLibrary from './ViewLibrary'; function LibraryPage() { const search = useLocation().search; const { query, resetQuery: cleanQuery } = useNavSearch(); const { user } = useAuth(); const library = useLibrary(); const [ filterParams, setFilterParams ] = useState({}); const [ items, setItems ] = useState([]); useLayoutEffect(() => { const filterType = new URLSearchParams(search).get('filter'); if (filterType === 'common') { cleanQuery(); setFilterParams({ is_common: true }); } else if (filterType === 'personal' && user) { cleanQuery(); setFilterParams({ ownedBy: user.id! }); } }, [user, search, cleanQuery]); useLayoutEffect(() => { const filter = filterParams; filterParams.queryMeta = query ? query: undefined; setItems(library.filter(filter)); }, [query, library, filterParams]); return (
{ library.loading && } { library.error && } { !library.loading && library.items && }
); } export default LibraryPage;