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}
{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) => (
))}
);
};