From 11faa1a25da57d5d92c54804ee70035b61392df2 Mon Sep 17 00:00:00 2001 From: Tony D'Addeo Date: Wed, 18 Dec 2024 17:30:17 -0600 Subject: [PATCH] handle sign in rejection --- src/components/Demo.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/components/Demo.tsx b/src/components/Demo.tsx index 8de22ae..46cebce 100644 --- a/src/components/Demo.tsx +++ b/src/components/Demo.tsx @@ -24,6 +24,7 @@ import { truncateAddress } from "~/lib/truncateAddress"; import { base, optimism } from "wagmi/chains"; import { BaseError, UserRejectedRequestError } from "viem"; import { useSession } from "next-auth/react" +import { SignIn as SignInCore } from "@farcaster/frame-core"; import { SignInResult } from "@farcaster/frame-core/dist/actions/signIn"; export default function Demo( @@ -546,6 +547,7 @@ function SignIn() { const [signingIn, setSigningIn] = useState(false); const [signingOut, setSigningOut] = useState(false); const [signInResult, setSignInResult] = useState(); + const [signInFailure, setSignInFailure] = useState(); const { data: session, status } = useSession() const getNonce = useCallback(async () => { @@ -557,6 +559,7 @@ function SignIn() { const handleSignIn = useCallback(async () => { try { setSigningIn(true); + setSignInFailure(undefined); const nonce = await getNonce(); const result = await sdk.actions.signIn({ nonce }); setSignInResult(result); @@ -566,6 +569,13 @@ function SignIn() { signature: result.signature, redirect: false, }); + } catch (e) { + if (e instanceof SignInCore.RejectedByUser) { + setSignInFailure("Rejected by user"); + return; + } + + setSignInFailure("Unknown error"); } finally { setSigningIn(false); } @@ -605,6 +615,12 @@ function SignIn() {
{JSON.stringify(session, null, 2)}
} + {signInFailure && !signingIn && ( +
+
SIWF Result
+
{signInFailure}
+
+ )} {signInResult && !signingIn && (
SIWF Result