import { ERRORS } from "@hey/data/errors"; import { useAuthenticateMutation, useChallengeMutation } from "@hey/indexer"; import type { ApolloClientError } from "@hey/types/errors"; import { useCallback, useState } from "react"; import { toast } from "sonner"; import { useAccount, useSignMessage } from "wagmi"; import BackButton from "@/components/Shared/BackButton"; import { Button, Card, CardHeader, H6 } from "@/components/Shared/UI"; import errorToast from "@/helpers/errorToast"; import useCopyToClipboard from "@/hooks/useCopyToClipboard"; import useHandleWrongNetwork from "@/hooks/useHandleWrongNetwork"; import { hydrateAuthTokens } from "@/store/persisted/useAuthStore"; const Tokens = () => { const { accessToken, refreshToken } = hydrateAuthTokens(); const [builderToken, setBuilderToken] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const copyAccessToken = useCopyToClipboard( accessToken as string, "Copied to clipboard" ); const copyRefreshToken = useCopyToClipboard( refreshToken as string, "Copied to clipboard" ); const copyBuilderToken = useCopyToClipboard( builderToken ?? "", "Copied to clipboard" ); const { address } = useAccount(); const handleWrongNetwork = useHandleWrongNetwork(); const onError = useCallback((error: ApolloClientError) => { setIsSubmitting(false); errorToast(error); }, []); const { signMessageAsync } = useSignMessage({ mutation: { onError } }); const [loadChallenge] = useChallengeMutation(); const [authenticate] = useAuthenticateMutation(); const handleGenerateBuilderToken = async () => { try { setIsSubmitting(true); await handleWrongNetwork(); const challenge = await loadChallenge({ variables: { request: { builder: { address } } } }); if (!challenge?.data?.challenge?.text) { return toast.error(ERRORS.SomethingWentWrong); } // Get signature const signature = await signMessageAsync({ message: challenge?.data?.challenge?.text }); // Auth account const auth = await authenticate({ variables: { request: { id: challenge.data.challenge.id, signature } } }); if (auth.data?.authenticate.__typename === "AuthenticationTokens") { setBuilderToken(auth.data?.authenticate.accessToken); } } catch (error) { errorToast(error); } finally { setIsSubmitting(false); } }; return ( } title="Your temporary access token" />
Your temporary access token
Your temporary refresh token
Your temporary builder token {builderToken && ( )}
); }; export default Tokens;