meshtastic/src/pages/showcase/_components/Networks.tsx

53 lines
1.4 KiB
TypeScript
Raw Normal View History

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
};