mirror of
https://github.com/neynarxyz/create-farcaster-mini-app.git
synced 2025-11-16 08:08:56 -05:00
handle sign in rejection
This commit is contained in:
parent
0474228955
commit
11faa1a25d
@ -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<SignInResult>();
|
||||
const [signInFailure, setSignInFailure] = useState<string>();
|
||||
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() {
|
||||
<div className="whitespace-pre">{JSON.stringify(session, null, 2)}</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 && (
|
||||
<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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user