import { Stack, Text } from '@mantine/core'; import { useCommonHooks, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { textClasses } from 'styles'; import type { Bookmark, BookmarkGroup } from 'types'; import LinkGroups from './LinkGroups'; function Links({ contentType }: { contentType: [string] }) { const { data: linkData, isFetched: linksIsFetched } = useQueryAPI({ endpoint: 'api/links', }); const { data: groupData, isFetched: groupsIsFetched } = useQueryAPI({ endpoint: 'api/categories', }); const { isMobile, bookmarkSort, bookmarkDensity } = useCommonHooks(); const [bookmarkData, setBookmarkData] = useState([]); const [groups, setGroups] = useState([]); useEffect(() => { if (linkData && linksIsFetched) { setBookmarkData(linkData); } }, [linksIsFetched, linkData]); useEffect(() => { if (groupData && groupsIsFetched) { const groupList = groupData?.map((category: BookmarkGroup) => { return category; }); setGroups( groupList.sort((a: any, b: any) => { switch (bookmarkSort) { case 'A>Z': return a.categoryName > b.categoryName ? 1 : -1; case 'Z>A': return a.categoryName < b.categoryName ? 1 : -1; case 'Newest': return a.id < b.id ? 1 : -1; case 'Oldest': return a.id > b.id ? 1 : -1; case 'Custom': return a.index > b.index ? 1 : -1; } }), ); } }, [groupData, groupsIsFetched, bookmarkSort]); return ( <> {groupsIsFetched && linksIsFetched && groups?.length > 0 && contentType.length > 0 && ( Bookmarks {groups ?.filter( (category: BookmarkGroup) => contentType.includes(category.filterName) || contentType.includes('All'), ) .map((category: BookmarkGroup) => { return ( bookmark.category === category.categoryName, )} /> ); })} )} ); } export default Links;