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

53 lines
1.5 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";
import { useSelectedTags } from "@site/src/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 => {
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`,
2023-01-19 04:41:44 -08:00
fetcher
2021-12-22 06:42:57 -08:00
);
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 23:05:23 -08:00
{!error ? (
2021-12-22 06:42:57 -08:00
selectedTags.length === 0 ? (
<>
<NetworkSection
title="Our favorites"
icon={<FiHeart />}
iconColor="rgb(190 24 93)"
2021-12-22 23:05:23 -08:00
networks={data?.filter((network) =>
2023-01-19 04:41:44 -08:00
network.tags.find((tag) => tag.label === "Favorite")
2021-12-22 06:42:57 -08:00
)}
/>
<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
)
2021-12-22 23:05:23 -08:00
) : (
<div>{JSON.stringify(error)}</div>
2021-11-30 02:46:31 -08:00
)}
</section>
);
};