2021-11-30 02:46:31 -08:00
|
|
|
import React from 'react';
|
|
|
|
|
|
|
|
import { FiHeart, FiSearch } from 'react-icons/fi';
|
2021-12-22 22:22:01 -08:00
|
|
|
import JSONPretty from 'react-json-pretty';
|
2021-12-22 06:42:57 -08:00
|
|
|
import useSWR from 'swr';
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2021-12-22 22:22:01 -08:00
|
|
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
2021-12-22 06:42:57 -08:00
|
|
|
import { useSelectedTags } from '@site/src/hooks/useSelectedTags';
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2021-12-22 06:42:57 -08:00
|
|
|
import { useFilteredNetworks } from '../../../hooks/useFilteredNetworks';
|
|
|
|
import { Showcase } from '../../../utils/apiTypes';
|
|
|
|
import { fetcher } from '../../../utils/swr';
|
|
|
|
import { NetworkSection } from './NetworkSection';
|
2021-11-30 02:46:31 -08:00
|
|
|
|
|
|
|
export const Networks = (): JSX.Element => {
|
2021-12-22 22:22:01 -08:00
|
|
|
const { siteConfig } = useDocusaurusContext();
|
|
|
|
|
2021-12-22 06:42:57 -08:00
|
|
|
const { data, error } = useSWR<Showcase[]>(
|
2021-12-22 22:22:01 -08:00
|
|
|
`${siteConfig.customFields.API_URL}/showcase`,
|
2021-12-22 06:42:57 -08:00
|
|
|
fetcher
|
|
|
|
);
|
2021-12-22 22:22:01 -08:00
|
|
|
|
2021-11-30 02:46:31 -08:00
|
|
|
const selectedTags = useSelectedTags();
|
2021-12-22 06:42:57 -08:00
|
|
|
const filteredNetworks = useFilteredNetworks(data ?? []);
|
2021-11-30 02:46:31 -08:00
|
|
|
|
|
|
|
return (
|
|
|
|
<section className="margin-top--lg margin-bottom--xl">
|
2021-12-22 06:42:57 -08:00
|
|
|
{data && !error ? (
|
|
|
|
selectedTags.length === 0 ? (
|
|
|
|
<>
|
|
|
|
<NetworkSection
|
|
|
|
title="Our favorites"
|
|
|
|
icon={<FiHeart />}
|
|
|
|
iconColor="rgb(190 24 93)"
|
|
|
|
networks={data.filter((network) =>
|
|
|
|
network.tags.find((tag) => tag.label === "Favourite")
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<NetworkSection title="All networks" networks={data} />
|
|
|
|
</>
|
|
|
|
) : (
|
2021-11-30 02:46:31 -08:00
|
|
|
<NetworkSection
|
2021-12-22 06:42:57 -08:00
|
|
|
title="Results"
|
|
|
|
icon={<FiSearch />}
|
|
|
|
networks={filteredNetworks}
|
2021-11-30 02:46:31 -08:00
|
|
|
/>
|
2021-12-22 06:42:57 -08:00
|
|
|
)
|
|
|
|
) : error ? (
|
2021-12-22 22:22:01 -08:00
|
|
|
<div>
|
|
|
|
<JSONPretty data={error} />
|
|
|
|
</div>
|
2021-11-30 02:46:31 -08:00
|
|
|
) : (
|
2021-12-22 06:42:57 -08:00
|
|
|
<div>Loading...</div>
|
2021-11-30 02:46:31 -08:00
|
|
|
)}
|
|
|
|
</section>
|
|
|
|
);
|
|
|
|
};
|