mirror of
https://github.com/neynarxyz/create-farcaster-mini-app.git
synced 2025-11-16 16:18:55 -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 { 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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user