import React from 'react'; import styles from './styles.module.css'; import MarketplaceCard from '../MarketplaceCard'; import Modal from 'react-modal'; import useBaseUrl from '@docusaurus/useBaseUrl'; import BounceLoader from 'react-spinners/BounceLoader'; import { getMarketplacePosts, getMarketplaceTopic, getMarketplaceTopicRaw, } from '../../../services/DiscourseService'; import MarketplaceCardDetail from '../MarketplaceCardDetail'; export default function MarketplaceCards({filterCallback}) { const [cardData, setCardData] = React.useState(); const [detailsOpen, setDetailsOpen] = React.useState(false); const [details, setDetails] = React.useState(''); const [loadingCards, setLoadingCards] = React.useState(true); const getPosts = async () => { const data = await getMarketplacePosts(filterCallback.join(',')); const resultset = []; if (data.topics) { for (const topic of data.topics) { resultset.push(await getPostList(topic)); } setCardData(resultset); } else { setCardData(undefined); } setLoadingCards(false); }; const getDetails = async (data) => { const raw = await getMarketplaceTopicRaw(data.id); setDetails({data: data, raw: raw}); }; // callback that gets called when clicking on a card const openDialog = (data) => { setDetails({data: undefined, raw: undefined}); getDetails(data); setDetailsOpen(true); }; React.useEffect(() => {}, [detailsOpen, details]); Modal.setAppElement('#__docusaurus'); React.useEffect(() => { getPosts(); setCardData(undefined); setLoadingCards(true); }, [filterCallback]); const xImage = useBaseUrl('/icons/circle-xmark-regular.svg') if (cardData) { return (