import React from "react"; import { useChatIdFromIdentifierCertificate } from "../../../src/hooks/useChatIdFromIdentifierCertificate"; import { useChats } from "../../../src/hooks/useChats"; import { Button, Center, HStack, Image, Stack, Text, useBreakpoint, useColorModeValue, VStack, } from "@chakra-ui/react"; import { PublicKey } from "@solana/web3.js"; import { usePublicKey } from "@strata-foundation/react"; import { useRouter } from "next/router"; import { useMemo } from "react"; import { Carousel } from "react-responsive-carousel"; import "react-responsive-carousel/lib/styles/carousel.min.css"; // requires a loader import { route, routes } from "../../routes"; import { ActiveUsers } from "./ActiveUsers"; type Community = { name: string; description: string; publicKey: string; image: string; }; export const FEATURED_COMMUNITIES: Community[] = [ { name: "Solana Chat", description: "A place for the Solana community to unwind", publicKey: "EzNMGtFA62nvDfCybZi4vhfeJUoMJyMijcKoC8heoyHK", image: "https://solana.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Findex_low_cost.5dfdb6d1.png&w=2048&q=90", }, { name: "Taiyo Robotics", description: '"Trying out some innovative sh*t that may one day lead to web3 discord. What you’ve all cried about for so long!" - Tom', publicKey: "ExLKWwbRGzE8Cy2z1bWPCk7iKE9iFZeVYFUgxhVUe98h", image: "/Taiyo.jpg", }, { name: "Open Collective Chat", description: "Solana’s first decentralized art collective. Share, discover, and support 1:1 artists.", publicKey: "HN8GF8nKHLnymPUwn4cfNmtSwAcErRweDDDGzyhj6wKH", image: "/OC.jpg", }, ]; const Community = ({ identifierCertificateMint, name, description, dailyActiveUsers, image, }: { identifierCertificateMint?: string; name: string; description: string; dailyActiveUsers?: number; image: string; }) => { const mintKey = usePublicKey(identifierCertificateMint); const { chatId: id } = useChatIdFromIdentifierCertificate(mintKey); const router = useRouter(); const breakpoint = useBreakpoint(); return (
{name} {id}.chat {description} {typeof dailyActiveUsers !== "undefined" && ( )}{" "}
{name}
); }; const chatKeys = FEATURED_COMMUNITIES.map( ({ publicKey }) => new PublicKey(publicKey) ); export const FeaturedCommunities = () => { const { chats } = useChats(chatKeys, { minActiveUsers: 0, }); const chatsWithDescription = useMemo( () => FEATURED_COMMUNITIES.map((community) => ({ ...community, ...chats.find((chat) => chat.publicKey === community.publicKey), })), [chats] ); return ( // @ts-ignore {chatsWithDescription.map((chat) => ( ))} ); };