UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 1.92 kB
import{useContext as e,useEffect as t,useMemo as l,useCallback as a}from"react";import{P as s,b as n,aj as r,f as i,l as o,L as d}from"./privy-provider-B9AIp9rV.mjs";import{u as c}from"./internal-context-D5bEplez.mjs";import{create as u}from"zustand";function w(t){let{login:l}=e(s);return n("login",t),{login:l}}function p(t){let{connectWallet:l}=e(s);return n("connectWallet",t),{connectWallet:l}}const f=e=>{n("fundWallet",e);let{fundWallet:t}=c();return{fundWallet:t}},m=u((()=>({isModalOpen:!1,resolvers:null})));let v=u((()=>({})));const S=(e,t)=>v((l=>l[e]?.[t])),W=(e,t,l)=>{v.setState((a=>({[e]:{...a[e],[t]:l}})))},g=async()=>{let e,t,l=new Promise(((l,a)=>{e=l,t=a}));return v.setState({}),m.setState({isModalOpen:!0,resolvers:{resolve:e,reject:t}}),await l},y=()=>{let e=m.getState().resolvers;e||console.warn("useActiveWalletStore: Called close while modal was not open"),m.setState({isModalOpen:!1}),e?.resolve({wallet:m.getState().wallet})},h=({address:e,client:t,appId:l})=>{let a=`${t}:${e}`;l&&r.put(I(l),a),m.setState({wallet:a})},j=()=>m((e=>e.isModalOpen)),I=e=>`privy:${e}:active-wallet-connection`,M=()=>{let e=i(),{wallets:s}=o(),{wallets:n}=d(),c=m((e=>e.wallet));t((()=>{if(!e.id)return;let t=r.get(I(e.id));m.setState({wallet:t})}),[e.id]);let u=l((()=>{if(!c)return;let[,e]=c.split(":");return s.find((t=>t.address===e))||n.find((t=>t.address===e))}),[c,s,n]),w=l((()=>u?"ethereum"===u.type?u.chainId:"solana":void 0),[u]);return{connect:async t=>{t?.reset&&(r.del(I(e.id)),m.setState({wallet:void 0}));let{wallet:l}=await g();if(!l)return{};let[,a]=l.split(":"),i=s.find((e=>e.address===a));if(i)return{wallet:i,network:i.chainId};let o=n.find((e=>e.address===a));return o?{wallet:o,network:"solana"}:{}},setActiveWallet:a((t=>{h({address:t.address,client:t.walletClientType,appId:e.id})}),[e.id]),wallet:u,network:w}};export{p as a,f as b,M as c,S as d,W as e,j as f,y as g,h as s,w as u};