UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 4.9 kB
"use strict";var e=require("react"),r=require("@privy-io/js-sdk-core"),i=require("./internal-context-CeWKmK5u.js"),o=require("./EmbeddedWalletConnectingScreen-JRafXI8d.js"),t=require("./events-context-7-Gs8c_9.js"),n=require("./use-sign-with-user-signer-BtJVKMQr.js");require("ofetch"),require("react/jsx-runtime"),require("lucide-react"),require("viem"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/UserCircleIcon"),require("styled-components"),require("@heroicons/react/24/outline/ArrowLeftIcon"),require("@heroicons/react/24/outline/ArrowRightIcon"),require("@heroicons/react/24/outline/QuestionMarkCircleIcon"),require("@heroicons/react/24/outline/XMarkIcon"),require("@heroicons/react/20/solid/CheckIcon"),require("@heroicons/react/24/outline/EnvelopeIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("react-device-detect"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@heroicons/react/24/outline/WalletIcon"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("@heroicons/react/24/outline/Square2StackIcon"),require("zustand"),require("@heroicons/react/24/outline"),require("@tanstack/react-virtual"),require("@heroicons/react/24/outline/CheckIcon"),require("qrcode"),require("viem/utils"),require("eventemitter3"),require("@scure/base"),require("@walletconnect/ethereum-provider"),require("@heroicons/react/24/outline/CreditCardIcon"),require("@heroicons/react/24/outline/QrCodeIcon"),require("@heroicons/react/24/solid/ArrowsRightLeftIcon"),require("@heroicons/react/24/outline/InformationCircleIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("@heroicons/react/24/outline/ChevronDownIcon"),require("@privy-io/ethereum"),require("@heroicons/react/24/outline/CheckCircleIcon"),require("@heroicons/react/24/outline/GlobeAltIcon"),require("@headlessui/react"),require("@privy-io/popup"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("@heroicons/react/24/outline/LockClosedIcon"),require("@heroicons/react/24/outline/PencilSquareIcon"),require("jose"),require("@heroicons/react/24/outline/ArrowPathIcon"),require("@heroicons/react/24/outline/EyeIcon"),require("@heroicons/react/24/outline/EyeSlashIcon"),require("@heroicons/react/24/outline/KeyIcon"),require("@heroicons/react/24/outline/ArrowDownTrayIcon"),require("@heroicons/react/24/outline/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),require("@privy-io/urls"),require("tinycolor2");exports.useCreateWallet=()=>{let{refreshSessionAndUser:o,privy:t}=i.usePrivyInternal();return e.useMemo((()=>({async createWallet(e){let i=await r.create(t,{request:{chain_type:e.chainType}}),n=await o();if(!n)throw Error("User must be authenticated before creating a Privy wallet");return{user:n,wallet:i}}})),[o,t])},exports.useExportWallet=function(){let{user:r,getAccessToken:n}=o.usePrivyContext(),{walletProxy:c,openModal:a,client:s}=i.usePrivyInternal(),{setModalData:u}=o.usePrivyModal(),l=t.useAppConfig();return e.useMemo((()=>({exportWallet:e=>new Promise((async(t,d)=>{if(!r)return void d(new i.PrivyClientError("User must be authenticated before exporting their Privy wallet"));let h=o.getPrivyWalletWithAddress(r,e.address);h?"spark"===h.chainType&&o.getIsUnifiedWallet(h)?await n()?c?(u({connectWallet:{recoveryMethod:h.recoveryMethod,connectingWalletAddress:h.address,isUnifiedWallet:!0,onCompleteNavigateTo:o.EmbeddedWalletKeyExportScreen,onFailure:d,shouldForceMFA:!0},keyExport:{appId:l.id,appClientId:l.appClientId,origin:s.apiUrl,address:h.address,hdWalletIndex:h.walletIndex,chainType:h.chainType,walletId:h.id,isUnifiedWallet:!0,imported:h.imported,onSuccess:t,onFailure:d}}),a(o.EmbeddedWalletConnectingScreen)):d(new i.PrivyClientError("Wallet not ready for export")):d(new i.PrivyClientError("Must have valid access token.")):d(Error("Export via extended-chains is only supported for unified stack wallets")):d(new i.PrivyClientError("User must have an embedded wallet."))}))})),[r,n,c,a,s,u,l])},exports.useSignRawHash=()=>{let{user:t}=o.usePrivyContext(),{privy:c}=i.usePrivyInternal(),{signWithUserSigner:a}=n.useSignWithUserSigner();return e.useMemo((()=>({async signRawHash({address:e,chainType:i,hash:n}){if(!t)throw Error("User must be authenticated before signing");let s=o.getAllPrivyWalletsForChainType(t,i).filter((e=>o.getIsUnifiedWallet(e))).find((r=>r.address===e));if(!s)throw Error("Wallet not found");let u=await r.rawSign(c,a,{wallet_id:s.id,params:{hash:n}});if(u.data&&"signature"in u.data&&"hex"===u.data.encoding)return{signature:u.data.signature};throw Error("Failed to sign")}})),[c,a,t])};