import { Avatar, Box, Button, HStack, Link, Text } from "@chakra-ui/react";
import { MetadataData } from "@metaplex-foundation/mpl-token-metadata";
import { PublicKey } from "@solana/web3.js";
import { ITokenRef } from "@strata-foundation/spl-token-collective";
import { useSocialTokenMetadata } from "../hooks/useSocialTokenMetadata";
import { useErrorHandler } from "../hooks/useErrorHandler";
import React from "react";
import { useReverseName } from "../hooks/nameService";
import { useGovernance } from "../hooks/useGovernance";
export const WUMBO_TWITTER_VERIFIER = new PublicKey(
"DTok7pfUzNeNPqU3Q6foySCezPQE82eRyhX1HdhVNLVC"
);
export const WUMBO_TWITTER_TLD = new PublicKey(
"Fhqd3ostRQQE65hzoA7xFMgT9kge2qPnsTNAKuL2yrnx"
);
// export const WUMBO_TWITTER_VERIFIER = new PublicKey(
// "GibysS6yTqHWw4AZap416Xs26rAo9nV9HTRviKuutytp"
// );
// export const WUMBO_TWITTER_TLD = new PublicKey(
// "EEbZHaBD4mreYS6enRqytXvXfmRESLWXXrXbtZLWyd6X"
// );
export const truncatePubkey = (pkey: PublicKey): string => {
const pkeyStr = pkey.toString();
return `${pkeyStr.substr(0, 4)}...${pkeyStr.substr(pkeyStr.length - 4)}`;
};
export type OnCreatorClick = (
c: PublicKey,
t: MetadataData | undefined,
b: ITokenRef | undefined,
h: string | undefined
) => void;
export const Creator = React.memo(
({
creator,
onClick
}: {
creator: PublicKey;
onClick: OnCreatorClick;
}) => {
const { handleErrors } = useErrorHandler();
const { metadata, tokenRef, error, image } =
useSocialTokenMetadata(creator);
const { nameString: handle, error: reverseTwitterError2 } = useReverseName(
creator,
WUMBO_TWITTER_VERIFIER,
WUMBO_TWITTER_TLD
);
handleErrors(error, reverseTwitterError2);
const { info: governance } = useGovernance(creator);
const children = (
<>
{metadata && (
{metadata.data.name}
)}
{!metadata && !handle && truncatePubkey(creator)}
{!metadata && handle && `@${handle}`}
>
);
if (governance) {
{children}
;
}
return (
{
e.preventDefault();
e.stopPropagation();
onClick(creator, metadata, tokenRef, handle)
}}
>
{children}
);
}
);