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