import React, {useMemo} from "react"; import { useChatIdFromIdentifierCertificate } from "../../../src/hooks/useChatIdFromIdentifierCertificate"; import { GraphChat, useChats } from "../../../src/hooks/useChats"; import { Button, HStack, Image, SimpleGrid, Stack, Text, useColorModeValue, VStack, } from "@chakra-ui/react"; import { usePublicKey } from "@strata-foundation/react"; import { useRouter } from "next/router"; import { route, routes } from "../../routes"; import { ActiveUsers } from "./ActiveUsers"; import { FEATURED_COMMUNITIES } from "./FeaturedCommunities"; import { useAsync } from "react-async-hook"; import { IMetadataExtension, SplTokenMetadata } from "@strata-foundation/spl-utils"; const Community = ({ imageUrl, name, metadataUrl, identifierCertificateMint, dailyActiveUsers, }: GraphChat) => { const mintKey = usePublicKey(identifierCertificateMint); const { chatId: id } = useChatIdFromIdentifierCertificate(mintKey); const router = useRouter(); const { result: data, }: {result: IMetadataExtension | undefined} = useAsync(SplTokenMetadata.getArweaveMetadata, [metadataUrl]); const description = useMemo(() => { const truncateLength = 100; if (!data?.description) return undefined; if (data.description.length > truncateLength) { return data.description.slice(0, truncateLength) + "..."; } return data.description; }, [data]) return ( {name} {name} {id}.chat {description} {typeof dailyActiveUsers !== "undefined" && ( )} ); }; const featuredKeys = new Set(FEATURED_COMMUNITIES.map((c) => c.publicKey)); export const NewCommunities = () => { const { chats } = useChats(); if (chats.length == 0) return null; return ( BE A PART OF SOMETHING New Communities Join one of the already existing communities and begin chatting with your peers! {chats .filter((chat) => !featuredKeys.has(chat.publicKey)) .map((chat: GraphChat) => ( ))} ); };