@privy-io/react-auth 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/cjs/client/user.js +1 -1
  2. package/dist/cjs/client.js +1 -1
  3. package/dist/cjs/components/LoginModal.js +1 -1
  4. package/dist/cjs/components/embedded-wallets/PriceDisplay.js +1 -1
  5. package/dist/cjs/components/embedded-wallets/SolanaTransactionDetails.js +1 -1
  6. package/dist/cjs/components/embedded-wallets/TransactionDetails.js +2 -2
  7. package/dist/cjs/components/embedded-wallets/TransactionDetailsWrapper.js +1 -1
  8. package/dist/cjs/components/embedded-wallets/TransactionTotal.js +1 -1
  9. package/dist/cjs/components/embedded-wallets/index.js +1 -1
  10. package/dist/cjs/config.js +1 -1
  11. package/dist/cjs/connectors/embeddedProvider.js +1 -1
  12. package/dist/cjs/connectors/index.js +1 -1
  13. package/dist/cjs/constants.js +1 -1
  14. package/dist/cjs/embedded-wallets/solana/provider.js +1 -1
  15. package/dist/cjs/embedded-wallets/solana/transaction.js +1 -1
  16. package/dist/cjs/hooks/privy-provider.js +1 -1
  17. package/dist/cjs/index.js +1 -1
  18. package/dist/cjs/lib/attempt.js +1 -0
  19. package/dist/cjs/lib/smart-wallets-shared.js +1 -1
  20. package/dist/cjs/lib/smart-wallets.js +1 -1
  21. package/dist/cjs/lib/solana/transaction.js +1 -1
  22. package/dist/cjs/lib/user/shouldCreateEmbeddedEthWallet.js +1 -0
  23. package/dist/cjs/lib/user/shouldCreateEmbeddedSolWallet.js +1 -0
  24. package/dist/cjs/lib/user/shouldProceedtoEmbeddedWalletCreationFlow.js +1 -0
  25. package/dist/cjs/lib/viem/toViemTransactionSerializable.js +1 -1
  26. package/dist/cjs/privy-components/wallets-pill/ConnectWalletView.js +1 -1
  27. package/dist/cjs/privy-components/wallets-pill/WalletsDialog.js +1 -1
  28. package/dist/cjs/privy-provider-CEfM_gA2.js +3 -0
  29. package/dist/cjs/screens/AffirmativeConsentScreen.js +1 -1
  30. package/dist/cjs/screens/AwaitingPasswordlessCodeScreen.js +2 -2
  31. package/dist/cjs/screens/ConnectOnlyStatusScreen.js +1 -1
  32. package/dist/cjs/screens/ConnectionStatusScreen.js +2 -2
  33. package/dist/cjs/screens/CrossAppAuthScreen.js +1 -1
  34. package/dist/cjs/screens/EmbeddedWalletCreatedScreen.js +1 -1
  35. package/dist/cjs/screens/EmbeddedWalletOnAccountCreateScreen.js +1 -1
  36. package/dist/cjs/screens/FarcasterConnectStatusScreen.js +2 -2
  37. package/dist/cjs/screens/Funding/AwaitingEvmToSolBridgingScreen.js +1 -1
  38. package/dist/cjs/screens/Funding/AwaitingExternalSolanaTransferScreen.js +1 -1
  39. package/dist/cjs/screens/Funding/ManualTransferScreen.js +1 -1
  40. package/dist/cjs/screens/MfaScreens/MfaVerifyFlowScreen.js +1 -1
  41. package/dist/cjs/screens/MfaScreens/VerifyWithPasskey.js +1 -1
  42. package/dist/cjs/screens/OAuthStatusScreen.js +1 -1
  43. package/dist/cjs/screens/PasskeyStatusScreen.js +1 -1
  44. package/dist/cjs/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.js +1 -1
  45. package/dist/cjs/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.js +1 -1
  46. package/dist/cjs/screens/SendTransactionScreen/SendTransactionScreen.js +1 -1
  47. package/dist/cjs/screens/SendTransactionScreen/TransactionReceiptView.js +1 -1
  48. package/dist/cjs/screens/SendTransactionScreen/index.js +1 -1
  49. package/dist/cjs/screens/TelegramAuthScreen.js +1 -1
  50. package/dist/cjs/ui.js +1 -1
  51. package/dist/dts/farcaster.d.mts +1 -1
  52. package/dist/dts/farcaster.d.ts +1 -1
  53. package/dist/dts/index.d.mts +4 -4
  54. package/dist/dts/index.d.ts +4 -4
  55. package/dist/dts/smart-wallets.d.mts +4 -4
  56. package/dist/dts/smart-wallets.d.ts +4 -4
  57. package/dist/dts/solana.d.mts +4 -4
  58. package/dist/dts/solana.d.ts +4 -4
  59. package/dist/dts/{types-Do6eK2EI.d.mts → types-Cj9jWnPs.d.mts} +41 -1
  60. package/dist/dts/{types-Do6eK2EI.d.ts → types-Cj9jWnPs.d.ts} +41 -1
  61. package/dist/dts/ui.d.mts +1 -1
  62. package/dist/dts/ui.d.ts +1 -1
  63. package/dist/dts/{useSolanaWallets-CtSHyXUi.d.ts → useSolanaWallets-CFdCg_zF.d.mts} +1 -1
  64. package/dist/dts/{useSolanaWallets-CtSHyXUi.d.mts → useSolanaWallets-CFdCg_zF.d.ts} +1 -1
  65. package/dist/esm/client/user.mjs +1 -1
  66. package/dist/esm/client.mjs +1 -1
  67. package/dist/esm/components/LoginModal.mjs +1 -1
  68. package/dist/esm/components/embedded-wallets/PriceDisplay.mjs +1 -1
  69. package/dist/esm/components/embedded-wallets/SolanaTransactionDetails.mjs +1 -1
  70. package/dist/esm/components/embedded-wallets/TransactionDetails.mjs +2 -2
  71. package/dist/esm/components/embedded-wallets/TransactionDetailsWrapper.mjs +1 -1
  72. package/dist/esm/components/embedded-wallets/TransactionTotal.mjs +1 -1
  73. package/dist/esm/components/embedded-wallets/index.mjs +1 -1
  74. package/dist/esm/config.mjs +1 -1
  75. package/dist/esm/connectors/embeddedProvider.mjs +1 -1
  76. package/dist/esm/connectors/index.mjs +1 -1
  77. package/dist/esm/constants.mjs +1 -1
  78. package/dist/esm/embedded-wallets/solana/provider.mjs +1 -1
  79. package/dist/esm/embedded-wallets/solana/transaction.mjs +1 -1
  80. package/dist/esm/hooks/privy-provider.mjs +1 -1
  81. package/dist/esm/index.mjs +1 -1
  82. package/dist/esm/lib/attempt.mjs +1 -0
  83. package/dist/esm/lib/smart-wallets-shared.mjs +1 -1
  84. package/dist/esm/lib/smart-wallets.mjs +1 -1
  85. package/dist/esm/lib/solana/transaction.mjs +1 -1
  86. package/dist/esm/lib/user/shouldCreateEmbeddedEthWallet.mjs +1 -0
  87. package/dist/esm/lib/user/shouldCreateEmbeddedSolWallet.mjs +1 -0
  88. package/dist/esm/lib/user/shouldProceedtoEmbeddedWalletCreationFlow.mjs +1 -0
  89. package/dist/esm/lib/viem/toViemTransactionSerializable.mjs +1 -1
  90. package/dist/esm/privy-components/wallets-pill/ConnectWalletView.mjs +1 -1
  91. package/dist/esm/privy-components/wallets-pill/WalletsDialog.mjs +1 -1
  92. package/dist/esm/privy-provider-Dsr4yi3k.mjs +3 -0
  93. package/dist/esm/screens/AffirmativeConsentScreen.mjs +1 -1
  94. package/dist/esm/screens/AwaitingPasswordlessCodeScreen.mjs +2 -2
  95. package/dist/esm/screens/ConnectOnlyStatusScreen.mjs +1 -1
  96. package/dist/esm/screens/ConnectionStatusScreen.mjs +2 -2
  97. package/dist/esm/screens/CrossAppAuthScreen.mjs +1 -1
  98. package/dist/esm/screens/EmbeddedWalletCreatedScreen.mjs +1 -1
  99. package/dist/esm/screens/EmbeddedWalletOnAccountCreateScreen.mjs +1 -1
  100. package/dist/esm/screens/FarcasterConnectStatusScreen.mjs +2 -2
  101. package/dist/esm/screens/Funding/AwaitingEvmToSolBridgingScreen.mjs +1 -1
  102. package/dist/esm/screens/Funding/AwaitingExternalSolanaTransferScreen.mjs +1 -1
  103. package/dist/esm/screens/Funding/ManualTransferScreen.mjs +1 -1
  104. package/dist/esm/screens/MfaScreens/MfaVerifyFlowScreen.mjs +1 -1
  105. package/dist/esm/screens/MfaScreens/VerifyWithPasskey.mjs +1 -1
  106. package/dist/esm/screens/OAuthStatusScreen.mjs +1 -1
  107. package/dist/esm/screens/PasskeyStatusScreen.mjs +1 -1
  108. package/dist/esm/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.mjs +1 -1
  109. package/dist/esm/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.mjs +1 -1
  110. package/dist/esm/screens/SendTransactionScreen/SendTransactionScreen.mjs +1 -1
  111. package/dist/esm/screens/SendTransactionScreen/TransactionReceiptView.mjs +1 -1
  112. package/dist/esm/screens/SendTransactionScreen/index.mjs +1 -1
  113. package/dist/esm/screens/TelegramAuthScreen.mjs +1 -1
  114. package/dist/esm/ui.mjs +1 -1
  115. package/package.json +3 -3
  116. package/dist/cjs/privy-provider-Cq1Y-Omj.js +0 -3
  117. package/dist/esm/privy-provider-C-cTZKVr.mjs +0 -3
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as e,jsx as t}from"react/jsx-runtime";import r from"@heroicons/react/24/solid/XCircleIcon";import{useState as i,useEffect as n}from"react";import{styled as s}from"styled-components";import{PrimaryButton as c}from"../components/Button.mjs";import{CenteredItemWithGap as m}from"../components/Layouts.mjs";import{ModalHeader as a}from"../components/ModalHeader.mjs";import{CenteredScreenHeader as l}from"../components/ScreenHeader.mjs";import{FullScreenLoadingSpinner as p}from"../components/primitives/LoadingSpinner/index.mjs";import{useAppConfig as h}from"../configuration/context.mjs";import{RunEffectOnce as j}from"../effect.mjs";import{PrivyEmbeddedWalletError as d}from"../errors.mjs";import{usePrivyInternal as u}from"../hooks/internal-context.mjs";import{usePrivyModal as f}from"../hooks/modal-context.mjs";import{usePrivyContext as g}from"../hooks/privy-context.mjs";import{useCreateWallet as y}from"../hooks/useEmbeddedWalletCreate.mjs";import{toEmbeddedWalletSetRecoveryScreen as b}from"../lib/embeddedWalletRecovery.mjs";import{ModalScreen as v}from"./index.mjs";import"../components/Loader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../constants.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"../client/user.mjs";import"viem/utils";import"../paths.mjs";import"../lib/pkce.mjs";import"jose";import"../crypto.mjs";import"../storage.mjs";const w=()=>{let{app:s,setModalData:w,navigate:S,data:x,onUserCloseViaDialogOrKeybindRef:A}=f(),[k,E]=i(""),{embeddedWallets:R}=h(),{authenticated:I,user:O}=g(),{closePrivyModal:W}=u(),{onSuccess:D,onFailure:L,callAuthOnSuccessOnClose:M}=x.createWallet,P=!0===s?.embeddedWallets.requireUserOwnedRecoveryOnCreate,{createWallet:F}=y(),[N,T]=i(null),U=new j((async()=>{try{let o=await F({user:O});if(!o)return;T(o),S(v.EMBEDDED_WALLET_CREATED_SCREEN)}catch(o){E(o.message)}}));return n((()=>I&&O?P?(w({...x,recoverySelection:{...x?.recoverySelection,isInAccountCreateFlow:!0}}),S(b({walletAction:"create",showAutomaticRecovery:!1,availableRecoveryMethods:R.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:!1,isResettingPassword:!1}))):void U.execute():(S(v.LANDING),void L(Error("User must be authenticated before creating a Privy wallet")))),[P,I]),A.current=()=>null,k?/*#__PURE__*/o(e,{children:[/*#__PURE__*/t(a,{closeable:!1}),/*#__PURE__*/o(m,{children:[/*#__PURE__*/t(r,{fill:"var(--privy-color-error)",width:"64px",height:"64px"}),/*#__PURE__*/t(l,{title:"Something went wrong",description:k})]}),/*#__PURE__*/t(c,{onClick:()=>{N?(D(N),W({shouldCallAuthOnSuccess:M})):(L(new d("User wallet creation failed")),W({shouldCallAuthOnSuccess:!1}))},children:"Close"}),/*#__PURE__*/t(C,{})]}):/*#__PURE__*/t(p,{})};let C=/*#__PURE__*/s.div.withConfig({displayName:"BottomSpacing",componentId:"sc-eabafbf4-0"})(["height:44px;"]);export{w as EmbeddedWalletOnAccountCreateScreen};
1
+ import{jsxs as o,Fragment as e,jsx as t}from"react/jsx-runtime";import r from"@heroicons/react/24/solid/XCircleIcon";import{useState as i,useEffect as s}from"react";import{styled as n}from"styled-components";import{getPrivyPrimaryWallet as c,getEntropyDetailsFromAccount as m,getPrivyEthereumWallet as a,getPrivySolanaWallet as l}from"../client/user.mjs";import{PrimaryButton as p}from"../components/Button.mjs";import{CenteredItemWithGap as d}from"../components/Layouts.mjs";import{ModalHeader as h}from"../components/ModalHeader.mjs";import{CenteredScreenHeader as j}from"../components/ScreenHeader.mjs";import{FullScreenLoadingSpinner as u}from"../components/primitives/LoadingSpinner/index.mjs";import{useAppConfig as f}from"../configuration/context.mjs";import{RunEffectOnce as E}from"../effect.mjs";import{PrivyEmbeddedWalletError as y,PrivyClientError as w}from"../errors.mjs";import{usePrivyInternal as g}from"../hooks/internal-context.mjs";import{usePrivyModal as v}from"../hooks/modal-context.mjs";import{usePrivyContext as b}from"../hooks/privy-context.mjs";import{useCreateWallet as C}from"../hooks/useEmbeddedWalletCreate.mjs";import{toEmbeddedWalletSetRecoveryScreen as A}from"../lib/embeddedWalletRecovery.mjs";import{shouldCreateEmbeddedEthWallet as S}from"../lib/user/shouldCreateEmbeddedEthWallet.mjs";import{shouldCreateEmbeddedSolWallet as D}from"../lib/user/shouldCreateEmbeddedSolWallet.mjs";import{ModalScreen as k}from"./index.mjs";import"viem/utils";import"../components/Loader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../constants.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"../paths.mjs";import"../lib/pkce.mjs";import"jose";import"../crypto.mjs";import"../storage.mjs";const x=()=>{let{app:n,setModalData:x,navigate:W,data:L,onUserCloseViaDialogOrKeybindRef:T}=v(),[I,_]=i(""),{embeddedWallets:M}=f(),{authenticated:O,user:P,getAccessToken:N}=b(),{closePrivyModal:B,walletProxy:U,refreshSessionAndUser:F,recoverPrimaryWallet:z}=g(),{onSuccess:H,onFailure:V,callAuthOnSuccessOnClose:X}=L.createWallet,q=!0===n?.embeddedWallets.requireUserOwnedRecoveryOnCreate,{createWallet:G}=C(),[K,Q]=i(null),J=new E((async()=>{let o=await N();if(P&&o&&U)try{let e=c(P);if(e&&"privy"===e.recoveryMethod)await z();else if(e){let{entropyId:t,entropyIdVerifier:r}=m(e);try{if(!await U.connect({accessToken:o,entropyId:t,entropyIdVerifier:r}))throw new w("Primary wallet not connected.")}catch(o){return Q(e),void W(k.EMBEDDED_WALLET_CREATED_SCREEN)}}let t=S(P,n.embeddedWallets.ethereum.createOnLogin),r=D(P,n.embeddedWallets.solana.createOnLogin);if(t&&r){let e=await G({user:P});if(await U.createSolana({accessToken:o,ethereumAddress:e?.address}),!e)return;return Q(e),void W(k.EMBEDDED_WALLET_CREATED_SCREEN)}if(r){await U.createSolana({accessToken:o,ethereumAddress:a(P)?.address});let e=await F();return Q(l(e)),void W(k.EMBEDDED_WALLET_CREATED_SCREEN)}if(t){let o=await G({user:P});if(!o)return;Q(o),W(k.EMBEDDED_WALLET_CREATED_SCREEN)}}catch(o){_(o.message)}}));return s((()=>O&&P?q?(x({...L,recoverySelection:{...L?.recoverySelection,isInAccountCreateFlow:!0}}),W(A({walletAction:"create",showAutomaticRecovery:!1,availableRecoveryMethods:M.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:!1,isResettingPassword:!1}))):void J.execute():(W(k.LANDING),void V(Error("User must be authenticated before creating a Privy wallet")))),[q,O]),T.current=()=>null,I?/*#__PURE__*/o(e,{children:[/*#__PURE__*/t(h,{closeable:!1}),/*#__PURE__*/o(d,{children:[/*#__PURE__*/t(r,{fill:"var(--privy-color-error)",width:"64px",height:"64px"}),/*#__PURE__*/t(j,{title:"Something went wrong",description:I})]}),/*#__PURE__*/t(p,{onClick:()=>{K?(H(K),B({shouldCallAuthOnSuccess:X})):(V(new y("User wallet creation failed")),B({shouldCallAuthOnSuccess:!1}))},children:"Close"}),/*#__PURE__*/t(R,{})]}):/*#__PURE__*/t(u,{})};let R=/*#__PURE__*/n.div.withConfig({displayName:"BottomSpacing",componentId:"sc-f34e977e-0"})(["height:44px;"]);export{x as EmbeddedWalletOnAccountCreateScreen};
@@ -1,2 +1,2 @@
1
- import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import{ModalScreen as r}from"./index.mjs";import{useState as n,useRef as i,useEffect as s}from"react";import{isMobile as a,isIOS as c}from"react-device-detect";import{styled as m}from"styled-components";import{shouldProceedtoEmbeddedWalletCreationFlow as l}from"../client/user.mjs";import{PrimaryButton as p}from"../components/Button.mjs";import{CopytoClipboardButton as d}from"../components/CopyToClipboard.mjs";import{RefactorSpacerTop as h,FixedGappedContainer as u,CenteredItem as j,CenteredItemWithPadding as f}from"../components/Layouts.mjs";import{ConnectionLoader as g,Loader as E}from"../components/Loader.mjs";import{ModalFooter as y}from"../components/ModalFooter.mjs";import{ModalHeader as C}from"../components/ModalHeader.mjs";import{OpenLinkButton as v}from"../components/OpenLink.mjs";import{QrCode as T}from"../components/QrCode.mjs";import S from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as _}from"../constants.mjs";import{PrivyErrorCode as A,PrivyUserLimitReachedError as N}from"../errors.mjs";import{usePrivyInternal as b}from"../hooks/internal-context.mjs";import{usePrivyModal as I}from"../hooks/modal-context.mjs";import{usePrivyContext as w}from"../hooks/privy-context.mjs";import{Farcaster as x}from"../svg/farcaster.mjs";import{Title as R,SubTitle as k}from"./MfaScreens/StyledComponents.mjs";import"viem/utils";import"../svg/checkmark.mjs";import"../svg/copy.mjs";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"qrcode";import"../svg/black-rounded-square.mjs";import"../utils/index.mjs";import"../connectors/get-legacy-injected-providers.mjs";import"../connectors/is-wallet-installed.mjs";import"../utils/eth/getPublicClient.mjs";import"viem";import"ofetch";import"../components/PrefetchedImage.mjs";let O="#8a63d2";const L=()=>{let{authenticated:m,logout:L,ready:U,user:M}=w(),{lastScreen:W,navigate:q,navigateBack:H,setModalData:z,app:B}=I(),{getAuthFlow:P,loginWithFarcaster:Q,closePrivyModal:J,createAnalyticsEvent:K}=b(),[V,X]=n(void 0),[Y,G]=n(!1),[Z,$]=n(!1),ee=i([]),oe=P(),te=oe?.meta.connectUri;return s((()=>{let e=Date.now(),o=setInterval((async()=>{let t=await oe.pollForReady.execute(),n=Date.now()-e;if(t){clearInterval(o),G(!0);try{await Q(),$(!0)}catch(e){let o={retryable:!1,message:"Authentication failed"};if(e?.privyErrorCode===A.ALLOWLIST_REJECTED)return void q(r.ALLOWLIST_REJECTION_SCREEN);if(e?.privyErrorCode===A.USER_LIMIT_REACHED)return console.error(new N(e).toString()),void q(r.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode===A.USER_DOES_NOT_EXIST)return void q(r.ACCOUNT_NOT_FOUND_SCREEN);if(e?.privyErrorCode===A.LINKED_TO_ANOTHER_USER)o.detail=e.message??"This account has already been linked to another user.";else{if(e?.privyErrorCode===A.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return z({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:"farcaster",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,farcasterEmbeddedAddress:e.data?.data?.otherUser?.farcasterEmbeddedAddress}}),void q(r.LINK_CONFLICT_SCREEN);e?.privyErrorCode===A.INVALID_CREDENTIALS?(o.retryable=!0,o.detail="Something went wrong. Try again."):e?.privyErrorCode===A.TOO_MANY_REQUESTS&&(o.detail="Too many requests. Please wait before trying again.")}X(o)}}else n>12e4&&(clearInterval(o),X({retryable:!0,message:"Authentication failed",detail:"The request timed out. Try again."}))}),2e3);return()=>{clearInterval(o),ee.current.forEach((e=>clearTimeout(e)))}}),[]),s((()=>{if(U&&m&&Z&&M){if(B?.legal.requireUsersAcceptTerms&&!M.hasAcceptedTerms){let e=setTimeout((()=>{q(r.AFFIRMATIVE_CONSENT_SCREEN)}),_);return()=>clearTimeout(e)}Z&&(l(M,B?.embeddedWallets.createOnLogin)?ee.current.push(setTimeout((()=>{z({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),K({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,screen:"FarcasterConnectStatusScreen"}}),L()},callAuthOnSuccessOnClose:!0}}),q(r.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),_)):ee.current.push(setTimeout((()=>J({shouldCallAuthOnSuccess:!0,isSuccess:!0})),_)))}}),[Z,U,m,M]),/*#__PURE__*/e(o,a||Y?{children:[/*#__PURE__*/t(C,{backFn:W?H:void 0,onClose:J},"header"),/*#__PURE__*/t(h,{}),
2
- /*#__PURE__*/t(o,c?{children:/*#__PURE__*/e(D,{children:[/*#__PURE__*/t(S,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(g,{success:Z,fail:!!V}),/*#__PURE__*/t(x,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/e(u,{children:[/*#__PURE__*/t(R,{children:V?V.message:"Sign in with Farcaster"}),/*#__PURE__*/t(k,{children:V?V.detail:"To sign in with Farcaster, please open the Warpcast app."})]}),te&&/*#__PURE__*/t(p,{onClick:e=>{e.preventDefault(),window.location.href=te},children:"Open Warpcast app"})]})}:{children:/*#__PURE__*/e(F,{children:[/*#__PURE__*/t(S,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(g,{success:Z,fail:!!V}),/*#__PURE__*/t(x,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/e(u,{children:[/*#__PURE__*/t(R,{children:V?V.message:"Signing in with Farcaster"}),/*#__PURE__*/t(k,{children:V?V.detail:"This should only take a moment"}),/*#__PURE__*/t(j,{children:te&&a&&/*#__PURE__*/t(v,{text:"Take me to Warpcast",url:te,color:O})})]})]})}),/*#__PURE__*/t(y,{})]}:{children:[/*#__PURE__*/t(C,{backFn:W?H:void 0,onClose:J},"header"),/*#__PURE__*/t(h,{}),/*#__PURE__*/t(F,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(R,{children:"Sign in with Farcaster"}),/*#__PURE__*/t(k,{children:"Scan with your phone's camera to continue."}),/*#__PURE__*/t(f,{children:te?/*#__PURE__*/t(T,{url:te,size:275,squareLogoElement:x}):/*#__PURE__*/t(E,{})}),/*#__PURE__*/e(j,{children:[/*#__PURE__*/t(k,{children:"Or copy this link and paste it into a phone browser to open the Warpcast app."}),te&&/*#__PURE__*/t(d,{text:te,itemName:"link",color:O})]})]})}),/*#__PURE__*/t(y,{})]})};let F=/*#__PURE__*/m.div.withConfig({displayName:"ConnectContainer",componentId:"sc-5a361367-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;"]),D=/*#__PURE__*/m.div.withConfig({displayName:"ConnectContainerButton",componentId:"sc-5a361367-1"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);export{L as FarcasterConnectStatusScreen};
1
+ import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import{ModalScreen as r}from"./index.mjs";import{useState as i,useRef as n,useEffect as s}from"react";import{isMobile as a,isIOS as c}from"react-device-detect";import{styled as m}from"styled-components";import{PrimaryButton as l}from"../components/Button.mjs";import{CopytoClipboardButton as d}from"../components/CopyToClipboard.mjs";import{RefactorSpacerTop as p,FixedGappedContainer as h,CenteredItem as u,CenteredItemWithPadding as j}from"../components/Layouts.mjs";import{ConnectionLoader as f,Loader as E}from"../components/Loader.mjs";import{ModalFooter as g}from"../components/ModalFooter.mjs";import{ModalHeader as C}from"../components/ModalHeader.mjs";import{OpenLinkButton as y}from"../components/OpenLink.mjs";import{QrCode as v}from"../components/QrCode.mjs";import T from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as S}from"../constants.mjs";import{PrivyErrorCode as _,PrivyUserLimitReachedError as b}from"../errors.mjs";import{usePrivyInternal as A}from"../hooks/internal-context.mjs";import{usePrivyModal as N}from"../hooks/modal-context.mjs";import{usePrivyContext as w}from"../hooks/privy-context.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as I}from"../lib/user/shouldProceedtoEmbeddedWalletCreationFlow.mjs";import{Farcaster as x}from"../svg/farcaster.mjs";import{Title as R,SubTitle as k}from"./MfaScreens/StyledComponents.mjs";import"../svg/checkmark.mjs";import"../svg/copy.mjs";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"qrcode";import"../svg/black-rounded-square.mjs";import"../utils/index.mjs";import"../connectors/get-legacy-injected-providers.mjs";import"../connectors/is-wallet-installed.mjs";import"../utils/eth/getPublicClient.mjs";import"viem";import"ofetch";import"../components/PrefetchedImage.mjs";import"../lib/user/shouldCreateEmbeddedEthWallet.mjs";import"../client/user.mjs";import"viem/utils";import"../lib/user/shouldCreateEmbeddedSolWallet.mjs";let O="#8a63d2";const L=()=>{let{authenticated:m,logout:L,ready:W,user:U}=w(),{lastScreen:M,navigate:q,navigateBack:H,setModalData:P,app:z}=N(),{getAuthFlow:B,loginWithFarcaster:Q,closePrivyModal:J,createAnalyticsEvent:K}=A(),[V,X]=i(void 0),[Y,G]=i(!1),[Z,$]=i(!1),ee=n([]),oe=B(),te=oe?.meta.connectUri;return s((()=>{let e=Date.now(),o=setInterval((async()=>{let t=await oe.pollForReady.execute(),i=Date.now()-e;if(t){clearInterval(o),G(!0);try{await Q(),$(!0)}catch(e){let o={retryable:!1,message:"Authentication failed"};if(e?.privyErrorCode===_.ALLOWLIST_REJECTED)return void q(r.ALLOWLIST_REJECTION_SCREEN);if(e?.privyErrorCode===_.USER_LIMIT_REACHED)return console.error(new b(e).toString()),void q(r.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode===_.USER_DOES_NOT_EXIST)return void q(r.ACCOUNT_NOT_FOUND_SCREEN);if(e?.privyErrorCode===_.LINKED_TO_ANOTHER_USER)o.detail=e.message??"This account has already been linked to another user.";else{if(e?.privyErrorCode===_.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return P({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:"farcaster",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,farcasterEmbeddedAddress:e.data?.data?.otherUser?.farcasterEmbeddedAddress}}),void q(r.LINK_CONFLICT_SCREEN);e?.privyErrorCode===_.INVALID_CREDENTIALS?(o.retryable=!0,o.detail="Something went wrong. Try again."):e?.privyErrorCode===_.TOO_MANY_REQUESTS&&(o.detail="Too many requests. Please wait before trying again.")}X(o)}}else i>12e4&&(clearInterval(o),X({retryable:!0,message:"Authentication failed",detail:"The request timed out. Try again."}))}),2e3);return()=>{clearInterval(o),ee.current.forEach((e=>clearTimeout(e)))}}),[]),s((()=>{if(W&&m&&Z&&U){if(z?.legal.requireUsersAcceptTerms&&!U.hasAcceptedTerms){let e=setTimeout((()=>{q(r.AFFIRMATIVE_CONSENT_SCREEN)}),S);return()=>clearTimeout(e)}Z&&(I(U,z.embeddedWallets)?ee.current.push(setTimeout((()=>{P({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),K({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,screen:"FarcasterConnectStatusScreen"}}),L()},callAuthOnSuccessOnClose:!0}}),q(r.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),S)):ee.current.push(setTimeout((()=>J({shouldCallAuthOnSuccess:!0,isSuccess:!0})),S)))}}),[Z,W,m,U]),/*#__PURE__*/e(o,a||Y?{children:[/*#__PURE__*/t(C,{backFn:M?H:void 0,onClose:J},"header"),/*#__PURE__*/t(p,{}),
2
+ /*#__PURE__*/t(o,c?{children:/*#__PURE__*/e(D,{children:[/*#__PURE__*/t(T,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(f,{success:Z,fail:!!V}),/*#__PURE__*/t(x,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/e(h,{children:[/*#__PURE__*/t(R,{children:V?V.message:"Sign in with Farcaster"}),/*#__PURE__*/t(k,{children:V?V.detail:"To sign in with Farcaster, please open the Warpcast app."})]}),te&&/*#__PURE__*/t(l,{onClick:e=>{e.preventDefault(),window.location.href=te},children:"Open Warpcast app"})]})}:{children:/*#__PURE__*/e(F,{children:[/*#__PURE__*/t(T,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(f,{success:Z,fail:!!V}),/*#__PURE__*/t(x,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/e(h,{children:[/*#__PURE__*/t(R,{children:V?V.message:"Signing in with Farcaster"}),/*#__PURE__*/t(k,{children:V?V.detail:"This should only take a moment"}),/*#__PURE__*/t(u,{children:te&&a&&/*#__PURE__*/t(y,{text:"Take me to Warpcast",url:te,color:O})})]})]})}),/*#__PURE__*/t(g,{})]}:{children:[/*#__PURE__*/t(C,{backFn:M?H:void 0,onClose:J},"header"),/*#__PURE__*/t(p,{}),/*#__PURE__*/t(F,{children:/*#__PURE__*/e("div",{children:[/*#__PURE__*/t(R,{children:"Sign in with Farcaster"}),/*#__PURE__*/t(k,{children:"Scan with your phone's camera to continue."}),/*#__PURE__*/t(j,{children:te?/*#__PURE__*/t(v,{url:te,size:275,squareLogoElement:x}):/*#__PURE__*/t(E,{})}),/*#__PURE__*/e(u,{children:[/*#__PURE__*/t(k,{children:"Or copy this link and paste it into a phone browser to open the Warpcast app."}),te&&/*#__PURE__*/t(d,{text:te,itemName:"link",color:O})]})]})}),/*#__PURE__*/t(g,{})]})};let F=/*#__PURE__*/m.div.withConfig({displayName:"ConnectContainer",componentId:"sc-d15a94a3-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;"]),D=/*#__PURE__*/m.div.withConfig({displayName:"ConnectContainerButton",componentId:"sc-d15a94a3-1"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);export{L as FarcasterConnectStatusScreen};
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{createWalletClient as s,custom as a,publicActions as m,createPublicClient as c,http as l}from"viem";import{RefactorSpacerTop as p,CenteredItemWithGap as d,RefactorSpacerBottom as u}from"../../components/Layouts.mjs";import{BlobbyFooter as h}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as g}from"../../components/ScreenHeader.mjs";import j from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as f}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as v}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as y}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as b}from"../../errors.mjs";import{usePrivyInternal as I}from"../../hooks/internal-context.mjs";import{usePrivyModal as C}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as T}from"../../hooks/useWallets.mjs";import{toDisplayName as k}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as x}from"../../lib/funding/analytics.mjs";import{getQuote as N,toGetQuoteInput as A,toEvmTransactionRequestInfoFromQuote as E}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as F,RELAY_SOLANA_NATIVE_CURRENCY_ID as L}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as P,getSolanaFormattedAmounts as B}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as M}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as U}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as R}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as W}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as _}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as O}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as H}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../lib/ethers.mjs";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const $=()=>{let{rpcConfig:$,appId:z,closePrivyModal:D,createAnalyticsEvent:G}=I(),{navigate:V,setModalData:Q,app:X,data:Y}=C(),{wallets:Z}=T(),J=U(),[K,oo]=i(null),[to,eo]=i(null),[no,io]=i([]),[ro,so]=i(0),[ao,mo]=i(!1),[co,lo]=i(!1),[po,uo]=i(!1),[ho,go]=i(!1);if(!Y?.funding||"solana"!==Y.funding.chainType)throw Error("Invalid funding data");let{address:jo,cluster:fo,connectedWalletAddress:vo}=Y.funding,[yo,wo]=i(Y.funding.amount),bo=vo?Z.find((({address:o})=>o===vo)):Z[0],[Io,Co]=i(null);r((()=>{(async()=>{if(!bo)return;let o=await bo.getEthereumProvider();Co(s({account:bo.address,transport:a(o)}).extend(m))})().catch(console.error)}),[bo]);let[So,To]=i(0n),ko=P(So);r((()=>{let o=J(R);o?o.getBalance({address:jo,cluster:fo}).then((o=>To(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[xo,No]=i(),{tokenPrice:Ao}=S("solana"),{fundingAmountInBaseUnit:Eo,fundingAmountInUsd:Fo}=B({amount:yo,fee:0n,tokenPrice:Ao});r((()=>{(async()=>{if(!Io||!bo)return;let o=["testnet","devnet"].includes(fo.name);o&&console.warn("Solana testnets are not supported for bridging");let t=v(X.chains).filter((({testnet:t})=>!!t===o)),e=(await M({chains:t,address:bo.address,appId:z,rpcConfig:$})).filter((o=>o.balance>0n));if(e.length<1)return void oo(new w(`Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await N({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void oo(new w(`Unable to fetch quotes for bridging. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:E(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void io(i);let r=i.at(0);r?(lo(!0),No({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):oo(new w(`Unable to select bridge option from quotes. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE))})().catch(console.error)}),[Io]),r((()=>{(async()=>{let o,t;if(!Io||!bo||ao||po||!xo)return;mo(!0);let e=c({chain:xo.chain,transport:l(_(xo.chain,$,z))});try{o=await e.prepareTransactionRequest({account:bo.address,to:xo.to,chain:xo.chain,data:xo.data,value:BigInt(xo.value??0)})}catch(o){console.error(o),no.length>1&&eo(o.shortMessage??"Something went wrong")}if(o){mo(!1),uo(!0);try{await Io.switchChain({id:xo.chain.id})}catch(o){await Io.addChain({chain:xo.chain}),await Io.switchChain({id:xo.chain.id})}try{t=await Io.sendTransaction(o),G({eventName:x,payload:{provider:"external",status:"success",address:bo.address,chainId:xo.chain.id,value:xo.value?.toString(),txHash:t}})}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(no.length<1?oo(new w(o.shortMessage,void 0,b.TRANSACTION_FAILURE)):eo(o.shortMessage??"Something went wrong"))}t?(await Io.waitForTransactionReceipt({hash:t}),uo(!1),go(!0)):uo(!1)}else mo(!1)})().catch(console.error)}),[Io,xo]),r((()=>{if(!K)return;let o={error:K,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Q({funding:Y?.funding,sendTransaction:Y?.sendTransaction,errorModalData:o}),V(q.ERROR_SCREEN,!1)}),[K]);let Lo=bo?k(bo.walletClientType,bo.connectorType,bo.walletClientType)||"wallet":null;if(r((()=>{if(!ho)return;let o=setTimeout(D,y);return()=>clearTimeout(o)}),[ho]),ho/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(p,{}),/*#__PURE__*/o(d,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(g,{title:"Success!",description:`You’ve successfully added ${yo} SOL to your ${X.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(u,{}),/*#__PURE__*/e(h,{})]});let Po=no[ro];return no.length>1&&Po?/*#__PURE__*/e(O,{displayName:Lo,configuredFundingChain:fo,formattedBalance:ko,fundingAmount:yo,fundingCurrency:"SOL",fundingAmountInUsd:Fo,options:no,selectedOption:Po,isPreparing:ao,isSubmitting:po,addressToFund:jo,fundingWalletAddress:bo?.address||"",errorMessage:to,onSubmit:()=>{Y.funding?.amount!==yo?async function(){if(bo&&Po)try{let o=await N({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:Po.chain.id})}),t=E(o);if(!t)throw Error("Invalid transaction request");lo(!0),No({data:t.data,to:t.to,value:t.value,chain:Po.chain})}catch(o){console.error(o),oo(new w("Unable to fetch quotes for bridging",o,b.INSUFFICIENT_BALANCE))}}().catch(console.error):No({to:Po.bridgeTx.to,data:Po.bridgeTx.data,value:Po.bridgeTx.value,chain:Po.chain})},onSelect:o=>{o!==ro&&(eo(null),so(o))},onAmountChange:wo}):po&&bo?/*#__PURE__*/e(H,{wallet:bo,displayName:Lo,addressToFund:jo,isBridging:co,isErc20Flow:!1,chainId:"solana",chainName:fo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
1
+ import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{createWalletClient as s,custom as a,publicActions as m,createPublicClient as c,http as l}from"viem";import{RefactorSpacerTop as p,CenteredItemWithGap as d,RefactorSpacerBottom as u}from"../../components/Layouts.mjs";import{BlobbyFooter as h}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as g}from"../../components/ScreenHeader.mjs";import j from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as f}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as v}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as y}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as b}from"../../errors.mjs";import{usePrivyInternal as I}from"../../hooks/internal-context.mjs";import{usePrivyModal as C}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as T}from"../../hooks/useWallets.mjs";import{toDisplayName as k}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as x}from"../../lib/funding/analytics.mjs";import{getQuote as N,toGetQuoteInput as A,toEvmTransactionRequestInfoFromQuote as E}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as F,RELAY_SOLANA_NATIVE_CURRENCY_ID as L}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as P,getSolanaFormattedAmounts as B}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as M}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as U}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as R}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as W}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as _}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as O}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as H}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../lib/ethers.mjs";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const $=()=>{let{rpcConfig:$,appId:z,closePrivyModal:D,createAnalyticsEvent:G}=I(),{navigate:V,setModalData:Q,app:X,data:Y}=C(),{wallets:Z}=T(),J=U(),[K,oo]=i(null),[to,eo]=i(null),[no,io]=i([]),[ro,so]=i(0),[ao,mo]=i(!1),[co,lo]=i(!1),[po,uo]=i(!1),[ho,go]=i(!1);if(!Y?.funding||"solana"!==Y.funding.chainType)throw Error("Invalid funding data");let{address:jo,cluster:fo,connectedWalletAddress:vo}=Y.funding,[yo,wo]=i(Y.funding.amount),bo=vo?Z.find((({address:o})=>o===vo)):Z[0],[Io,Co]=i(null);r((()=>{(async()=>{if(!bo)return;let o=await bo.getEthereumProvider();Co(s({account:bo.address,transport:a(o)}).extend(m))})().catch(console.error)}),[bo]);let[So,To]=i(0n),ko=P(So);r((()=>{let o=J(R);o?o.getBalance({address:jo,cluster:fo}).then((o=>To(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[xo,No]=i(),{tokenPrice:Ao}=S("solana"),{fundingAmountInBaseUnit:Eo,fundingAmountInUsd:Fo}=B({amount:yo,fee:0n,tokenPrice:Ao});r((()=>{(async()=>{if(!Io||!bo)return;let o=["testnet","devnet"].includes(fo.name);o&&console.warn("Solana testnets are not supported for bridging");let t=v(X.chains).filter((({testnet:t})=>!!t===o)),e=(await M({chains:t,address:bo.address,appId:z,rpcConfig:$})).filter((o=>o.balance>0n));if(e.length<1)return void oo(new w(`Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await N({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void oo(new w(`Unable to fetch quotes for bridging. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:E(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void io(i);let r=i.at(0);r?(lo(!0),No({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):oo(new w(`Unable to select bridge option from quotes. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE))})().catch(console.error)}),[Io]),r((()=>{(async()=>{let o,t;if(!Io||!bo||ao||po||!xo)return;mo(!0);let e=c({chain:xo.chain,transport:l(_(xo.chain,$,z))});try{o=await e.prepareTransactionRequest({account:bo.address,to:xo.to,chain:xo.chain,data:xo.data,value:BigInt(xo.value??0)})}catch(o){console.error(o),no.length>1&&eo(o.shortMessage??"Something went wrong")}if(o){mo(!1),uo(!0);try{await Io.switchChain({id:xo.chain.id})}catch(o){await Io.addChain({chain:xo.chain}),await Io.switchChain({id:xo.chain.id})}try{t=await Io.sendTransaction(o),G({eventName:x,payload:{provider:"external",status:"success",address:bo.address,chainId:xo.chain.id,value:xo.value?.toString(),txHash:t}})}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(no.length<1?oo(new w(o.shortMessage,void 0,b.TRANSACTION_FAILURE)):eo(o.shortMessage??"Something went wrong"))}t?(await Io.waitForTransactionReceipt({hash:t}),uo(!1),go(!0)):uo(!1)}else mo(!1)})().catch(console.error)}),[Io,xo]),r((()=>{if(!K)return;let o={error:K,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Q({funding:Y?.funding,sendTransaction:Y?.sendTransaction,errorModalData:o}),V(q.ERROR_SCREEN,!1)}),[K]);let Lo=bo?k(bo.walletClientType,bo.connectorType,bo.walletClientType)||"wallet":null;if(r((()=>{if(!ho)return;let o=setTimeout(D,y);return()=>clearTimeout(o)}),[ho]),ho/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(p,{}),/*#__PURE__*/o(d,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(g,{title:"Success!",description:`You’ve successfully added ${yo} SOL to your ${X.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(u,{}),/*#__PURE__*/e(h,{})]});let Po=no[ro];return no.length>1&&Po?/*#__PURE__*/e(O,{displayName:Lo,configuredFundingChain:fo,formattedBalance:ko,fundingAmount:yo,fundingCurrency:"SOL",fundingAmountInUsd:Fo,options:no,selectedOption:Po,isPreparing:ao,isSubmitting:po,addressToFund:jo,fundingWalletAddress:bo?.address||"",errorMessage:to,onSubmit:()=>{Y.funding?.amount!==yo?async function(){if(bo&&Po)try{let o=await N({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:Po.chain.id})}),t=E(o);if(!t)throw Error("Invalid transaction request");lo(!0),No({data:t.data,to:t.to,value:t.value,chain:Po.chain})}catch(o){console.error(o),oo(new w("Unable to fetch quotes for bridging",o,b.INSUFFICIENT_BALANCE))}}().catch(console.error):No({to:Po.bridgeTx.to,data:Po.bridgeTx.data,value:Po.bridgeTx.value,chain:Po.chain})},onSelect:o=>{o!==ro&&(eo(null),so(o))},onAmountChange:wo}):po&&bo?/*#__PURE__*/e(H,{wallet:bo,displayName:Lo,addressToFund:jo,isBridging:co,isErc20Flow:!1,chainId:"solana",chainName:fo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
2
2
  /*#__PURE__*/o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(f,{}),/*#__PURE__*/e("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/e(h,{})]})};export{$ as AwaitingEvmToSolBridgingScreen};
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as t,jsx as n}from"react/jsx-runtime";import e from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useRef as r,useEffect as s}from"react";import{RefactorSpacerTop as m,CenteredItemWithGap as a,RefactorSpacerBottom as c}from"../../components/Layouts.mjs";import{BlobbyFooter as l}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as p}from"../../components/ScreenHeader.mjs";import u from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as d}from"../../components/primitives/NeutralSpinner/index.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as j}from"../../constants.mjs";import{PrivyClientError as h,PrivyErrorCode as f}from"../../errors.mjs";import{usePrivyInternal as g}from"../../hooks/internal-context.mjs";import{usePrivyModal as v}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as y}from"../../hooks/useGetTokenPrice.mjs";import{toDisplayName as w}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as I}from"../../lib/funding/analytics.mjs";import{getSolanaRpcEndpointForCluster as b}from"../../lib/solana/index.mjs";import{getSolanaFormattedAmounts as T}from"../../lib/solana/transaction.mjs";import{usePlugins as S}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as k}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as A}from"../../utils/index.mjs";import{ModalScreen as C}from"../index.mjs";import{TransferOrBridgeLoadingScreen as N}from"./TransferOrBridgeLoadingScreen.mjs";import{useSolanaWallets as x}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../hooks/useWallets.mjs";const E=()=>{let{closePrivyModal:E,createAnalyticsEvent:P}=g(),{navigate:R,setModalData:F,app:L,data:U}=v(),{wallets:M}=x(),_=S(),[O,W]=i(0n),[B,H]=i(null),[z,G]=i(!1),[D,$]=i(!1),q=r(!1);if(!U?.funding||"solana"!==U.funding.chainType)throw Error("Invalid funding data");let{address:Q,amount:V,cluster:X,connectedWalletAddress:Y}=U.funding,Z=b(X),{tokenPrice:J}=y("solana"),{fundingAmountInBaseUnit:K,totalPriceInUsd:oo,totalPriceInNativeCurrency:to,feePriceInNativeCurrency:no,feePriceInUsd:eo}=T({amount:V,fee:O,tokenPrice:J}),io=Y?M.find((({address:o})=>o===Y)):M[0];if(s((()=>{(async()=>{if("solana"===io?.type&&io.sendTransaction&&!z&&!q.current){q.current=!0;try{let o=_(k);if(!o)throw new h("Unable to load solana plugin");let{connection:t,transaction:n}=await o.createTransferTransaction({from:io.address,to:Q,amount:K,cluster:X}),e=await n.getEstimatedFee(t);null!=e&&W(BigInt(e)),G(!0);let i=await t.simulateTransaction(n);if(i.value.err)return i.value.logs?.find((o=>/insufficient (lamports|funds)/gi.test(o)))?void H(new h(`Wallet ${A(io.address,void 0,void 0,"solana")} does not have enough funds.`,void 0,f.INSUFFICIENT_BALANCE)):(console.error("Transaction failed:",i.value.err),void H(new h("Something went wrong",void 0,f.TRANSACTION_FAILURE)));let r=await io.sendTransaction(n,t);P({eventName:I,payload:{provider:"external",status:"success",address:io.address,value:K.toString(),txHash:r,chainType:"solana",rpcEndpoint:Z}}),G(!1),$(!0)}catch(o){if(console.error(o),G(!1),/user rejected the request/gi.test(o.message||""))return void H(new h("Transaction was rejected by the user",void 0,f.TRANSACTION_FAILURE));H(new h("Something went wrong",void 0,f.TRANSACTION_FAILURE))}}})().catch(console.error).finally((()=>q.current=!1))}),[]),s((()=>{if(!B)return;let o={error:B,previousScreen:C.FUNDING_TRANSFER_FROM_WALLET_SCREEN};F({funding:U?.funding,sendTransaction:U?.sendTransaction,errorModalData:o}),R(C.ERROR_SCREEN,!1)}),[B]),s((()=>{if(!D)return;let o=setTimeout(E,j);return()=>clearTimeout(o)}),[D]),D/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/n(u,{}),/*#__PURE__*/n(m,{}),/*#__PURE__*/o(a,{children:[/*#__PURE__*/n(e,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n(p,{title:"Success!",description:`You’ve successfully added ${V} SOL to your ${L.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n(c,{}),/*#__PURE__*/n(l,{})]});let ro=io?w(io.walletClientType,io.connectorType,io.walletClientType)||"wallet":null;return io&&z?/*#__PURE__*/n(N,{wallet:io,displayName:ro,addressToFund:Q,isBridging:!1,isErc20Flow:!1,totalPriceInUsd:oo,totalPriceInNativeCurrency:to,gasPriceInUsd:eo,gasPriceInNativeCurrency:no,chainId:"solana",chainName:X.name}):
1
+ import{jsxs as o,Fragment as t,jsx as n}from"react/jsx-runtime";import e from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useRef as r,useEffect as s}from"react";import{RefactorSpacerTop as m,CenteredItemWithGap as a,RefactorSpacerBottom as c}from"../../components/Layouts.mjs";import{BlobbyFooter as l}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as p}from"../../components/ScreenHeader.mjs";import u from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as d}from"../../components/primitives/NeutralSpinner/index.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as j}from"../../constants.mjs";import{PrivyClientError as h,PrivyErrorCode as f}from"../../errors.mjs";import{usePrivyInternal as g}from"../../hooks/internal-context.mjs";import{usePrivyModal as v}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as y}from"../../hooks/useGetTokenPrice.mjs";import{toDisplayName as w}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as I}from"../../lib/funding/analytics.mjs";import{getSolanaRpcEndpointForCluster as b}from"../../lib/solana/index.mjs";import{getSolanaFormattedAmounts as T}from"../../lib/solana/transaction.mjs";import{usePlugins as S}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as k}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as A}from"../../utils/index.mjs";import{ModalScreen as C}from"../index.mjs";import{TransferOrBridgeLoadingScreen as N}from"./TransferOrBridgeLoadingScreen.mjs";import{useSolanaWallets as x}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../hooks/useWallets.mjs";const E=()=>{let{closePrivyModal:E,createAnalyticsEvent:P}=g(),{navigate:R,setModalData:F,app:L,data:U}=v(),{wallets:M}=x(),_=S(),[O,W]=i(0n),[B,H]=i(null),[z,G]=i(!1),[D,$]=i(!1),q=r(!1);if(!U?.funding||"solana"!==U.funding.chainType)throw Error("Invalid funding data");let{address:Q,amount:V,cluster:X,connectedWalletAddress:Y}=U.funding,Z=b(X),{tokenPrice:J}=y("solana"),{fundingAmountInBaseUnit:K,totalPriceInUsd:oo,totalPriceInNativeCurrency:to,feePriceInNativeCurrency:no,feePriceInUsd:eo}=T({amount:V,fee:O,tokenPrice:J}),io=Y?M.find((({address:o})=>o===Y)):M[0];if(s((()=>{(async()=>{if("solana"===io?.type&&io.sendTransaction&&!z&&!q.current){q.current=!0;try{let o=_(k);if(!o)throw new h("Unable to load solana plugin");let{connection:t,transaction:n}=await o.createTransferTransaction({from:io.address,to:Q,amount:K,cluster:X}),e=await n.getEstimatedFee(t);null!=e&&W(BigInt(e)),G(!0);let i=await t.simulateTransaction(n);if(i.value.err)return i.value.logs?.find((o=>/insufficient (lamports|funds)/gi.test(o)))?void H(new h(`Wallet ${A(io.address,void 0,void 0,"solana")} does not have enough funds.`,void 0,f.INSUFFICIENT_BALANCE)):(console.error("Transaction failed:",i.value.err),void H(new h("Something went wrong",void 0,f.TRANSACTION_FAILURE)));let r=await io.sendTransaction(n,t);P({eventName:I,payload:{provider:"external",status:"success",address:io.address,value:K.toString(),txHash:r,chainType:"solana",rpcEndpoint:Z}}),G(!1),$(!0)}catch(o){if(console.error(o),G(!1),/user rejected the request/gi.test(o.message||""))return void H(new h("Transaction was rejected by the user",void 0,f.TRANSACTION_FAILURE));H(new h("Something went wrong",void 0,f.TRANSACTION_FAILURE))}}})().catch(console.error).finally((()=>q.current=!1))}),[]),s((()=>{if(!B)return;let o={error:B,previousScreen:C.FUNDING_TRANSFER_FROM_WALLET_SCREEN};F({funding:U?.funding,sendTransaction:U?.sendTransaction,errorModalData:o}),R(C.ERROR_SCREEN,!1)}),[B]),s((()=>{if(!D)return;let o=setTimeout(E,j);return()=>clearTimeout(o)}),[D]),D/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/n(u,{}),/*#__PURE__*/n(m,{}),/*#__PURE__*/o(a,{children:[/*#__PURE__*/n(e,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n(p,{title:"Success!",description:`You’ve successfully added ${V} SOL to your ${L.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n(c,{}),/*#__PURE__*/n(l,{})]});let ro=io?w(io.walletClientType,io.connectorType,io.walletClientType)||"wallet":null;return io&&z?/*#__PURE__*/n(N,{wallet:io,displayName:ro,addressToFund:Q,isBridging:!1,isErc20Flow:!1,totalPriceInUsd:oo,totalPriceInNativeCurrency:to,gasPriceInUsd:eo,gasPriceInNativeCurrency:no,chainId:"solana",chainName:X.name}):
2
2
  /*#__PURE__*/o(t,{children:[/*#__PURE__*/n(u,{}),/*#__PURE__*/n(d,{}),/*#__PURE__*/n("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/n(l,{})]})};export{E as AwaitingExternalSolanaTransferScreen};
@@ -1 +1 @@
1
- import{jsx as o,Fragment as e,jsxs as n}from"react/jsx-runtime";import{useState as t,useEffect as r,useMemo as s}from"react";import{formatTokenAmount as i,formatWeiAmount as a}from"@privy-io/js-sdk-core";import{PrimaryButton as m}from"../../components/Button.mjs";import{FlexContainer as c}from"../../components/Layouts.mjs";import{BlobbyFooter as l}from"../../components/ModalFooter.mjs";import{QrCode as p}from"../../components/QrCode.mjs";import d from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{InfoBanner as u}from"../../components/ui/banners/InfoBanner.mjs";import{Subtitle as h}from"../../components/ui/typography/Subtitle.mjs";import{Title as j}from"../../components/ui/typography/Title.mjs";import{WalletInfoCard as f}from"../../components/ui/wallet/WalletInfoCard.mjs";import{useAppConfig as g}from"../../configuration/context.mjs";import{usePrivyInternal as y}from"../../hooks/internal-context.mjs";import{usePrivyModal as v}from"../../hooks/modal-context.mjs";import{useWalletBalance as b}from"../../hooks/useWalletBalance.mjs";import{useWallets as C}from"../../hooks/useWallets.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as I}from"../../lib/funding/analytics.mjs";import{getNativeCurrencyFromLamports as S}from"../../lib/solana/transaction.mjs";import{getErc20Balance as k}from"../../lib/wallets/actions/getErc20Balance.mjs";import{usePlugins as w}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as T}from"../../plugins/solana-funding/id.mjs";import{Blobby as E}from"../../svg/blobby.mjs";import{formatWalletAddress as x}from"../../utils/index.mjs";import{ModalScreen as A}from"../index.mjs";import{useSolanaWallets as M}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../svg/protected-by-privy.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"@heroicons/react/24/outline/InformationCircleIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/shared.mjs";import"../../components/PrefetchedImage.mjs";import"../../utils/buffer/readBigInt64LE.mjs";const L=()=>{let{wallets:E}=C(),{wallets:L}=M(),{data:R,setModalData:D,navigate:P,lastScreen:F}=v(),{rpcConfig:O,appId:W,createAnalyticsEvent:q,closePrivyModal:z}=y(),H=g(),[$,_]=t(void 0),[U,Q]=t(!1),X=w(),G=R?.funding,{reloadBalance:Y}=b({rpcConfig:O,appId:W,address:"ethereum"===G.chainType?G.address:void 0,chain:"ethereum"===G.chainType?G.chain:void 0}),J="solana"===G.chainType,K=J?"SOL":G.erc20Address?G.erc20ContractInfo?.symbol:G.chain.nativeCurrency.symbol,V=J?L.find((({address:o})=>o===G.address)):E.find((({address:o})=>x(o)===x(G.address)));if(!G)return D({errorModalData:{error:Error("Couldn't find funding config"),previousScreen:F||A.FUNDING_METHOD_SELECTION_SCREEN},funding:R?.funding,sendTransaction:R?.sendTransaction}),P(A.ERROR_SCREEN),/*#__PURE__*/o(e,{});r((()=>{let o=J?async function(){if("solana"!==G.chainType)return;let o=X(T);o?o.getBalance({address:G.address,cluster:G.cluster}).then((o=>{let e=BigInt(o);$&&e>$&&(Q(!0),q({eventName:I,payload:{provider:"manual",status:"success",chainType:"solana",address:V?.address,value:(e-$).toString()}})),_(e)})):console.warn("Unable to load solana plugin, skipping balance")}:async function(){"ethereum"===G.chainType&&(async()=>{if(!G.erc20Address)return await Y()??BigInt(0);{let{balance:o}=await k({chain:G.chain,address:G.address,erc20Address:G.erc20Address,rpcConfig:O,appId:W});return o}})().then((o=>{$&&o>$&&(Q(!0),q({eventName:I,payload:{provider:"manual",status:"success",chainType:"ethereum",address:V?.address,value:(o-$).toString()}})),_(o)})).catch((()=>_(void 0)))},e=setInterval(o,2e3);return o(),()=>clearInterval(e)}),[$]);let Z=s((()=>void 0!==$&&$>=parseFloat(G.amount)),[$,G.amount]),oo=s((()=>null==$?"":G.isUSDC?i({amount:$,decimals:6}):J?S($,3,!0,!0):null!=G.erc20ContractInfo?.decimals?i({amount:$,decimals:G.erc20ContractInfo.decimals}):a({wei:$})),[$,J,G]),eo="ethereum"===G.chainType?G.chain.name:N[G.cluster.name];/*#__PURE__*/return n(e,{children:[/*#__PURE__*/o(d,{}),/*#__PURE__*/n(j,{children:["Receive ",G.amount," ",K]}),/*#__PURE__*/n(h,{children:["Scan this code or copy your wallet address to receive funds on ",eo,"."]}),/*#__PURE__*/n(c,{style:{gap:"1rem",margin:"1rem 0"},children:[/*#__PURE__*/o(p,{url:`${G.chainType}:${G.address}`,size:200,squareLogoElement:B}),/*#__PURE__*/n(u,{theme:H.appearance.palette.colorScheme,children:["Make sure to send funds on ",eo,"."]}),/*#__PURE__*/o(f,{title:"Your wallet",errMsg:void 0,showIcon:!0,isLoading:!G||void 0===$,isPulsing:!Z,balance:`${oo} ${K}`,address:G.address,statusColor:Z?"green":"gray"}),U&&/*#__PURE__*/o(m,{onClick:()=>z({shouldCallAuthOnSuccess:!1,isSuccess:!0}),children:"Continue"})]}),/*#__PURE__*/o(l,{})]})};let B=({...e})=>/*#__PURE__*/o(E,{color:"black",...e}),N={devnet:"Devnet","mainnet-beta":"Solana",testnet:"Testnet"};export{L as ManualTransferScreen};
1
+ import{jsx as o,Fragment as e,jsxs as n}from"react/jsx-runtime";import{useState as t,useEffect as r,useMemo as s}from"react";import{formatTokenAmount as i,formatWeiAmount as a}from"@privy-io/js-sdk-core";import{PrimaryButton as m}from"../../components/Button.mjs";import{FlexContainer as c}from"../../components/Layouts.mjs";import{BlobbyFooter as l}from"../../components/ModalFooter.mjs";import{QrCode as p}from"../../components/QrCode.mjs";import d from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{InfoBanner as u}from"../../components/ui/banners/InfoBanner.mjs";import{Subtitle as h}from"../../components/ui/typography/Subtitle.mjs";import{Title as j}from"../../components/ui/typography/Title.mjs";import{WalletInfoCard as f}from"../../components/ui/wallet/WalletInfoCard.mjs";import{useAppConfig as g}from"../../configuration/context.mjs";import{usePrivyInternal as y}from"../../hooks/internal-context.mjs";import{usePrivyModal as v}from"../../hooks/modal-context.mjs";import{useWalletBalance as b}from"../../hooks/useWalletBalance.mjs";import{useWallets as C}from"../../hooks/useWallets.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as I}from"../../lib/funding/analytics.mjs";import{getNativeCurrencyFromLamports as S}from"../../lib/solana/transaction.mjs";import{getErc20Balance as k}from"../../lib/wallets/actions/getErc20Balance.mjs";import{usePlugins as w}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as T}from"../../plugins/solana-funding/id.mjs";import{Blobby as E}from"../../svg/blobby.mjs";import{formatWalletAddress as x}from"../../utils/index.mjs";import{ModalScreen as A}from"../index.mjs";import{useSolanaWallets as M}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../svg/protected-by-privy.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"@heroicons/react/24/outline/InformationCircleIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/shared.mjs";import"../../components/PrefetchedImage.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";const L=()=>{let{wallets:E}=C(),{wallets:L}=M(),{data:R,setModalData:D,navigate:P,lastScreen:F}=v(),{rpcConfig:O,appId:W,createAnalyticsEvent:q,closePrivyModal:z}=y(),H=g(),[$,_]=t(void 0),[U,Q]=t(!1),X=w(),G=R?.funding,{reloadBalance:Y}=b({rpcConfig:O,appId:W,address:"ethereum"===G.chainType?G.address:void 0,chain:"ethereum"===G.chainType?G.chain:void 0}),J="solana"===G.chainType,K=J?"SOL":G.erc20Address?G.erc20ContractInfo?.symbol:G.chain.nativeCurrency.symbol,V=J?L.find((({address:o})=>o===G.address)):E.find((({address:o})=>x(o)===x(G.address)));if(!G)return D({errorModalData:{error:Error("Couldn't find funding config"),previousScreen:F||A.FUNDING_METHOD_SELECTION_SCREEN},funding:R?.funding,sendTransaction:R?.sendTransaction}),P(A.ERROR_SCREEN),/*#__PURE__*/o(e,{});r((()=>{let o=J?async function(){if("solana"!==G.chainType)return;let o=X(T);o?o.getBalance({address:G.address,cluster:G.cluster}).then((o=>{let e=BigInt(o);$&&e>$&&(Q(!0),q({eventName:I,payload:{provider:"manual",status:"success",chainType:"solana",address:V?.address,value:(e-$).toString()}})),_(e)})):console.warn("Unable to load solana plugin, skipping balance")}:async function(){"ethereum"===G.chainType&&(async()=>{if(!G.erc20Address)return await Y()??BigInt(0);{let{balance:o}=await k({chain:G.chain,address:G.address,erc20Address:G.erc20Address,rpcConfig:O,appId:W});return o}})().then((o=>{$&&o>$&&(Q(!0),q({eventName:I,payload:{provider:"manual",status:"success",chainType:"ethereum",address:V?.address,value:(o-$).toString()}})),_(o)})).catch((()=>_(void 0)))},e=setInterval(o,2e3);return o(),()=>clearInterval(e)}),[$]);let Z=s((()=>void 0!==$&&$>=parseFloat(G.amount)),[$,G.amount]),oo=s((()=>null==$?"":G.isUSDC?i({amount:$,decimals:6}):J?S($,3,!0,!0):null!=G.erc20ContractInfo?.decimals?i({amount:$,decimals:G.erc20ContractInfo.decimals}):a({wei:$})),[$,J,G]),eo="ethereum"===G.chainType?G.chain.name:N[G.cluster.name];/*#__PURE__*/return n(e,{children:[/*#__PURE__*/o(d,{}),/*#__PURE__*/n(j,{children:["Receive ",G.amount," ",K]}),/*#__PURE__*/n(h,{children:["Scan this code or copy your wallet address to receive funds on ",eo,"."]}),/*#__PURE__*/n(c,{style:{gap:"1rem",margin:"1rem 0"},children:[/*#__PURE__*/o(p,{url:`${G.chainType}:${G.address}`,size:200,squareLogoElement:B}),/*#__PURE__*/n(u,{theme:H.appearance.palette.colorScheme,children:["Make sure to send funds on ",eo,"."]}),/*#__PURE__*/o(f,{title:"Your wallet",errMsg:void 0,showIcon:!0,isLoading:!G||void 0===$,isPulsing:!Z,balance:`${oo} ${K}`,address:G.address,statusColor:Z?"green":"gray"}),U&&/*#__PURE__*/o(m,{onClick:()=>z({shouldCallAuthOnSuccess:!1,isSuccess:!0}),children:"Continue"})]}),/*#__PURE__*/o(l,{})]})};let B=({...e})=>/*#__PURE__*/o(E,{color:"black",...e}),N={devnet:"Devnet","mainnet-beta":"Solana",testnet:"Testnet"};export{L as ManualTransferScreen};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/DevicePhoneMobileIcon";import r from"@heroicons/react/24/outline/FingerPrintIcon";import i from"@heroicons/react/24/outline/PhoneIcon";import s from"@heroicons/react/24/outline/ShieldCheckIcon";import{useState as c,useEffect as m,useRef as a}from"react";import{SecondaryButton as l}from"../../components/Button.mjs";import{ModalFooter as p}from"../../components/ModalFooter.mjs";import{ModalHeader as d}from"../../components/ModalHeader.mjs";import{NumericPinInput as h}from"../../components/PinInput.mjs";import{TransactionDetailsWrapper as u}from"../../components/embedded-wallets/TransactionDetailsWrapper.mjs";import{errorIndicatesMaxMfaRetries as j,errorIndicatesMfaVerificationFailed as f,errorIndicatesMfaTimeout as y}from"../../embedded-wallets/errors.mjs";import{usePrivyInternal as g}from"../../hooks/internal-context.mjs";import{usePrivyModal as k}from"../../hooks/modal-context.mjs";import{usePrivyContext as b}from"../../hooks/privy-context.mjs";import{useMfa as C}from"../../hooks/useMfa.mjs";import{LoginMethodButton as w}from"../LandingScreen/styles.mjs";import{IconWrapper as v,Title as S,SubTitle as M,MethodList as x,Container as I,PrimaryTextButton as T}from"./StyledComponents.mjs";import{VerifyWithPasskey as A}from"./VerifyWithPasskey.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"react-device-detect";import"viem";import"../../hooks/useGetTokenPrice.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../hooks/useWallets.mjs";import"../../lib/viem/prepareTransactionRequest.mjs";import"../../lib/viem/toViemTransactionSerializable.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../components/embedded-wallets/TransactionDetails.mjs";import"../../components/embedded-wallets/DisplayInfoItem.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../components/embedded-wallets/TransactionTotal.mjs";import"../../components/Layouts.mjs";import"../../components/primitives/Accordion/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/Accordion/AccordionContext.mjs";import"../../components/embedded-wallets/WalletLink.mjs";import"../../embedded-wallets/types.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/CalendarIcon";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/layout/StackedContainer.mjs";import"../../svg/face-id.mjs";const P=({open:l,onClose:h})=>{let{user:u}=b(),[g,k]=c(u?.mfaMethods[0]??null),{init:I,cancel:T,submit:P}=C(),[B,D]=c(!1),[L,V]=c(!1),[z,W]=c(null),[F,G]=c(null);m((()=>{k(u?.mfaMethods[0]??null)}),[u?.mfaMethods]);let H=a(!1);m((()=>{!H.current&&g&&l&&(H.current=!0,R(g).finally((()=>{H.current=!1})))}),[l]);let N=o=>j(o)?(D(!0),Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.")):f(o)?(D(!1),Error("The code you entered is not valid")):y(o)?(D(!0),Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.")):(console.error(o),D(!1),Error("Something went wrong."));async function O(o){G(null);try{if(!o||!g)return;await P(g,o),V(!0),D(!1),h()}catch(o){throw N(o)}}async function R(o){if("passkey"!==o)try{k(o),await I(o)}catch(o){console.error(o)}else try{k(o);let e=await I(o);if(!e)throw Error("something went wrong");W(e),await P(o,e),V(!0),D(!1),h()}catch(o){G(N(o))}}let Y=()=>{k(null),G(null),T(),h()};return l&&u?"passkey"===g?/*#__PURE__*/o(A,{account:u.linkedAccounts.filter((o=>"passkey"===o.type&&o.enrolledInMfa)).sort(((o,e)=>e.firstVerifiedAt.valueOf()-o.firstVerifiedAt.valueOf()))[0],selectedMethod:g,submitSuccess:L,hasBlockingError:B,error:F,onClose:Y,onBack:()=>{k(null),G(null)},handleSubmit:()=>O(z).catch(G)}):g?/*#__PURE__*/o(E,{submitSuccess:L,hasBlockingError:B,handleSubmitCode:O,selectedMethod:g,onClose:Y,onBack:u.mfaMethods.length>1?()=>k(null):void 0}):/*#__PURE__*/e(t,{children:[/*#__PURE__*/o(d,{onClose:Y},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(s,{})}),/*#__PURE__*/o(S,{children:"Verify your identity"}),/*#__PURE__*/o(M,{children:"Choose a verification method"}),/*#__PURE__*/e(x,{children:[u.mfaMethods.includes("totp")&&/*#__PURE__*/e(w,{onClick:()=>R("totp"),children:[/*#__PURE__*/o(n,{}),"Authenticator App"]},"totp"),u.mfaMethods.includes("sms")&&/*#__PURE__*/e(w,{onClick:()=>R("sms"),children:[/*#__PURE__*/o(i,{}),"SMS"]},"sms"),u.mfaMethods.includes("passkey")&&/*#__PURE__*/e(w,{onClick:()=>R("passkey"),children:[/*#__PURE__*/o(r,{}),"Passkey"]},"passkey")]}),/*#__PURE__*/o(p,{})]}):null};let E=({selectedMethod:r,submitSuccess:s,hasBlockingError:c,onClose:m,onBack:a,handleSubmitCode:j})=>{let{app:f}=k(),{pendingTransaction:y}=g();switch(r){case"sms":/*#__PURE__*/return e(t,{children:[/*#__PURE__*/o(d,{onClose:m},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(i,{})}),/*#__PURE__*/o(S,{children:"Enter verification code"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/o(h,{success:s,disabled:c,onChange:j}),/*#__PURE__*/e(M,{children:["To continue, please enter the 6-digit code sent to your ",/*#__PURE__*/o("strong",{children:"mobile device"})]}),y&&/*#__PURE__*/o(u,{pendingTransaction:y})]}),a&&/*#__PURE__*/o(T,{theme:f?.appearance.palette.colorScheme,onClick:a,children:"Choose another method"}),/*#__PURE__*/o(l,{onClick:m,children:"Not now"}),/*#__PURE__*/o(p,{})]});case"totp":/*#__PURE__*/return e(t,{children:[/*#__PURE__*/o(d,{onClose:m},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(n,{})}),/*#__PURE__*/o(S,{children:"Enter verification code"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/o(h,{success:s,disabled:c,onChange:j}),/*#__PURE__*/e(M,{children:["To continue, please enter the 6-digit code generated from your"," ",/*#__PURE__*/o("strong",{children:"authenticator app"})]}),y&&/*#__PURE__*/o(u,{pendingTransaction:y})]}),a&&/*#__PURE__*/o(T,{theme:f?.appearance.palette.colorScheme,onClick:a,children:"Choose another method"}),/*#__PURE__*/o(l,{onClick:m,children:"Not now"}),/*#__PURE__*/o(p,{})]});default:return null}};export{P as MfaVerifyFlowScreen};
1
+ import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/DevicePhoneMobileIcon";import r from"@heroicons/react/24/outline/FingerPrintIcon";import i from"@heroicons/react/24/outline/PhoneIcon";import s from"@heroicons/react/24/outline/ShieldCheckIcon";import{useState as c,useEffect as m,useRef as a}from"react";import{SecondaryButton as l}from"../../components/Button.mjs";import{ModalFooter as p}from"../../components/ModalFooter.mjs";import{ModalHeader as d}from"../../components/ModalHeader.mjs";import{NumericPinInput as h}from"../../components/PinInput.mjs";import{TransactionDetailsWrapper as u}from"../../components/embedded-wallets/TransactionDetailsWrapper.mjs";import{errorIndicatesMaxMfaRetries as j,errorIndicatesMfaVerificationFailed as f,errorIndicatesMfaTimeout as y}from"../../embedded-wallets/errors.mjs";import{usePrivyInternal as g}from"../../hooks/internal-context.mjs";import{usePrivyModal as k}from"../../hooks/modal-context.mjs";import{usePrivyContext as b}from"../../hooks/privy-context.mjs";import{useMfa as C}from"../../hooks/useMfa.mjs";import{LoginMethodButton as w}from"../LandingScreen/styles.mjs";import{IconWrapper as v,Title as S,SubTitle as M,MethodList as x,Container as I,PrimaryTextButton as T}from"./StyledComponents.mjs";import{VerifyWithPasskey as A}from"./VerifyWithPasskey.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"react-device-detect";import"viem";import"../../hooks/useGetTokenPrice.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../hooks/useWallets.mjs";import"../../lib/viem/prepareTransactionRequest.mjs";import"../../lib/viem/toViemTransactionSerializable.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../components/embedded-wallets/TransactionDetails.mjs";import"../../components/embedded-wallets/DisplayInfoItem.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../components/embedded-wallets/TransactionTotal.mjs";import"../../components/Layouts.mjs";import"../../components/primitives/Accordion/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/Accordion/AccordionContext.mjs";import"../../components/embedded-wallets/WalletLink.mjs";import"../../embedded-wallets/types.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/CalendarIcon";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/layout/StackedContainer.mjs";import"../../svg/face-id.mjs";const P=({open:l,onClose:h})=>{let{user:u}=b(),[g,k]=c(u?.mfaMethods[0]??null),{init:I,cancel:T,submit:P}=C(),[B,D]=c(!1),[L,V]=c(!1),[z,W]=c(null),[F,G]=c(null);m((()=>{k(u?.mfaMethods[0]??null)}),[u?.mfaMethods]);let H=a(!1);m((()=>{!H.current&&g&&l&&(H.current=!0,R(g).finally((()=>{H.current=!1})))}),[l]);let N=o=>j(o)?(D(!0),Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.")):f(o)?(D(!1),Error("The code you entered is not valid")):y(o)?(D(!0),Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.")):(console.error(o),D(!1),Error("Something went wrong."));async function O(o){G(null);try{if(!o||!g)return;await P(g,o),V(!0),D(!1),h()}catch(o){throw N(o)}}async function R(o){if("passkey"!==o)try{k(o),await I(o)}catch(o){console.error(o)}else try{k(o);let e=await I(o);if(!e)throw Error("something went wrong");W(e),await P(o,e),V(!0),D(!1),h()}catch(o){G(N(o))}}let Y=()=>{k(null),G(null),T(),h()};return l&&u?"passkey"===g?/*#__PURE__*/o(A,{account:u.linkedAccounts.filter((o=>"passkey"===o.type&&o.enrolledInMfa)).sort(((o,e)=>e.firstVerifiedAt.valueOf()-o.firstVerifiedAt.valueOf()))[0],selectedMethod:g,submitSuccess:L,hasBlockingError:B,error:F,onClose:Y,onBack:()=>{k(null),G(null)},handleSubmit:()=>O(z).catch(G)}):g?/*#__PURE__*/o(E,{submitSuccess:L,hasBlockingError:B,handleSubmitCode:O,selectedMethod:g,onClose:Y,onBack:u.mfaMethods.length>1?()=>k(null):void 0}):/*#__PURE__*/e(t,{children:[/*#__PURE__*/o(d,{onClose:Y},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(s,{})}),/*#__PURE__*/o(S,{children:"Verify your identity"}),/*#__PURE__*/o(M,{children:"Choose a verification method"}),/*#__PURE__*/e(x,{children:[u.mfaMethods.includes("totp")&&/*#__PURE__*/e(w,{onClick:()=>R("totp"),children:[/*#__PURE__*/o(n,{}),"Authenticator App"]},"totp"),u.mfaMethods.includes("sms")&&/*#__PURE__*/e(w,{onClick:()=>R("sms"),children:[/*#__PURE__*/o(i,{}),"SMS"]},"sms"),u.mfaMethods.includes("passkey")&&/*#__PURE__*/e(w,{onClick:()=>R("passkey"),children:[/*#__PURE__*/o(r,{}),"Passkey"]},"passkey")]}),/*#__PURE__*/o(p,{})]}):null};let E=({selectedMethod:r,submitSuccess:s,hasBlockingError:c,onClose:m,onBack:a,handleSubmitCode:j})=>{let{app:f}=k(),{pendingTransaction:y}=g();switch(r){case"sms":/*#__PURE__*/return e(t,{children:[/*#__PURE__*/o(d,{onClose:m},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(i,{})}),/*#__PURE__*/o(S,{children:"Enter verification code"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/o(h,{success:s,disabled:c,onChange:j}),/*#__PURE__*/e(M,{children:["To continue, please enter the 6-digit code sent to your ",/*#__PURE__*/o("strong",{children:"mobile device"})]}),y&&/*#__PURE__*/o(u,{pendingTransaction:y})]}),a&&/*#__PURE__*/o(T,{theme:f?.appearance.palette.colorScheme,onClick:a,children:"Choose another method"}),/*#__PURE__*/o(l,{onClick:m,children:"Not now"}),/*#__PURE__*/o(p,{})]});case"totp":/*#__PURE__*/return e(t,{children:[/*#__PURE__*/o(d,{onClose:m},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(n,{})}),/*#__PURE__*/o(S,{children:"Enter verification code"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/o(h,{success:s,disabled:c,onChange:j}),/*#__PURE__*/e(M,{children:["To continue, please enter the 6-digit code generated from your"," ",/*#__PURE__*/o("strong",{children:"authenticator app"})]}),y&&/*#__PURE__*/o(u,{pendingTransaction:y})]}),a&&/*#__PURE__*/o(T,{theme:f?.appearance.palette.colorScheme,onClick:a,children:"Choose another method"}),/*#__PURE__*/o(l,{onClick:m,children:"Not now"}),/*#__PURE__*/o(p,{})]});default:return null}};export{P as MfaVerifyFlowScreen};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as i,jsx as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CalendarIcon";import e from"@heroicons/react/24/outline/ExclamationTriangleIcon";import r from"@heroicons/react/24/outline/ShieldCheckIcon";import{PrimaryButton as s}from"../../components/Button.mjs";import{ConnectionLoader as m}from"../../components/Loader.mjs";import{ModalFooter as c}from"../../components/ModalFooter.mjs";import{ModalHeader as a}from"../../components/ModalHeader.mjs";import{TransactionDetailsWrapper as p}from"../../components/embedded-wallets/TransactionDetailsWrapper.mjs";import l from"../../components/layout/StackedContainer.mjs";import{usePrivyInternal as h}from"../../hooks/internal-context.mjs";import{FaceId as d}from"../../svg/face-id.mjs";import{Title as j,List as u,ListItem as f,ListItemIcon as g,Container as y,ErrorMessage as b,PrimaryTextButton as k}from"./StyledComponents.mjs";import"styled-components";import"../../configuration/context.mjs";import"react";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"viem";import"../../hooks/privy-context.mjs";import"../../hooks/useGetTokenPrice.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../hooks/useWallets.mjs";import"../../lib/viem/prepareTransactionRequest.mjs";import"../../lib/viem/toViemTransactionSerializable.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../components/embedded-wallets/TransactionDetails.mjs";import"../../components/embedded-wallets/DisplayInfoItem.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../components/embedded-wallets/TransactionTotal.mjs";import"../../components/Layouts.mjs";import"../../components/primitives/Accordion/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/Accordion/AccordionContext.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const T=({hasBlockingError:T,error:v,onClose:C,onBack:w,handleSubmit:x,account:I,submitSuccess:S})=>{let{pendingTransaction:A}=h();/*#__PURE__*/return o(i,{children:[/*#__PURE__*/t(a,{onClose:C},"header"),/*#__PURE__*/t(l,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/t(m,{success:S,fail:!!v}),/*#__PURE__*/t(v?e:d,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/t(j,{style:{marginTop:"1rem"},children:"Verifying with passkey"}),/*#__PURE__*/o(u,{children:[/*#__PURE__*/o(f,{children:[/*#__PURE__*/t(g,{children:/*#__PURE__*/t(r,{})}),"Approve this action using your touch, face, PIN, or hardware key."]}),/*#__PURE__*/o(f,{children:[/*#__PURE__*/t(g,{children:/*#__PURE__*/t(n,{})}),"You last added a passkey on"," ",I?.firstVerifiedAt?.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}),"."]})]}),A&&/*#__PURE__*/t(y,{children:/*#__PURE__*/t(p,{pendingTransaction:A})}),v&&/*#__PURE__*/o(i,{children:[/*#__PURE__*/t(b,{style:{marginTop:"1.25rem"},children:v.message}),/*#__PURE__*/t(s,{disabled:T,onClick:x,style:{marginTop:"1.25rem"},children:"Try again"})]}),w&&/*#__PURE__*/t(k,{style:{marginTop:"1rem"},onClick:w,children:"Choose another method"}),/*#__PURE__*/t(c,{})]})};export{T as VerifyWithPasskey};
1
+ import{jsxs as o,Fragment as i,jsx as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CalendarIcon";import e from"@heroicons/react/24/outline/ExclamationTriangleIcon";import r from"@heroicons/react/24/outline/ShieldCheckIcon";import{PrimaryButton as s}from"../../components/Button.mjs";import{ConnectionLoader as m}from"../../components/Loader.mjs";import{ModalFooter as c}from"../../components/ModalFooter.mjs";import{ModalHeader as a}from"../../components/ModalHeader.mjs";import{TransactionDetailsWrapper as p}from"../../components/embedded-wallets/TransactionDetailsWrapper.mjs";import l from"../../components/layout/StackedContainer.mjs";import{usePrivyInternal as h}from"../../hooks/internal-context.mjs";import{FaceId as j}from"../../svg/face-id.mjs";import{Title as d,List as u,ListItem as f,ListItemIcon as g,Container as y,ErrorMessage as b,PrimaryTextButton as k}from"./StyledComponents.mjs";import"styled-components";import"../../configuration/context.mjs";import"react";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"viem";import"../../hooks/privy-context.mjs";import"../../hooks/useGetTokenPrice.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../hooks/useWallets.mjs";import"../../lib/viem/prepareTransactionRequest.mjs";import"../../lib/viem/toViemTransactionSerializable.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../components/embedded-wallets/TransactionDetails.mjs";import"../../components/embedded-wallets/DisplayInfoItem.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../components/embedded-wallets/TransactionTotal.mjs";import"../../components/Layouts.mjs";import"../../components/primitives/Accordion/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/Accordion/AccordionContext.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const T=({hasBlockingError:T,error:v,onClose:C,onBack:w,handleSubmit:x,account:I,submitSuccess:S})=>{let{pendingTransaction:A}=h();/*#__PURE__*/return o(i,{children:[/*#__PURE__*/t(a,{onClose:C},"header"),/*#__PURE__*/t(l,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/t(m,{success:S,fail:!!v}),/*#__PURE__*/t(v?e:j,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/t(d,{style:{marginTop:"1rem"},children:"Verifying with passkey"}),/*#__PURE__*/o(u,{children:[/*#__PURE__*/o(f,{children:[/*#__PURE__*/t(g,{children:/*#__PURE__*/t(r,{})}),"Approve this action using your touch, face, PIN, or hardware key."]}),/*#__PURE__*/o(f,{children:[/*#__PURE__*/t(g,{children:/*#__PURE__*/t(n,{})}),"You last added a passkey on"," ",I?.firstVerifiedAt?.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}),"."]})]}),A&&/*#__PURE__*/t(y,{children:/*#__PURE__*/t(p,{pendingTransaction:A})}),v&&/*#__PURE__*/o(i,{children:[/*#__PURE__*/t(b,{style:{marginTop:"1.25rem"},children:v.message}),/*#__PURE__*/t(s,{disabled:T,onClick:x,style:{marginTop:"1.25rem"},children:"Try again"})]}),w&&/*#__PURE__*/t(k,{style:{marginTop:"1rem"},onClick:w,children:"Choose another method"}),/*#__PURE__*/t(c,{})]})};export{T as VerifyWithPasskey};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import{useState as r,useEffect as i}from"react";import{styled as n}from"styled-components";import{getDisplayForProvider as s}from"../auth-flows/oauth/getDisplayForProvider.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as m}from"../client/user.mjs";import{SoftCtaButton as c}from"../components/Button.mjs";import{RefactorSpacerTop as a,FixedGappedContainer as l,RefactorSpacerBottom as p}from"../components/Layouts.mjs";import{ConnectionLoader as d}from"../components/Loader.mjs";import{ModalFooter as h}from"../components/ModalFooter.mjs";import{ModalHeader as u}from"../components/ModalHeader.mjs";import j from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as f}from"../constants.mjs";import{PrivyErrorCode as g,PrivyUserLimitReachedError as E}from"../errors.mjs";import{usePrivyInternal as v}from"../hooks/internal-context.mjs";import{usePrivyModal as y}from"../hooks/modal-context.mjs";import{usePrivyContext as C}from"../hooks/privy-context.mjs";import{ModalScreen as A}from"./index.mjs";import{getOAuthErrorMessage as T}from"../auth-flows/oauth/getOAuthErrorMessage.mjs";import{stripUrlOAuthParamsAndRemoveStateCode as S}from"../auth-flows/oauth/stripUrlOAuthParamsAndRemoveStateCode.mjs";import"../svg/apple.mjs";import"../svg/discord.mjs";import"../svg/github.mjs";import"../svg/globe.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../svg/google.mjs";import"../svg/instagram.mjs";import"../svg/linkedin.mjs";import"../svg/spotify.mjs";import"../svg/tiktok.mjs";import"../svg/twitter.mjs";import"viem/utils";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"../lib/capitalizeFirstLetter.mjs";import"../storage.mjs";const _=()=>{let{authenticated:n,logout:_,ready:N,user:R}=C(),{app:I,setModalData:O,navigate:L,resetNavigation:x}=y(),{getAuthMeta:k,initLoginWithOAuth:U,loginWithOAuth:w,updateWallets:M,setReadyToTrue:D,closePrivyModal:F,createAnalyticsEvent:W}=v(),[z,H]=r(!1),[P,J]=r(void 0),B=k()?.provider||"google",{name:Q,component:V}=s(B);i((()=>{w(B).then((()=>{H(!0),D(!0)})).catch((o=>{if(D(!1),o?.privyErrorCode===g.ALLOWLIST_REJECTED)return J(void 0),x(),void L(A.ALLOWLIST_REJECTION_SCREEN);if(o?.privyErrorCode===g.USER_LIMIT_REACHED)return console.error(new E(o).toString()),J(void 0),x(),void L(A.USER_LIMIT_REACHED_SCREEN);if(o?.privyErrorCode===g.USER_DOES_NOT_EXIST)return J(void 0),x(),void L(A.ACCOUNT_NOT_FOUND_SCREEN);if(o?.privyErrorCode===g.ACCOUNT_TRANSFER_REQUIRED&&o.data?.data?.nonce)return J(void 0),x(),O({accountTransfer:{nonce:o.data?.data?.nonce,account:o.data?.data?.subject,displayName:o.data?.data?.account?.displayName,linkMethod:k()?.provider,embeddedWalletAddress:o.data?.data?.otherUser?.embeddedWalletAddress,oAuthUserInfo:o.data?.data?.otherUser?.oAuthUserInfo}}),void L(A.LINK_CONFLICT_SCREEN);let{retryable:t,detail:e}=T(o,B);J({retryable:t,detail:e,message:"Authentication failed"})})).finally((()=>{S()}))}),[Q,B]),i((()=>{if(N&&n&&z&&R){if(I?.legal.requireUsersAcceptTerms&&!R.hasAcceptedTerms){let o=setTimeout((()=>{L(A.AFFIRMATIVE_CONSENT_SCREEN)}),f);return()=>clearTimeout(o)}if(m(R,I?.embeddedWallets?.createOnLogin)){let o=setTimeout((()=>{O({createWallet:{onSuccess:()=>{},onFailure:o=>{console.error(o),W({eventName:"embedded_wallet_creation_failure_logout",payload:{error:o,provider:B,screen:"OAuthStatusScreen"}}),_()},callAuthOnSuccessOnClose:!0}}),L(A.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),f);return()=>clearTimeout(o)}{let o=setTimeout((()=>F({shouldCallAuthOnSuccess:!0,isSuccess:!0})),f);return M(),()=>clearTimeout(o)}}}),[N,n,z,R]);let X=z?`Successfully connected with ${Q}`:P?P.message:`Verifying connection to ${Q}`,$="";return $=z?"You’re good to go!":P?P.detail:"Just a few moments more",/*#__PURE__*/o(t,{children:[/*#__PURE__*/e(u,{}),/*#__PURE__*/e(a,{}),/*#__PURE__*/o(b,{children:[/*#__PURE__*/e(j,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/e(d,{success:z,fail:!!P}),/*#__PURE__*/e(V,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/o(l,{children:[/*#__PURE__*/e("h3",{children:X}),/*#__PURE__*/e("p",{children:$})]}),P&&P?.retryable?/*#__PURE__*/e(c,{onClick:()=>{S(),U(B),J(void 0)},disabled:!z&&!P?.retryable,children:"Retry"}):null]}),/*#__PURE__*/e(p,{}),/*#__PURE__*/e(h,{})]})};let b=/*#__PURE__*/n.div.withConfig({displayName:"ConnectContainer",componentId:"sc-aa7588ca-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;"]);export{_ as OAuthStatusScreen};
1
+ import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import{useState as r,useEffect as i}from"react";import{styled as s}from"styled-components";import{getDisplayForProvider as n}from"../auth-flows/oauth/getDisplayForProvider.mjs";import{SoftCtaButton as m}from"../components/Button.mjs";import{RefactorSpacerTop as c,FixedGappedContainer as a,RefactorSpacerBottom as l}from"../components/Layouts.mjs";import{ConnectionLoader as p}from"../components/Loader.mjs";import{ModalFooter as d}from"../components/ModalFooter.mjs";import{ModalHeader as h}from"../components/ModalHeader.mjs";import u from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as j}from"../constants.mjs";import{PrivyErrorCode as f,PrivyUserLimitReachedError as g}from"../errors.mjs";import{usePrivyInternal as E}from"../hooks/internal-context.mjs";import{usePrivyModal as v}from"../hooks/modal-context.mjs";import{usePrivyContext as C}from"../hooks/privy-context.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as y}from"../lib/user/shouldProceedtoEmbeddedWalletCreationFlow.mjs";import{ModalScreen as A}from"./index.mjs";import{getOAuthErrorMessage as T}from"../auth-flows/oauth/getOAuthErrorMessage.mjs";import{stripUrlOAuthParamsAndRemoveStateCode as b}from"../auth-flows/oauth/stripUrlOAuthParamsAndRemoveStateCode.mjs";import"../svg/apple.mjs";import"../svg/discord.mjs";import"../svg/github.mjs";import"../svg/globe.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../svg/google.mjs";import"../svg/instagram.mjs";import"../svg/linkedin.mjs";import"../svg/spotify.mjs";import"../svg/tiktok.mjs";import"../svg/twitter.mjs";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"../lib/user/shouldCreateEmbeddedEthWallet.mjs";import"../client/user.mjs";import"viem/utils";import"../lib/user/shouldCreateEmbeddedSolWallet.mjs";import"../lib/capitalizeFirstLetter.mjs";import"../storage.mjs";const S=()=>{let{authenticated:s,logout:S,ready:N,user:R}=C(),{app:I,setModalData:O,navigate:x,resetNavigation:L}=v(),{getAuthMeta:k,initLoginWithOAuth:w,loginWithOAuth:U,updateWallets:M,setReadyToTrue:W,closePrivyModal:D,createAnalyticsEvent:F}=E(),[P,z]=r(!1),[H,J]=r(void 0),B=k()?.provider||"google",{name:Q,component:V}=n(B);i((()=>{U(B).then((()=>{z(!0),W(!0)})).catch((o=>{if(W(!1),o?.privyErrorCode===f.ALLOWLIST_REJECTED)return J(void 0),L(),void x(A.ALLOWLIST_REJECTION_SCREEN);if(o?.privyErrorCode===f.USER_LIMIT_REACHED)return console.error(new g(o).toString()),J(void 0),L(),void x(A.USER_LIMIT_REACHED_SCREEN);if(o?.privyErrorCode===f.USER_DOES_NOT_EXIST)return J(void 0),L(),void x(A.ACCOUNT_NOT_FOUND_SCREEN);if(o?.privyErrorCode===f.ACCOUNT_TRANSFER_REQUIRED&&o.data?.data?.nonce)return J(void 0),L(),O({accountTransfer:{nonce:o.data?.data?.nonce,account:o.data?.data?.subject,displayName:o.data?.data?.account?.displayName,linkMethod:k()?.provider,embeddedWalletAddress:o.data?.data?.otherUser?.embeddedWalletAddress,oAuthUserInfo:o.data?.data?.otherUser?.oAuthUserInfo}}),void x(A.LINK_CONFLICT_SCREEN);let{retryable:t,detail:e}=T(o,B);J({retryable:t,detail:e,message:"Authentication failed"})})).finally((()=>{b()}))}),[Q,B]),i((()=>{if(N&&s&&P&&R){if(I?.legal.requireUsersAcceptTerms&&!R.hasAcceptedTerms){let o=setTimeout((()=>{x(A.AFFIRMATIVE_CONSENT_SCREEN)}),j);return()=>clearTimeout(o)}if(y(R,I.embeddedWallets)){let o=setTimeout((()=>{O({createWallet:{onSuccess:()=>{},onFailure:o=>{console.error(o),F({eventName:"embedded_wallet_creation_failure_logout",payload:{error:o,provider:B,screen:"OAuthStatusScreen"}}),S()},callAuthOnSuccessOnClose:!0}}),x(A.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),j);return()=>clearTimeout(o)}{let o=setTimeout((()=>D({shouldCallAuthOnSuccess:!0,isSuccess:!0})),j);return M(),()=>clearTimeout(o)}}}),[N,s,P,R]);let X=P?`Successfully connected with ${Q}`:H?H.message:`Verifying connection to ${Q}`,$="";return $=P?"You’re good to go!":H?H.detail:"Just a few moments more",/*#__PURE__*/o(t,{children:[/*#__PURE__*/e(h,{}),/*#__PURE__*/e(c,{}),/*#__PURE__*/o(_,{children:[/*#__PURE__*/e(u,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/e(p,{success:P,fail:!!H}),/*#__PURE__*/e(V,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/o(a,{children:[/*#__PURE__*/e("h3",{children:X}),/*#__PURE__*/e("p",{children:$})]}),H&&H?.retryable?/*#__PURE__*/e(m,{onClick:()=>{b(),w(B),J(void 0)},disabled:!P&&!H?.retryable,children:"Retry"}):null]}),/*#__PURE__*/e(l,{}),/*#__PURE__*/e(d,{})]})};let _=/*#__PURE__*/s.div.withConfig({displayName:"ConnectContainer",componentId:"sc-814a2c46-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;margin-left:27px;margin-right:27px;gap:24px;"]);export{S as OAuthStatusScreen};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as e,jsx as r}from"react/jsx-runtime";import{ModalScreen as t}from"./index.mjs";import{useState as s,useRef as n,useEffect as i}from"react";import{styled as c}from"styled-components";import{shouldProceedtoEmbeddedWalletCreationFlow as a}from"../client/user.mjs";import{PrimaryButton as m}from"../components/Button.mjs";import{FixedGappedContainer as p}from"../components/Layouts.mjs";import{ConnectionLoader as l}from"../components/Loader.mjs";import{ModalFooter as u}from"../components/ModalFooter.mjs";import{ModalHeader as h}from"../components/ModalHeader.mjs";import d from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as f}from"../constants.mjs";import{PrivyError as j,PrivyErrorCode as y}from"../errors.mjs";import{usePrivyInternal as g}from"../hooks/internal-context.mjs";import{usePrivyModal as v}from"../hooks/modal-context.mjs";import{usePrivyContext as k}from"../hooks/privy-context.mjs";import{FingerPrint as w}from"../svg/fingerprint.mjs";import"viem/utils";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";const C=()=>{let{app:c,lastScreen:C,currentScreen:x,navigateBack:A,data:E,setModalData:b,navigate:_}=v(),{loginWithPasskey:T,signupWithPasskey:N,closePrivyModal:O,createAnalyticsEvent:I}=g(),{user:M,logout:P}=k(),{passkeySignupFlow:L}=E?.passkeyAuthModalData??{},F=f-500,[W,D]=s("loading"),[R,Y]=s(null),z=n([]),B=o=>{z.current=[o,...z.current]};i((()=>()=>{z.current.forEach((o=>clearTimeout(o))),z.current=[]}),[]);let q=async()=>{D("loading");try{L?await N():await T(),D("success")}catch(o){Y(o),D("error")}};return i((()=>{if("success"===W&&M){if(c?.legal.requireUsersAcceptTerms&&!M.hasAcceptedTerms)return void B(setTimeout((()=>{_(t.AFFIRMATIVE_CONSENT_SCREEN)}),F));if(!a(M,c?.embeddedWallets?.createOnLogin))return void B(setTimeout((()=>{O({shouldCallAuthOnSuccess:!0,isSuccess:!0})}),f));B(setTimeout((()=>{b({createWallet:{onSuccess:()=>{},onFailure:o=>{console.error(o),I({eventName:"embedded_wallet_creation_failure_logout",payload:{error:o,screen:"PasskeyStatusScreen"}}),P()},callAuthOnSuccessOnClose:!0}}),_(t.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),F))}}),[M,W]),i((()=>{q()}),[]),/*#__PURE__*/o(e,{children:[/*#__PURE__*/r(h,{backFn:C&&x!==C?A:void 0}),/*#__PURE__*/o(S,{children:[/*#__PURE__*/r(d,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/r(l,{success:"success"===W,fail:"error"===W}),/*#__PURE__*/r(w,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/o(p,{children:[/*#__PURE__*/r("h3",{children:(()=>{switch(W){case"loading":return"Waiting for passkey";case"success":return"Success";case"error":return"Something went wrong"}})()}),/*#__PURE__*/r("p",{style:{whiteSpace:"pre-wrap"},children:(()=>{switch(W){case"loading":return L?"Please follow prompts to register your passkey.":"Please follow prompts to verify your passkey.\nYou will have to sign up with another method first to register a passkey for your account.";case"success":return"You've successfully logged in with your passkey.";case"error":if(R instanceof j){if(R.privyErrorCode===y.CANNOT_LINK_MORE_OF_TYPE)return"Cannot link more passkeys to account.";if(R.privyErrorCode===y.PASSKEY_NOT_ALLOWED)return"Passkey request timed out or rejected by user.\nYou will have to sign up with another method first to register a passkey for your account."}return"An unknown error occurred.\nYou will have to sign up with another method first to register a passkey for your account."}})()})]}),(()=>{switch(W){case"loading":case"success":/*#__PURE__*/return r(m,{onClick:()=>{},disabled:!0,children:"Continue"});case"error":/*#__PURE__*/return r(m,{onClick:q,disabled:!1,children:"Retry"})}})()]}),/*#__PURE__*/r(u,{})]})};let S=/*#__PURE__*/c.div.withConfig({displayName:"Container",componentId:"sc-4165a41e-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);const x=/*#__PURE__*/c.div.withConfig({displayName:"DoubleIconWrapper",componentId:"sc-4165a41e-1"})(["display:flex;align-items:center;justify-content:center;width:180px;height:90px;border-radius:50%;svg + svg{margin-left:12px;}> svg{z-index:2;color:var(--privy-color-accent) !important;stroke:var(--privy-color-accent) !important;fill:var(--privy-color-accent) !important;}"]);export{x as DoubleIconWrapper,C as PasskeyStatusScreen};
1
+ import{jsxs as o,Fragment as e,jsx as r}from"react/jsx-runtime";import{ModalScreen as t}from"./index.mjs";import{useState as s,useRef as n,useEffect as i}from"react";import{styled as c}from"styled-components";import{PrimaryButton as a}from"../components/Button.mjs";import{FixedGappedContainer as m}from"../components/Layouts.mjs";import{ConnectionLoader as l}from"../components/Loader.mjs";import{ModalFooter as p}from"../components/ModalFooter.mjs";import{ModalHeader as u}from"../components/ModalHeader.mjs";import h from"../components/layout/StackedContainer.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as d}from"../constants.mjs";import{PrivyError as j,PrivyErrorCode as f}from"../errors.mjs";import{usePrivyInternal as y}from"../hooks/internal-context.mjs";import{usePrivyModal as g}from"../hooks/modal-context.mjs";import{usePrivyContext as v}from"../hooks/privy-context.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as k}from"../lib/user/shouldProceedtoEmbeddedWalletCreationFlow.mjs";import{FingerPrint as w}from"../svg/fingerprint.mjs";import"../configuration/context.mjs";import"../config.mjs";import"../configuration/defaultClientConfig.mjs";import"../configuration/login-methods.mjs";import"../configuration/wallets.mjs";import"../connectors/chains/index.mjs";import"../connectors/chains/arbitrum.mjs";import"../connectors/chains/arbitrumSepolia.mjs";import"../connectors/chains/avalanche.mjs";import"../connectors/chains/avalancheFuji.mjs";import"../connectors/chains/base.mjs";import"../connectors/chains/baseSepolia.mjs";import"../connectors/chains/berachainArtio.mjs";import"../connectors/chains/celo.mjs";import"../connectors/chains/celoAlfajores.mjs";import"../connectors/chains/filecoin.mjs";import"../connectors/chains/filecoinCalibration.mjs";import"../connectors/chains/garnetHolesky.mjs";import"../connectors/chains/holesky.mjs";import"../connectors/chains/linea.mjs";import"../connectors/chains/lineaTestnet.mjs";import"../connectors/chains/lukso.mjs";import"../connectors/chains/mainnet.mjs";import"../connectors/chains/optimism.mjs";import"../connectors/chains/optimismSepolia.mjs";import"../connectors/chains/polygon.mjs";import"../connectors/chains/polygonAmoy.mjs";import"../connectors/chains/redstone.mjs";import"../connectors/chains/sepolia.mjs";import"../connectors/chains/zora.mjs";import"../connectors/chains/zoraSepolia.mjs";import"../connectors/chains/zoraTestnet.mjs";import"../connectors/chains/utils.mjs";import"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../hooks/index.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"../lib/user/shouldCreateEmbeddedEthWallet.mjs";import"../client/user.mjs";import"viem/utils";import"../lib/user/shouldCreateEmbeddedSolWallet.mjs";const C=()=>{let{app:c,lastScreen:C,currentScreen:E,navigateBack:S,data:x,setModalData:A,navigate:_}=g(),{loginWithPasskey:T,signupWithPasskey:N,closePrivyModal:I,createAnalyticsEvent:O}=y(),{user:P,logout:W}=v(),{passkeySignupFlow:M}=x?.passkeyAuthModalData??{},F=d-500,[L,D]=s("loading"),[R,Y]=s(null),z=n([]),B=o=>{z.current=[o,...z.current]};i((()=>()=>{z.current.forEach((o=>clearTimeout(o))),z.current=[]}),[]);let q=async()=>{D("loading");try{M?await N():await T(),D("success")}catch(o){Y(o),D("error")}};return i((()=>{if("success"===L&&P){if(c?.legal.requireUsersAcceptTerms&&!P.hasAcceptedTerms)return void B(setTimeout((()=>{_(t.AFFIRMATIVE_CONSENT_SCREEN)}),F));if(!k(P,c?.embeddedWallets))return void B(setTimeout((()=>{I({shouldCallAuthOnSuccess:!0,isSuccess:!0})}),d));B(setTimeout((()=>{A({createWallet:{onSuccess:()=>{},onFailure:o=>{console.error(o),O({eventName:"embedded_wallet_creation_failure_logout",payload:{error:o,screen:"PasskeyStatusScreen"}}),W()},callAuthOnSuccessOnClose:!0}}),_(t.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),F))}}),[P,L]),i((()=>{q()}),[]),/*#__PURE__*/o(e,{children:[/*#__PURE__*/r(u,{backFn:C&&E!==C?S:void 0}),/*#__PURE__*/o(b,{children:[/*#__PURE__*/r(h,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/r(l,{success:"success"===L,fail:"error"===L}),/*#__PURE__*/r(w,{style:{width:"38px",height:"38px"}})]})}),/*#__PURE__*/o(m,{children:[/*#__PURE__*/r("h3",{children:(()=>{switch(L){case"loading":return"Waiting for passkey";case"success":return"Success";case"error":return"Something went wrong"}})()}),/*#__PURE__*/r("p",{style:{whiteSpace:"pre-wrap"},children:(()=>{switch(L){case"loading":return M?"Please follow prompts to register your passkey.":"Please follow prompts to verify your passkey.\nYou will have to sign up with another method first to register a passkey for your account.";case"success":return"You've successfully logged in with your passkey.";case"error":if(R instanceof j){if(R.privyErrorCode===f.CANNOT_LINK_MORE_OF_TYPE)return"Cannot link more passkeys to account.";if(R.privyErrorCode===f.PASSKEY_NOT_ALLOWED)return"Passkey request timed out or rejected by user.\nYou will have to sign up with another method first to register a passkey for your account."}return"An unknown error occurred.\nYou will have to sign up with another method first to register a passkey for your account."}})()})]}),(()=>{switch(L){case"loading":case"success":/*#__PURE__*/return r(a,{onClick:()=>{},disabled:!0,children:"Continue"});case"error":/*#__PURE__*/return r(a,{onClick:q,disabled:!1,children:"Retry"})}})()]}),/*#__PURE__*/r(p,{})]})};let b=/*#__PURE__*/c.div.withConfig({displayName:"Container",componentId:"sc-d3724da1-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);const E=/*#__PURE__*/c.div.withConfig({displayName:"DoubleIconWrapper",componentId:"sc-d3724da1-1"})(["display:flex;align-items:center;justify-content:center;width:180px;height:90px;border-radius:50%;svg + svg{margin-left:12px;}> svg{z-index:2;color:var(--privy-color-accent) !important;stroke:var(--privy-color-accent) !important;fill:var(--privy-color-accent) !important;}"]);export{E as DoubleIconWrapper,C as PasskeyStatusScreen};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{useState as n,useMemo as t,useEffect as e}from"react";import{formatUnits as r}from"viem";import{SolanaClient as i}from"@privy-io/js-sdk-core";import{getImportedPrivySolanaWallet as s,getPrivyPrimaryWallet as a,getSolanaSigningAndRootWallet as c,getEntropyDetailsFromAccount as m}from"../../client/user.mjs";import{useAppConfig as l}from"../../configuration/context.mjs";import{sendSolanaTransaction as p}from"../../embedded-wallets/solana/transaction.mjs";import{usePrivyInternal as d}from"../../hooks/internal-context.mjs";import{usePrivyModal as u}from"../../hooks/modal-context.mjs";import{usePrivyContext as f}from"../../hooks/privy-context.mjs";import{useGetSolPrice as h}from"../../hooks/useGetSolPrice.mjs";import{getSolanaNetworkFromRpcEndpoint as j}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as g,parseSolanaTransaction as y,isVersionedTransaction as k,getDollarsFromLamport as b,createSolanaTransactionReceipt as S}from"../../lib/solana/transaction.mjs";import{ErrorScreenView as w}from"../ErrorScreen.mjs";import{SendSolanaTransactionScreenView as T}from"../SendTransactionScreen/SendTransactionScreenView.mjs";import{TransactionErrorView as v}from"../SendTransactionScreen/TransactionErrorView.mjs";import{ModalScreen as A}from"../index.mjs";import{SolanaTransactionReceiptView as I}from"./SolanaTransactionReceiptView.mjs";import"viem/utils";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"styled-components";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/CircleBorder.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline";import"../../components/ModalFooter.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/WalletInfoCard.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/shared.mjs";import"../LandingScreen/styles.mjs";import"../SendTransactionScreen/TokenDescription.mjs";import"../SendTransactionScreen/TransactionDetail.mjs";import"../SendTransactionScreen/TransactionValidation.mjs";import"../../components/Checkbox.mjs";import"../../components/Pill.mjs";import"../SendTransactionScreen/useTransactionDetails.mjs";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"../../components/CircleBackground.mjs";import"../../components/Layouts.mjs";import"../../components/ScreenHeader.mjs";import"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const C=()=>{let{data:C,onUserCloseViaDialogOrKeybindRef:x,setModalData:O,navigate:E}=u(),{client:L,closePrivyModal:D,walletProxy:P}=d(),B=l(),{user:M,getAccessToken:F}=f(),[V,W]=n(C?.sendSolanaTransaction?.transactionRequest),[R,U]=n(),[H,N]=n(),[$,q]=n(0),[z,_]=n({value:0n,isLoading:!1}),[G,X]=n(!1),[K,Q]=n(),[J,Y]=n(),Z=C?.sendSolanaTransaction?.connection,oo=C?.sendSolanaTransaction?.transactingWallet,no=R?.instructions.length??1,to=oo?.imported?s(M):a(M),eo=j(Z?.rpcEndpoint||""),ro="fiat-currency"===B.embeddedWallets.priceDisplay.primary,{solPrice:io,isSolPriceLoading:so}=h({enabled:ro}),ao=t((()=>{let o,n;if(!R)return;let t=R.spender;0===$&&oo?.address===t&&(o=g(R.fee));let e=g(z.value,3,!0),i=R.instructions[$];if(!i)return{fee:o,spender:t,balance:e};if("unknown"===i.type)return{fee:o,spender:t,program:i.program,balance:e};if("ata-creation"===i.type)return{fee:o,spender:t,balance:e,tokenAccountOwner:i.owner,tokenAccount:i.ata,tokenAddress:i.mint};let s=i.fromAccount,a="sol-transfer"===i.type?i.toAccount:i.toAccount||i.toAta,c="spl-transfer"===i.type?i.token.address:void 0;return null!=o&&"SOL"===i.token.symbol&&(n=g(i.value+R.fee)),{fee:o,spender:t,from:s,to:a,tokenAddress:c,amount:`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}}),[R,$,oo?.address,z]),co=t((()=>{let o,n;if(!R||!ro||!io||so)return;function t(...o){return b(o.reduce(((o,n)=>o+n),0n),io??0)}0===$&&oo?.address===R.spender&&(o=t(R.fee));let e=t(z.value),i=R.instructions[$];return i&&"unknown"!==i.type&&"ata-creation"!==i.type?(null!=o&&"SOL"===i.token.symbol&&(n=t(i.value,R.fee)),{fee:o,amount:"SOL"===i.token.symbol?t(i.value):`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}):{fee:o,balance:e}}),[R,ro,io,so,oo?.address,$,z]),mo=t((()=>{if(!R||z.isLoading||$>0)return!1;let o=R.instructions[$];if(!o)return!1;let n=0n;return oo?.address===R.spender&&(n+=R.fee),"value"in o&&oo?.address===o.fromAccount&&"SOL"===o.token.symbol&&(n+=o.value),z.value<n}),[R,z,$]);if(e((()=>{!async function(){if(V&&Z&&L)try{N(void 0);let o=await y({tx:V,connection:Z,client:L});U(o),q(0)}catch(o){console.error("Failed to prepare transaction",o),N(o)}}()}),[V,Z,L]),e((()=>{(async function(){if(!oo||!Z)return;_({value:z.value,isLoading:!0});let o=new i({name:"mainnet-beta",rpcUrl:Z.rpcEndpoint});_({value:await o.getBalance(oo.address).catch((()=>0n))??0n,isLoading:!1})})().catch(console.error)}),[R,Z]),!(V&&C?.sendSolanaTransaction&&oo&&Z)){let n=Error("Invalid transaction request");/*#__PURE__*/return o(w,{error:n,onClick:()=>{C?.sendSolanaTransaction?.onFailure(n),D({shouldCallAuthOnSuccess:!1})}})}let lo=()=>{if(!G)return K?C?.sendSolanaTransaction?.onSuccess(K):(C?.sendSolanaTransaction?.onFailure(J??H??Error("User exited the modal before submitting the transaction")),q(0)),D({shouldCallAuthOnSuccess:!1})};x.current=lo;let po=C.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/o("img",{src:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,uo=!!(C.funding&&C.funding.supportedOptions.length>0),fo=mo&&uo;return K?/*#__PURE__*/o(I,{instructions:R?.instructions.reduce(((o,n)=>("ata-creation"===n.type&&o.push({tokenAccountOwner:n.owner,tokenAccount:n.ata}),"spl-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount||n.toAta,amount:n.value,token:n.token}),"sol-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount,amount:n.value,token:n.token}),o)),[])??[],fees:0===$?K.fees:0n,onClose:lo,transactionInfo:C.sendTransaction?.uiOptions.transactionInfo,solPrice:io,receiptHeader:C.sendTransaction?.uiOptions.successHeader,receiptDescription:C.sendTransaction?.uiOptions.successDescription,rpcEndpoint:Z.rpcEndpoint}):J?/*#__PURE__*/o(v,{transactionError:J,connection:Z,onClose:lo,network:"solana",onRetry:async()=>{Y(void 0);let{blockhash:o}=await Z.getLatestBlockhash();k(V)?V.message.recentBlockhash=o:V.recentBlockhash=o,W(V)}}):/*#__PURE__*/o(T,{img:po,title:C.sendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:C.sendTransaction?.uiOptions?.description||`${B.name} wants your permission to approve the following transaction.`,cta:fo?"Add funds":C.sendTransaction?.uiOptions?.buttonText||"Approve",transactionIndex:$,maxIndex:no-1,network:"mainnet-beta"==eo?"Solana":eo,blockExplorerUrl:"https://explorer.solana.com",total:ro?co?.total:ao?.total,amount:ro?co?.amount:ao?.amount,fee:ro?co?.fee:ao?.fee,balance:ro?co?.balance:ao?.balance,from:ao?.from,to:ao?.to,tokenAccount:ao?.tokenAccount,tokenAccountOwner:ao?.tokenAccountOwner,tokenAddress:ao?.tokenAddress,transactingWalletAddress:oo.address,programAddress:ao?.program,disabled:mo&&!uo,isSubmitting:G,isPreparing:!R||z.isLoading,isTokenPriceLoading:ro&&so,isMissingFunds:mo,submitError:J??void 0,parseError:H,onClick:fo?async()=>{if(!oo)return;if(!uo)throw Error("Funding wallet is not enabled");let o=A.FUNDING_METHOD_SELECTION_SCREEN;O({...C,funding:{...C.funding,methodScreen:o}}),E(o)}:async()=>{if($<(R?.instructions.length??1)-1)q($+1);else try{X(!0);let o=await F();if(G||!o||!oo||!P||!M||!to)return;let{rootWallet:n}=c(M,oo.address);if(!n)throw Error("No root wallet for transacting wallet found");let{entropyId:t,entropyIdVerifier:e}=m(n),{signature:r,receipt:i}=await p({tx:V,accessToken:o,connection:Z,walletProxy:P,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:oo.address,transactingWalletIndex:oo.walletIndex??0,transactionOptions:C.sendSolanaTransaction?.transactionOptions});Q(S(r,i))}catch(o){console.warn({transaction:V,error:o}),Y(o)}finally{X(!1)}},onClose:lo,onBack:$>0&&no>1?()=>q($-1):void 0})};export{C as SendSolanaTransactionScreen};
1
+ import{jsx as o}from"react/jsx-runtime";import{useState as n,useMemo as t,useEffect as e}from"react";import{formatUnits as r}from"viem";import{SolanaClient as i}from"@privy-io/js-sdk-core";import{getImportedPrivySolanaWallet as s,getPrivyPrimaryWallet as a,getSolanaSigningAndRootWallet as c,getEntropyDetailsFromAccount as m}from"../../client/user.mjs";import{useAppConfig as l}from"../../configuration/context.mjs";import{sendSolanaTransaction as p}from"../../embedded-wallets/solana/transaction.mjs";import{usePrivyInternal as d}from"../../hooks/internal-context.mjs";import{usePrivyModal as u}from"../../hooks/modal-context.mjs";import{usePrivyContext as f}from"../../hooks/privy-context.mjs";import{useGetSolPrice as h}from"../../hooks/useGetSolPrice.mjs";import{getSolanaNetworkFromRpcEndpoint as j}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as g,parseSolanaTransaction as y,isVersionedTransaction as k,getDollarsFromLamport as b,createSolanaTransactionReceipt as S}from"../../lib/solana/transaction.mjs";import{ErrorScreenView as w}from"../ErrorScreen.mjs";import{SendSolanaTransactionScreenView as T}from"../SendTransactionScreen/SendTransactionScreenView.mjs";import{TransactionErrorView as v}from"../SendTransactionScreen/TransactionErrorView.mjs";import{ModalScreen as A}from"../index.mjs";import{SolanaTransactionReceiptView as I}from"./SolanaTransactionReceiptView.mjs";import"viem/utils";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"styled-components";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/CircleBorder.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline";import"../../components/ModalFooter.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/WalletInfoCard.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/shared.mjs";import"../LandingScreen/styles.mjs";import"../SendTransactionScreen/TokenDescription.mjs";import"../SendTransactionScreen/TransactionDetail.mjs";import"../SendTransactionScreen/TransactionValidation.mjs";import"../../components/Checkbox.mjs";import"../../components/Pill.mjs";import"../SendTransactionScreen/useTransactionDetails.mjs";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"../../components/CircleBackground.mjs";import"../../components/Layouts.mjs";import"../../components/ScreenHeader.mjs";import"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const C=()=>{let{data:C,onUserCloseViaDialogOrKeybindRef:x,setModalData:O,navigate:E}=u(),{client:L,closePrivyModal:D,walletProxy:P}=d(),B=l(),{user:M,getAccessToken:F}=f(),[V,W]=n(C?.sendSolanaTransaction?.transactionRequest),[R,U]=n(),[H,N]=n(),[$,q]=n(0),[z,_]=n({value:0n,isLoading:!1}),[G,X]=n(!1),[K,Q]=n(),[J,Y]=n(),Z=C?.sendSolanaTransaction?.connection,oo=C?.sendSolanaTransaction?.transactingWallet,no=R?.instructions.length??1,to=oo?.imported?s(M):a(M),eo=j(Z?.rpcEndpoint||""),ro="fiat-currency"===B.embeddedWallets.priceDisplay.primary,{solPrice:io,isSolPriceLoading:so}=h({enabled:ro}),ao=t((()=>{let o,n;if(!R)return;let t=R.spender;0===$&&oo?.address===t&&(o=g(R.fee));let e=g(z.value,3,!0),i=R.instructions[$];if(!i)return{fee:o,spender:t,balance:e};if("unknown"===i.type)return{fee:o,spender:t,program:i.program,balance:e};if("ata-creation"===i.type)return{fee:o,spender:t,balance:e,tokenAccountOwner:i.owner,tokenAccount:i.ata,tokenAddress:i.mint};let s=i.fromAccount,a="sol-transfer"===i.type?i.toAccount:i.toAccount||i.toAta,c="spl-transfer"===i.type?i.token.address:void 0;return null!=o&&"SOL"===i.token.symbol&&(n=g(i.value+R.fee)),{fee:o,spender:t,from:s,to:a,tokenAddress:c,amount:`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}}),[R,$,oo?.address,z]),co=t((()=>{let o,n;if(!R||!ro||!io||so)return;function t(...o){return b(o.reduce(((o,n)=>o+n),0n),io??0)}0===$&&oo?.address===R.spender&&(o=t(R.fee));let e=t(z.value),i=R.instructions[$];return i&&"unknown"!==i.type&&"ata-creation"!==i.type?(null!=o&&"SOL"===i.token.symbol&&(n=t(i.value,R.fee)),{fee:o,amount:"SOL"===i.token.symbol?t(i.value):`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}):{fee:o,balance:e}}),[R,ro,io,so,oo?.address,$,z]),mo=t((()=>{if(!R||z.isLoading||$>0)return!1;let o=R.instructions[$];if(!o)return!1;let n=0n;return oo?.address===R.spender&&(n+=R.fee),"value"in o&&oo?.address===o.fromAccount&&"SOL"===o.token.symbol&&(n+=o.value),z.value<n}),[R,z,$]);if(e((()=>{!async function(){if(V&&Z&&L)try{N(void 0);let o=await y({tx:V,connection:Z,client:L});U(o),q(0)}catch(o){console.error("Failed to prepare transaction",o),N(o)}}()}),[V,Z,L]),e((()=>{(async function(){if(!oo||!Z)return;_({value:z.value,isLoading:!0});let o=new i({name:"mainnet-beta",rpcUrl:Z.rpcEndpoint});_({value:await o.getBalance(oo.address).catch((()=>0n))??0n,isLoading:!1})})().catch(console.error)}),[R,Z]),!(V&&C?.sendSolanaTransaction&&oo&&Z)){let n=Error("Invalid transaction request");/*#__PURE__*/return o(w,{error:n,onClick:()=>{C?.sendSolanaTransaction?.onFailure(n),D({shouldCallAuthOnSuccess:!1})}})}let lo=()=>{if(!G)return K?C?.sendSolanaTransaction?.onSuccess(K):(C?.sendSolanaTransaction?.onFailure(J??H??Error("User exited the modal before submitting the transaction")),q(0)),D({shouldCallAuthOnSuccess:!1})};x.current=lo;let po=C.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/o("img",{src:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,uo=!!(C.funding&&C.funding.supportedOptions.length>0),fo=mo&&uo;return K?/*#__PURE__*/o(I,{instructions:R?.instructions.reduce(((o,n)=>("ata-creation"===n.type&&o.push({tokenAccountOwner:n.owner,tokenAccount:n.ata}),"spl-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount||n.toAta,amount:n.value,token:n.token}),"sol-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount,amount:n.value,token:n.token}),o)),[])??[],fees:0===$?K.fees:0n,onClose:lo,transactionInfo:C.sendTransaction?.uiOptions.transactionInfo,solPrice:io,receiptHeader:C.sendTransaction?.uiOptions.successHeader,receiptDescription:C.sendTransaction?.uiOptions.successDescription,rpcEndpoint:Z.rpcEndpoint}):J?/*#__PURE__*/o(v,{transactionError:J,connection:Z,onClose:lo,network:"solana",onRetry:async()=>{Y(void 0);let{blockhash:o}=await Z.getLatestBlockhash();k(V)?V.message.recentBlockhash=o:V.recentBlockhash=o,W(V)}}):/*#__PURE__*/o(T,{img:po,title:C.sendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:C.sendTransaction?.uiOptions?.description||`${B.name} wants your permission to approve the following transaction.`,cta:fo?"Add funds":C.sendTransaction?.uiOptions?.buttonText||"Approve",transactionIndex:$,maxIndex:no-1,network:"mainnet-beta"==eo?"Solana":eo,blockExplorerUrl:"https://explorer.solana.com",total:ro?co?.total:ao?.total,amount:ro?co?.amount:ao?.amount,fee:ro?co?.fee:ao?.fee,balance:ro?co?.balance:ao?.balance,from:ao?.from,to:ao?.to,tokenAccount:ao?.tokenAccount,tokenAccountOwner:ao?.tokenAccountOwner,tokenAddress:ao?.tokenAddress,transactingWalletAddress:oo.address,programAddress:ao?.program,disabled:mo&&!uo,isSubmitting:G,isPreparing:!R||z.isLoading,isTokenPriceLoading:ro&&so,isMissingFunds:mo,submitError:J??void 0,parseError:H,onClick:fo?async()=>{if(!oo)return;if(!uo)throw Error("Funding wallet is not enabled");let o=A.FUNDING_METHOD_SELECTION_SCREEN;O({...C,funding:{...C.funding,methodScreen:o}}),E(o)}:async()=>{if($<(R?.instructions.length??1)-1)q($+1);else try{X(!0);let o=await F();if(G||!o||!oo||!P||!M||!to)return;let{rootWallet:n}=c(M,oo.address);if(!n)throw Error("No root wallet for transacting wallet found");let{entropyId:t,entropyIdVerifier:e}=m(n),{signature:r,receipt:i}=await p({tx:V,accessToken:o,connection:Z,walletProxy:P,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:oo.address,transactingWalletIndex:oo.walletIndex??0,transactionOptions:C.sendSolanaTransaction?.transactionOptions});Q(S(r,i))}catch(o){console.warn({transaction:V,error:o}),Y(o)}finally{X(!1)}},onClose:lo,onBack:$>0&&no>1?()=>q($-1):void 0})};export{C as SendSolanaTransactionScreen};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as t,jsx as n}from"react/jsx-runtime";import i from"@heroicons/react/24/outline/CheckCircleIcon";import{styled as r}from"styled-components";import{PrimaryButton as s}from"../../components/Button.mjs";import{CircleBackground as e}from"../../components/CircleBackground.mjs";import{RefactorSpacerBottom as m}from"../../components/Layouts.mjs";import{BlobbyFooter as c}from"../../components/ModalFooter.mjs";import{ModalHeader as a}from"../../components/ModalHeader.mjs";import{CenteredScreenHeader as p}from"../../components/ScreenHeader.mjs";import{SolanaTransactionDetails as l}from"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import j from"../../components/layout/StackedContainer.mjs";import{Grow as h}from"../LandingScreen/styles.mjs";import"../../components/Loader.mjs";import"../../configuration/context.mjs";import"react";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"../../hooks/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"viem";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const d=({instructions:r,fees:s,onClose:d,receiptHeader:f,receiptDescription:g,transactionInfo:y,solPrice:b,rpcEndpoint:k})=>/*#__PURE__*/o(t,{children:[/*#__PURE__*/n(a,{onClose:d}),/*#__PURE__*/n(j,{style:{marginBottom:"16px"},children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/n(e,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/n(i,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/n(p,{title:f??"Transaction complete!",description:g??"You're all set."}),/*#__PURE__*/n(l,{solPrice:b,instructions:r,fees:s,transactionInfo:y,rpcEndpoint:k}),/*#__PURE__*/n(h,{}),/*#__PURE__*/n(u,{loading:!1,onClick:d,children:"Close"}),/*#__PURE__*/n(m,{}),/*#__PURE__*/n(c,{})]});let u=/*#__PURE__*/r(s).withConfig({displayName:"SubmitButton",componentId:"sc-4dd23752-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);export{d as SolanaTransactionReceiptView};
1
+ import{jsxs as o,Fragment as t,jsx as n}from"react/jsx-runtime";import i from"@heroicons/react/24/outline/CheckCircleIcon";import{styled as r}from"styled-components";import{PrimaryButton as s}from"../../components/Button.mjs";import{CircleBackground as e}from"../../components/CircleBackground.mjs";import{RefactorSpacerBottom as m}from"../../components/Layouts.mjs";import{BlobbyFooter as c}from"../../components/ModalFooter.mjs";import{ModalHeader as a}from"../../components/ModalHeader.mjs";import{CenteredScreenHeader as p}from"../../components/ScreenHeader.mjs";import{SolanaTransactionDetails as l}from"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import j from"../../components/layout/StackedContainer.mjs";import{Grow as h}from"../LandingScreen/styles.mjs";import"../../components/Loader.mjs";import"../../configuration/context.mjs";import"react";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"../../hooks/index.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/embedded-wallets/PriceDisplay.mjs";import"viem";import"../../lib/ethers.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"../../lib/solana/transaction.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const d=({instructions:r,fees:s,onClose:d,receiptHeader:f,receiptDescription:g,transactionInfo:y,solPrice:b,rpcEndpoint:k})=>/*#__PURE__*/o(t,{children:[/*#__PURE__*/n(a,{onClose:d}),/*#__PURE__*/n(j,{style:{marginBottom:"16px"},children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/n(e,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/n(i,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/n(p,{title:f??"Transaction complete!",description:g??"You're all set."}),/*#__PURE__*/n(l,{solPrice:b,instructions:r,fees:s,transactionInfo:y,rpcEndpoint:k}),/*#__PURE__*/n(h,{}),/*#__PURE__*/n(u,{loading:!1,onClick:d,children:"Close"}),/*#__PURE__*/n(m,{}),/*#__PURE__*/n(c,{})]});let u=/*#__PURE__*/r(s).withConfig({displayName:"SubmitButton",componentId:"sc-4dd23752-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);export{d as SolanaTransactionReceiptView};