2023-01-19 04:41:44 -08:00
|
|
|
import React from "react";
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2023-01-19 04:41:44 -08:00
|
|
|
import { FiHeart, FiSearch } from "react-icons/fi";
|
|
|
|
import useSWR from "swr";
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2023-01-19 04:41:44 -08:00
|
|
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
2023-05-11 18:45:34 -07:00
|
|
|
import { useSelectedTags } from "../../../hooks/useSelectedTags";
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2023-01-19 04:41:44 -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 => {
|
2023-05-11 18:45:34 -07:00
|
|
|
const { siteConfig } = useDocusaurusContext();
|
2021-12-22 22:22:01 -08:00
|
|
|
|
2023-05-11 18:45:34 -07:00
|
|
|
const { data, error } = useSWR<Showcase[]>(
|
|
|
|
`${siteConfig.customFields.API_URL}/showcase`,
|
|
|
|
fetcher,
|
|
|
|
);
|
2021-12-22 22:22:01 -08:00
|
|
|
|
2023-05-11 18:45:34 -07:00
|
|
|
const selectedTags = useSelectedTags();
|
|
|
|
const filteredNetworks = useFilteredNetworks(data ?? []);
|
2021-11-30 02:46:31 -08:00
|
|
|
|
2023-05-11 18:45:34 -07:00
|
|
|
return (
|
|
|
|
<section className="margin-top--lg margin-bottom--xl">
|
|
|
|
{!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 === "Favorite"),
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<NetworkSection title="All networks" networks={data} />
|
|
|
|
</>
|
|
|
|
) : (
|
|
|
|
<NetworkSection
|
|
|
|
title="Results"
|
|
|
|
icon={<FiSearch />}
|
|
|
|
networks={filteredNetworks}
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
) : (
|
|
|
|
<div>{JSON.stringify(error)}</div>
|
|
|
|
)}
|
|
|
|
</section>
|
|
|
|
);
|
2021-11-30 02:46:31 -08:00
|
|
|
};
|