handle sign in rejection

This commit is contained in:
Tony D'Addeo 2024-12-18 17:30:17 -06:00 committed by lucas-neynar
parent 0474228955
commit 11faa1a25d
No known key found for this signature in database

View File

@ -24,6 +24,7 @@ import { truncateAddress } from "~/lib/truncateAddress";
import { base, optimism } from "wagmi/chains"; import { base, optimism } from "wagmi/chains";
import { BaseError, UserRejectedRequestError } from "viem"; import { BaseError, UserRejectedRequestError } from "viem";
import { useSession } from "next-auth/react" import { useSession } from "next-auth/react"
import { SignIn as SignInCore } from "@farcaster/frame-core";
import { SignInResult } from "@farcaster/frame-core/dist/actions/signIn"; import { SignInResult } from "@farcaster/frame-core/dist/actions/signIn";
export default function Demo( export default function Demo(
@ -546,6 +547,7 @@ function SignIn() {
const [signingIn, setSigningIn] = useState(false); const [signingIn, setSigningIn] = useState(false);
const [signingOut, setSigningOut] = useState(false); const [signingOut, setSigningOut] = useState(false);
const [signInResult, setSignInResult] = useState<SignInResult>(); const [signInResult, setSignInResult] = useState<SignInResult>();
const [signInFailure, setSignInFailure] = useState<string>();
const { data: session, status } = useSession() const { data: session, status } = useSession()
const getNonce = useCallback(async () => { const getNonce = useCallback(async () => {
@ -557,6 +559,7 @@ function SignIn() {
const handleSignIn = useCallback(async () => { const handleSignIn = useCallback(async () => {
try { try {
setSigningIn(true); setSigningIn(true);
setSignInFailure(undefined);
const nonce = await getNonce(); const nonce = await getNonce();
const result = await sdk.actions.signIn({ nonce }); const result = await sdk.actions.signIn({ nonce });
setSignInResult(result); setSignInResult(result);
@ -566,6 +569,13 @@ function SignIn() {
signature: result.signature, signature: result.signature,
redirect: false, redirect: false,
}); });
} catch (e) {
if (e instanceof SignInCore.RejectedByUser) {
setSignInFailure("Rejected by user");
return;
}
setSignInFailure("Unknown error");
} finally { } finally {
setSigningIn(false); setSigningIn(false);
} }
@ -605,6 +615,12 @@ function SignIn() {
<div className="whitespace-pre">{JSON.stringify(session, null, 2)}</div> <div className="whitespace-pre">{JSON.stringify(session, null, 2)}</div>
</div> </div>
} }
{signInFailure && !signingIn && (
<div className="my-2 p-2 text-xs overflow-x-scroll bg-gray-100 rounded-lg font-mono">
<div className="font-semibold text-gray-500 mb-1">SIWF Result</div>
<div className="whitespace-pre">{signInFailure}</div>
</div>
)}
{signInResult && !signingIn && ( {signInResult && !signingIn && (
<div className="my-2 p-2 text-xs overflow-x-scroll bg-gray-100 rounded-lg font-mono"> <div className="my-2 p-2 text-xs overflow-x-scroll bg-gray-100 rounded-lg font-mono">
<div className="font-semibold text-gray-500 mb-1">SIWF Result</div> <div className="font-semibold text-gray-500 mb-1">SIWF Result</div>