UNPKG

@frak-labs/react-sdk

Version:

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

1 lines 4.38 kB
import{displayModal as e,displaySharingPage as t,getMerchantInformation as n,getMergeToken as r,getUserReferralStatus as i,openSso as a,prepareSso as o,prepareSsoUrl as s,referralInteraction as c,sendTransaction as l,setupReferral as u,siweAuthenticate as d,watchWalletStatus as f}from"@frak-labs/core-sdk/actions";import{ClientNotFound as p,FrakRpcError as m,RpcErrorCodes as h}from"@frak-labs/frame-connector";import{useMutation as g,useQuery as _,useQueryClient as v}from"@tanstack/react-query";import{Fragment as y,createContext as b,createElement as x,useCallback as S,useContext as C,useMemo as w,useState as T}from"react";import{baseIframeProps as E,buildListenerUrl as D,createIFrameFrakClient as O,getClientIdAsync as k}from"@frak-labs/core-sdk";const A=b(void 0);function j(e){let{children:t,config:n}=e;return x(A.Provider,{value:{...n,walletUrl:n.walletUrl??`https://wallet.frak.id`,domain:n.domain??(typeof window<`u`?window?.location?.host:void 0)??`not-found`}},t)}const M=b(void 0);function N({style:e,children:t}){let n=R(),[r,i]=T(null),{data:a}=_({queryKey:[`frak`,`listener-url`,n.walletUrl],queryFn:async()=>{let e=await k().catch(()=>void 0);return D({walletUrl:n.walletUrl,clientId:e,preload:n.preload??[`sharing`]})},staleTime:1/0}),{data:o}=_({queryKey:[`frak`,`iframe-client`,a],queryFn:()=>O({iframe:r,config:n}),enabled:!!r,staleTime:1/0,meta:{storable:!1}});return x(y,null,a?x(`iframe`,{...E,src:a,style:e??E.style,ref:i}):null,x(M.Provider,{value:o},t))}function P(){return C(M)}function F({options:e}={}){let t=P(),{data:n,error:r,status:i}=_({queryKey:[`frak-sdk`,`auto-referral-interaction`],queryFn:async()=>{if(!t)throw new p;return await c(t,{options:e})??null},enabled:!!t,staleTime:1/0});return w(()=>i===`pending`?`processing`:i===`error`?r:n||`idle`,[n,i,r])}function I({mutations:t}={}){let n=P();return g({...t,mutationKey:[`frak-sdk`,`display-modal`],mutationFn:async({placement:t,...r})=>{if(!n)throw new p;return e(n,r,t)}})}function L({mutations:e}={}){let n=P();return g({...e,mutationKey:[`frak-sdk`,`display-sharing-page`],mutationFn:async({placement:e,...r})=>{if(!n)throw new p;return t(n,r,e)}})}function R(){let e=C(A);if(!e)throw new m(h.configError,`Frak config not found`);return e}function z({query:e,cacheTime:t}={}){let r=P();return _({...e,queryKey:[`frak-sdk`,`get-merchant-information`],queryFn:async()=>{if(!r)throw new p;return n(r,{cacheTime:t})}})}function B({query:e,cacheTime:t}={}){let n=P();return _({...e,queryKey:[`frak-sdk`,`get-merge-token`],queryFn:async()=>{if(!n)throw new p;return r(n,{cacheTime:t})}})}function V({query:e,cacheTime:t}={}){let n=P();return _({...e,queryKey:[`frak-sdk`,`get-user-referral-status`],queryFn:async()=>{if(!n)throw new p;return i(n,{cacheTime:t})}})}function H({mutations:e}={}){let t=P();return g({...e,mutationKey:[`frak-sdk`,`open-sso`],mutationFn:async e=>{if(!t)throw new p;return a(t,e)}})}function U(e){let t=P();return _({queryKey:[`frak-sdk`,`prepare-sso`,e],queryFn:async()=>{if(!t)throw new p;return o(t,e)}})}function W(e){let t=P();return _({queryKey:[`frak-sdk`,`prepare-sso-url`,e],queryFn:async()=>{if(!t)throw new p;return s(t,e)},enabled:!!t})}function G({mutations:e}={}){let t=P();return g({...e,mutationKey:[`frak-sdk`,`send-transaction`],mutationFn:async e=>{if(!t)throw new p;return l(t,e)}})}function K(){let e=P();return _({queryKey:[`frak-sdk`,`setup-referral`],queryFn:async()=>{if(!e)throw new p;return await u(e),null},enabled:!!e,staleTime:1/0})}function q({mutations:e}={}){let t=P();return g({...e,mutationKey:[`frak-sdk`,`siwe-authenticate`,t?.config.domain??`no-domain`],mutationFn:async e=>{if(!t)throw new p;return d(t,e)}})}function J(){let e=v(),t=P(),n=S(t=>{e.setQueryData([`frak-sdk`,`wallet-status-listener`],t)},[e]);return _({gcTime:0,staleTime:0,queryKey:[`frak-sdk`,`wallet-status-listener`],queryFn:async()=>{if(!t)throw new p;return f(t,n)},enabled:!!t})}export{A as FrakConfigContext,j as FrakConfigProvider,M as FrakIFrameClientContext,N as FrakIFrameClientProvider,I as useDisplayModal,L as useDisplaySharingPage,P as useFrakClient,R as useFrakConfig,z as useGetMerchantInformation,B as useGetMergeToken,V as useGetUserReferralStatus,H as useOpenSso,U as usePrepareSso,W as usePrepareSsoUrl,F as useReferralInteraction,G as useSendTransactionAction,K as useSetupReferral,q as useSiweAuthenticate,J as useWalletStatus};