UNPKG

@frak-labs/react-sdk

Version:

React SDK of the Frak wallet, low level library to interact directly with the frak ecosystem.

67 lines (61 loc) 2.41 kB
import type { SiweAuthenticateReturnType } from "@frak-labs/core-sdk"; import { type SiweAuthenticateModalParams, siweAuthenticate, } from "@frak-labs/core-sdk/actions"; import { ClientNotFound, type FrakRpcError } from "@frak-labs/frame-connector"; import { type UseMutationOptions, useMutation } from "@tanstack/react-query"; import { useFrakClient } from "./useFrakClient"; /** @inline */ type MutationOptions = Omit< UseMutationOptions< SiweAuthenticateReturnType, FrakRpcError, SiweAuthenticateModalParams >, "mutationFn" | "mutationKey" >; /** @ignore */ interface UseSiweAuthenticateParams { /** * Optional mutation options, see {@link @tanstack/react-query!useMutation | `useMutation()`} for more infos */ mutations?: MutationOptions; } /** * Hook that return a mutation helping to send perform a SIWE authentication * * It's a {@link @tanstack/react-query!home | `tanstack`} wrapper around the {@link @frak-labs/core-sdk!actions.siweAuthenticate | `siweAuthenticate()`} action * * @param args - Optional config object with `mutations` for customizing the underlying {@link @tanstack/react-query!useMutation | `useMutation()`} * * @group hooks * * @returns * The mutation hook wrapping the `siweAuthenticate()` action * The `mutate` and `mutateAsync` argument is of type {@link @frak-labs/core-sdk!actions.SiweAuthenticateModalParams | `SiweAuthenticateModalParams`} * The `data` result is a {@link @frak-labs/core-sdk!index.SiweAuthenticateReturnType | `SiweAuthenticateReturnType`} * * @see {@link @frak-labs/core-sdk!actions.siweAuthenticate | `siweAuthenticate()`} for more info about the underlying action * @see {@link @tanstack/react-query!useMutation | `useMutation()`} for more info about the mutation options and response */ export function useSiweAuthenticate({ mutations, }: UseSiweAuthenticateParams = {}) { const client = useFrakClient(); return useMutation({ ...mutations, mutationKey: [ "frak-sdk", "siwe-authenticate", client?.config.domain ?? "no-domain", ], mutationFn: async (params: SiweAuthenticateModalParams) => { if (!client) { throw new ClientNotFound(); } // Launch the authentication return siweAuthenticate(client, params); }, }); }