@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 2.21 kB
JavaScript
;var e=require("react"),t=require("./privy-provider-UmRLOMDd.js"),l=require("./use-sign-with-user-signer-h5JGn1CY.js"),s=require("./internal-context-CrTqNb_c.js"),n=require("zustand");const r=n.create((()=>({isModalOpen:!1,resolvers:null})));let a=n.create((()=>({})));const i=async()=>{let e,t,l=new Promise(((l,s)=>{e=l,t=s}));return a.setState({}),r.setState({isModalOpen:!0,resolvers:{resolve:e,reject:t}}),await l},o=({address:e,client:l,appId:s})=>{let n=`${l}:${e}`;s&&t.s.put(u(s),n),r.setState({wallet:n})},u=e=>`privy:${e}:active-wallet-connection`;exports.close=()=>{let e=r.getState().resolvers;e||console.warn("useActiveWalletStore: Called close while modal was not open"),r.setState({isModalOpen:!1}),e?.resolve({wallet:r.getState().wallet})},exports.setActiveWallet=o,exports.updateBalance=(e,t,l)=>{a.setState((s=>({[e]:{...s[e],[t]:l}})))},exports.useActiveWallet=()=>{let l=t.useAppConfig(),{wallets:s}=t.useWallets(),{wallets:n}=t.useSolanaWallets(),a=r((e=>e.wallet));e.useEffect((()=>{if(!l.id)return;let e=t.s.get(u(l.id));r.setState({wallet:e})}),[l.id]);let d=e.useMemo((()=>{if(!a)return;let[,e]=a.split(":");return s.find((t=>t.address===e))||n.find((t=>t.address===e))}),[a,s,n]),c=e.useMemo((()=>d?"ethereum"===d.type?d.chainId:"solana":void 0),[d]);return{connect:async e=>{e?.reset&&(t.s.del(u(l.id)),r.setState({wallet:void 0}));let{wallet:a}=await i();if(!a)return{};let[,o]=a.split(":"),d=s.find((e=>e.address===o));if(d)return{wallet:d,network:d.chainId};let c=n.find((e=>e.address===o));return c?{wallet:c,network:"solana"}:{}},setActiveWallet:e.useCallback((e=>{o({address:e.address,client:e.walletClientType,appId:l.id})}),[l.id]),wallet:d,network:c}},exports.useBalance=(e,t)=>a((l=>l[e]?.[t])),exports.useConnectWallet=function(s){let{connectWallet:n}=e.useContext(l.PrivyContext);return t.usePrivyEventSubscription("connectWallet",s),{connectWallet:n}},exports.useFundWallet=e=>{t.usePrivyEventSubscription("fundWallet",e);let{fundWallet:l}=s.usePrivyInternal();return{fundWallet:l}},exports.useIsModalOpen=()=>r((e=>e.isModalOpen)),exports.useLogin=function(s){let{login:n}=e.useContext(l.PrivyContext);return t.usePrivyEventSubscription("login",s),{login:n}};