thirdweb 5.56.0 → 5.57.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.
- package/dist/cjs/contract/verification/index.js +29 -33
- package/dist/cjs/contract/verification/index.js.map +1 -1
- package/dist/cjs/extensions/erc1155/read/getNFTs.js +4 -1
- package/dist/cjs/extensions/erc1155/read/getNFTs.js.map +1 -1
- package/dist/cjs/react/core/utils/walletIcon.js +4 -1
- package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
- package/dist/cjs/react/native/ui/components/WalletImage.js +2 -0
- package/dist/cjs/react/native/ui/components/WalletImage.js.map +1 -1
- package/dist/cjs/react/native/ui/connect/InAppWalletUI.js +21 -1
- package/dist/cjs/react/native/ui/connect/InAppWalletUI.js.map +1 -1
- package/dist/cjs/react/native/ui/connect/TokenListScreen.js +2 -1
- package/dist/cjs/react/native/ui/connect/TokenListScreen.js.map +1 -1
- package/dist/cjs/react/native/ui/icons/svgs.js +2 -1
- package/dist/cjs/react/native/ui/icons/svgs.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js +15 -2
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -12
- package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js +5 -5
- package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/MediaRenderer.js +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/MediaRenderer.js.map +1 -1
- package/dist/cjs/react/web/wallets/ecosystem/EcosystemWalletHeader.js +3 -3
- package/dist/cjs/react/web/wallets/ecosystem/EcosystemWalletHeader.js.map +1 -1
- package/dist/cjs/react/web/wallets/in-app/InAppWalletConnectUI.js +4 -0
- package/dist/cjs/react/web/wallets/in-app/InAppWalletConnectUI.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +38 -19
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/GuestLogin.js +81 -0
- package/dist/cjs/react/web/wallets/shared/GuestLogin.js.map +1 -0
- package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js +1 -1
- package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/SocialLogin.js +1 -1
- package/dist/cjs/react/web/wallets/shared/SocialLogin.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/de.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/de.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/en.js +1 -0
- package/dist/cjs/react/web/wallets/shared/locale/en.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/es.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/es.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/fr.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/fr.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/ja.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/ja.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/kr.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/kr.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/tl.js +2 -1
- package/dist/cjs/react/web/wallets/shared/locale/tl.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/locale/vi.js +1 -0
- package/dist/cjs/react/web/wallets/shared/locale/vi.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/oauthSignIn.js +1 -0
- package/dist/cjs/react/web/wallets/shared/oauthSignIn.js.map +1 -1
- package/dist/cjs/utils/any-evm/deploy-metadata.js +1 -0
- package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
- package/dist/cjs/utils/encoding/hex.js +1 -3
- package/dist/cjs/utils/encoding/hex.js.map +1 -1
- package/dist/cjs/utils/fetch.js +7 -12
- package/dist/cjs/utils/fetch.js.map +1 -1
- package/dist/cjs/utils/promise/p-limit.js.map +1 -1
- package/dist/cjs/utils/signatures/sign-message.js +2 -4
- package/dist/cjs/utils/signatures/sign-message.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/in-app/core/authentication/guest.js +33 -0
- package/dist/cjs/wallets/in-app/core/authentication/guest.js.map +1 -0
- package/dist/cjs/wallets/in-app/core/authentication/types.js +1 -0
- package/dist/cjs/wallets/in-app/core/authentication/types.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/auth/native-auth.js +25 -0
- package/dist/cjs/wallets/in-app/native/auth/native-auth.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js +1 -3
- package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/helpers/wallet/sss.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/native-connector.js +32 -0
- package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +13 -1
- package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js +8 -0
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/cjs/wallets/manager/index.js +5 -0
- package/dist/cjs/wallets/manager/index.js.map +1 -1
- package/dist/cjs/wallets/types.js +1 -0
- package/dist/cjs/wallets/types.js.map +1 -1
- package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +2 -4
- package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -1
- package/dist/esm/contract/verification/index.js +29 -33
- package/dist/esm/contract/verification/index.js.map +1 -1
- package/dist/esm/extensions/erc1155/read/getNFTs.js +4 -1
- package/dist/esm/extensions/erc1155/read/getNFTs.js.map +1 -1
- package/dist/esm/react/core/utils/walletIcon.js +3 -0
- package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
- package/dist/esm/react/native/ui/components/WalletImage.js +3 -1
- package/dist/esm/react/native/ui/components/WalletImage.js.map +1 -1
- package/dist/esm/react/native/ui/connect/InAppWalletUI.js +21 -1
- package/dist/esm/react/native/ui/connect/InAppWalletUI.js.map +1 -1
- package/dist/esm/react/native/ui/connect/TokenListScreen.js +2 -1
- package/dist/esm/react/native/ui/connect/TokenListScreen.js.map +1 -1
- package/dist/esm/react/native/ui/icons/svgs.js +1 -0
- package/dist/esm/react/native/ui/icons/svgs.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js +15 -2
- package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -12
- package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js +6 -6
- package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js.map +1 -1
- package/dist/esm/react/web/wallets/ecosystem/EcosystemWalletHeader.js +3 -3
- package/dist/esm/react/web/wallets/ecosystem/EcosystemWalletHeader.js.map +1 -1
- package/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js +4 -0
- package/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +38 -19
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/GuestLogin.js +78 -0
- package/dist/esm/react/web/wallets/shared/GuestLogin.js.map +1 -0
- package/dist/esm/react/web/wallets/shared/OTPLoginUI.js +1 -1
- package/dist/esm/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/SocialLogin.js +1 -1
- package/dist/esm/react/web/wallets/shared/SocialLogin.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/de.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/de.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/en.js +1 -0
- package/dist/esm/react/web/wallets/shared/locale/en.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/es.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/es.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/fr.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/fr.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/ja.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/ja.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/kr.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/kr.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/tl.js +2 -1
- package/dist/esm/react/web/wallets/shared/locale/tl.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/locale/vi.js +1 -0
- package/dist/esm/react/web/wallets/shared/locale/vi.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/oauthSignIn.js +1 -0
- package/dist/esm/react/web/wallets/shared/oauthSignIn.js.map +1 -1
- package/dist/esm/utils/any-evm/deploy-metadata.js +1 -0
- package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
- package/dist/esm/utils/encoding/hex.js +1 -3
- package/dist/esm/utils/encoding/hex.js.map +1 -1
- package/dist/esm/utils/fetch.js +1 -7
- package/dist/esm/utils/fetch.js.map +1 -1
- package/dist/esm/utils/promise/p-limit.js.map +1 -1
- package/dist/esm/utils/signatures/sign-message.js +2 -4
- package/dist/esm/utils/signatures/sign-message.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/in-app/core/authentication/guest.js +30 -0
- package/dist/esm/wallets/in-app/core/authentication/guest.js.map +1 -0
- package/dist/esm/wallets/in-app/core/authentication/types.js +1 -0
- package/dist/esm/wallets/in-app/core/authentication/types.js.map +1 -1
- package/dist/esm/wallets/in-app/native/auth/native-auth.js +24 -0
- package/dist/esm/wallets/in-app/native/auth/native-auth.js.map +1 -1
- package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js +1 -3
- package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
- package/dist/esm/wallets/in-app/native/helpers/wallet/sss.js.map +1 -1
- package/dist/esm/wallets/in-app/native/native-connector.js +33 -1
- package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +13 -1
- package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js +8 -0
- package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/esm/wallets/manager/index.js +5 -0
- package/dist/esm/wallets/manager/index.js.map +1 -1
- package/dist/esm/wallets/types.js +1 -0
- package/dist/esm/wallets/types.js.map +1 -1
- package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +2 -4
- package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -1
- package/dist/types/contract/verification/index.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/read/getNFTs.d.ts.map +1 -1
- package/dist/types/react/core/utils/storage.d.ts +1 -1
- package/dist/types/react/core/utils/storage.d.ts.map +1 -1
- package/dist/types/react/core/utils/walletIcon.d.ts +2 -1
- package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
- package/dist/types/react/native/ui/components/WalletImage.d.ts.map +1 -1
- package/dist/types/react/native/ui/connect/InAppWalletUI.d.ts.map +1 -1
- package/dist/types/react/native/ui/connect/TokenListScreen.d.ts.map +1 -1
- package/dist/types/react/native/ui/icons/svgs.d.ts +1 -0
- package/dist/types/react/native/ui/icons/svgs.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/TokenSelector.d.ts.map +1 -1
- package/dist/types/react/web/wallets/ecosystem/EcosystemWalletHeader.d.ts.map +1 -1
- package/dist/types/react/web/wallets/in-app/InAppWalletConnectUI.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts +3 -0
- package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/GuestLogin.d.ts +19 -0
- package/dist/types/react/web/wallets/shared/GuestLogin.d.ts.map +1 -0
- package/dist/types/react/web/wallets/shared/OTPLoginUI.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/de.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/de.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/en.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/en.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/es.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/es.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/fr.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/fr.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/ja.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/ja.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/kr.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/kr.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/tl.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/tl.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/types.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/types.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/locale/vi.d.ts +1 -0
- package/dist/types/react/web/wallets/shared/locale/vi.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/oauthSignIn.d.ts.map +1 -1
- package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
- package/dist/types/utils/encoding/hex.d.ts.map +1 -1
- package/dist/types/utils/fetch.d.ts +4 -2
- package/dist/types/utils/fetch.d.ts.map +1 -1
- package/dist/types/utils/promise/p-limit.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/in-app/core/authentication/guest.d.ts +12 -0
- package/dist/types/wallets/in-app/core/authentication/guest.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/authentication/types.d.ts +8 -4
- package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/types.d.ts +2 -1
- package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/auth/native-auth.d.ts +4 -3
- package/dist/types/wallets/in-app/native/auth/native-auth.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/helpers/api/fetchers.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/helpers/wallet/sss.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/native-connector.d.ts +1 -0
- package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +13 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +3 -3
- package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
- package/dist/types/wallets/manager/index.d.ts.map +1 -1
- package/dist/types/wallets/types.d.ts +2 -1
- package/dist/types/wallets/types.d.ts.map +1 -1
- package/dist/types/wallets/wallet-connect/receiver/request-handlers/switch-chain.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/contract/verification/index.ts +32 -34
- package/src/extensions/erc1155/read/getNFTs.ts +4 -1
- package/src/react/core/utils/walletIcon.ts +5 -0
- package/src/react/native/ui/components/WalletImage.tsx +3 -0
- package/src/react/native/ui/connect/InAppWalletUI.tsx +30 -0
- package/src/react/native/ui/connect/TokenListScreen.tsx +9 -12
- package/src/react/native/ui/icons/svgs.ts +2 -0
- package/src/react/web/ui/ConnectWallet/Details.tsx +15 -2
- package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +36 -38
- package/src/react/web/ui/ConnectWallet/screens/TokenSelector.tsx +34 -36
- package/src/react/web/ui/MediaRenderer/MediaRenderer.tsx +1 -1
- package/src/react/web/wallets/ecosystem/EcosystemWalletHeader.tsx +18 -20
- package/src/react/web/wallets/in-app/InAppWalletConnectUI.tsx +16 -0
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +128 -101
- package/src/react/web/wallets/shared/GuestLogin.tsx +159 -0
- package/src/react/web/wallets/shared/OTPLoginUI.tsx +3 -5
- package/src/react/web/wallets/shared/SocialLogin.tsx +1 -1
- package/src/react/web/wallets/shared/locale/de.ts +2 -1
- package/src/react/web/wallets/shared/locale/en.ts +1 -0
- package/src/react/web/wallets/shared/locale/es.ts +2 -1
- package/src/react/web/wallets/shared/locale/fr.ts +2 -1
- package/src/react/web/wallets/shared/locale/ja.ts +2 -1
- package/src/react/web/wallets/shared/locale/kr.ts +2 -1
- package/src/react/web/wallets/shared/locale/tl.ts +2 -1
- package/src/react/web/wallets/shared/locale/types.ts +1 -0
- package/src/react/web/wallets/shared/locale/vi.ts +1 -0
- package/src/react/web/wallets/shared/oauthSignIn.ts +6 -2
- package/src/utils/any-evm/deploy-metadata.ts +1 -0
- package/src/utils/encoding/hex.ts +2 -3
- package/src/utils/fetch.test.ts +94 -0
- package/src/utils/fetch.ts +1 -12
- package/src/utils/promise/p-limit.ts +165 -165
- package/src/utils/signatures/sign-message.ts +3 -3
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/authentication/guest.ts +37 -0
- package/src/wallets/in-app/core/authentication/types.ts +9 -4
- package/src/wallets/in-app/core/wallet/types.ts +6 -1
- package/src/wallets/in-app/native/auth/native-auth.ts +34 -3
- package/src/wallets/in-app/native/helpers/api/fetchers.ts +1 -2
- package/src/wallets/in-app/native/helpers/wallet/sss.ts +1 -6
- package/src/wallets/in-app/native/native-connector.ts +42 -2
- package/src/wallets/in-app/web/in-app.ts +13 -1
- package/src/wallets/in-app/web/lib/auth/oauth.ts +3 -3
- package/src/wallets/in-app/web/lib/web-connector.ts +8 -0
- package/src/wallets/manager/index.ts +5 -0
- package/src/wallets/types.ts +2 -0
- package/src/wallets/wallet-connect/receiver/request-handlers/switch-chain.ts +2 -3
@@ -0,0 +1,159 @@
|
|
1
|
+
"use client";
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
3
|
+
import type { ThirdwebClient } from "../../../../client/client.js";
|
4
|
+
import { webLocalStorage } from "../../../../utils/storage/webStorage.js";
|
5
|
+
import { isEcosystemWallet } from "../../../../wallets/ecosystem/is-ecosystem-wallet.js";
|
6
|
+
import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
|
7
|
+
import { setLastAuthProvider } from "../../../core/utils/storage.js";
|
8
|
+
import type { ConnectLocale } from "../../ui/ConnectWallet/locale/types.js";
|
9
|
+
import { Spacer } from "../../ui/components/Spacer.js";
|
10
|
+
import { Spinner } from "../../ui/components/Spinner.js";
|
11
|
+
import { Container, ModalHeader } from "../../ui/components/basic.js";
|
12
|
+
import { Button } from "../../ui/components/buttons.js";
|
13
|
+
import { Text } from "../../ui/components/text.js";
|
14
|
+
import type { ConnectWalletSelectUIState } from "./ConnectWalletSocialOptions.js";
|
15
|
+
import type { InAppWalletLocale } from "./locale/types.js";
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @internal
|
19
|
+
*/
|
20
|
+
export function GuestLogin(props: {
|
21
|
+
locale: InAppWalletLocale;
|
22
|
+
wallet: Wallet;
|
23
|
+
done: () => void;
|
24
|
+
goBack?: () => void;
|
25
|
+
state: ConnectWalletSelectUIState;
|
26
|
+
size: "compact" | "wide";
|
27
|
+
client: ThirdwebClient;
|
28
|
+
connectLocale: ConnectLocale;
|
29
|
+
}) {
|
30
|
+
const ewLocale = props.locale;
|
31
|
+
const locale = ewLocale.socialLoginScreen;
|
32
|
+
|
33
|
+
const [authError, setAuthError] = useState<string | undefined>(undefined);
|
34
|
+
const { done, wallet } = props;
|
35
|
+
const [status, setStatus] = useState<"connecting" | "connected" | "error">(
|
36
|
+
"connecting",
|
37
|
+
);
|
38
|
+
|
39
|
+
const handleGuestLogin = async () => {
|
40
|
+
const connectOptions = {
|
41
|
+
client: props.client,
|
42
|
+
ecosystem: isEcosystemWallet(wallet)
|
43
|
+
? {
|
44
|
+
id: wallet.id,
|
45
|
+
partnerId: wallet.getConfig()?.partnerId,
|
46
|
+
}
|
47
|
+
: undefined,
|
48
|
+
strategy: "guest" as const,
|
49
|
+
};
|
50
|
+
try {
|
51
|
+
await wallet.connect(connectOptions);
|
52
|
+
await setLastAuthProvider("guest", webLocalStorage);
|
53
|
+
|
54
|
+
setStatus("connected");
|
55
|
+
done();
|
56
|
+
} catch (e) {
|
57
|
+
setStatus("error");
|
58
|
+
// TODO this only happens on 'retry' button click, not on initial login
|
59
|
+
// should pass auth error message to this component
|
60
|
+
if (
|
61
|
+
e instanceof Error &&
|
62
|
+
e?.message?.includes("PAYMENT_METHOD_REQUIRED")
|
63
|
+
) {
|
64
|
+
setAuthError(ewLocale.maxAccountsExceeded);
|
65
|
+
}
|
66
|
+
console.error("Error generating guest account", e);
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
const guestLogin = props.state?.guestLogin;
|
71
|
+
|
72
|
+
const socialLoginStarted = useRef(false);
|
73
|
+
useEffect(() => {
|
74
|
+
if (socialLoginStarted.current) {
|
75
|
+
return;
|
76
|
+
}
|
77
|
+
|
78
|
+
if (guestLogin) {
|
79
|
+
socialLoginStarted.current = true;
|
80
|
+
setStatus("connecting");
|
81
|
+
guestLogin.connectionPromise
|
82
|
+
.then(() => {
|
83
|
+
done();
|
84
|
+
setStatus("connected");
|
85
|
+
})
|
86
|
+
.catch((e) => {
|
87
|
+
setAuthError(e.message);
|
88
|
+
setStatus("error");
|
89
|
+
});
|
90
|
+
}
|
91
|
+
}, [done, guestLogin]);
|
92
|
+
|
93
|
+
return (
|
94
|
+
<Container animate="fadein" flex="column" fullHeight>
|
95
|
+
<Container
|
96
|
+
flex="column"
|
97
|
+
expand
|
98
|
+
p="lg"
|
99
|
+
style={{
|
100
|
+
paddingBottom: 0,
|
101
|
+
}}
|
102
|
+
>
|
103
|
+
{props.goBack && (
|
104
|
+
<ModalHeader title={locale.title} onBack={props.goBack} />
|
105
|
+
)}
|
106
|
+
|
107
|
+
{props.size === "compact" ? <Spacer y="xl" /> : null}
|
108
|
+
|
109
|
+
<Container
|
110
|
+
flex="column"
|
111
|
+
center="both"
|
112
|
+
expand
|
113
|
+
style={{
|
114
|
+
textAlign: "center",
|
115
|
+
minHeight: "250px",
|
116
|
+
}}
|
117
|
+
>
|
118
|
+
{status !== "error" && (
|
119
|
+
<Container animate="fadein">
|
120
|
+
<Text
|
121
|
+
color="primaryText"
|
122
|
+
center
|
123
|
+
multiline
|
124
|
+
style={{
|
125
|
+
maxWidth: "250px",
|
126
|
+
}}
|
127
|
+
>
|
128
|
+
Generating your guest account
|
129
|
+
</Text>
|
130
|
+
<Spacer y="xl" />
|
131
|
+
<Container center="x" flex="row">
|
132
|
+
<Spinner size="lg" color="accentText" />
|
133
|
+
</Container>
|
134
|
+
|
135
|
+
<Spacer y="xxl" />
|
136
|
+
</Container>
|
137
|
+
)}
|
138
|
+
|
139
|
+
{status === "error" && (
|
140
|
+
<Container animate="fadein">
|
141
|
+
{authError ? (
|
142
|
+
<Text center color="danger">
|
143
|
+
{authError}
|
144
|
+
</Text>
|
145
|
+
) : (
|
146
|
+
<Text color="danger">{locale.failed}</Text>
|
147
|
+
)}
|
148
|
+
<Spacer y="lg" />
|
149
|
+
<Button variant="primary" onClick={handleGuestLogin}>
|
150
|
+
{locale.retry}
|
151
|
+
</Button>
|
152
|
+
<Spacer y="xxl" />
|
153
|
+
</Container>
|
154
|
+
)}
|
155
|
+
</Container>
|
156
|
+
</Container>
|
157
|
+
</Container>
|
158
|
+
);
|
159
|
+
}
|
@@ -280,11 +280,9 @@ export function OTPLoginUI(props: {
|
|
280
280
|
|
281
281
|
<Container p={isWideModal ? undefined : "lg"}>
|
282
282
|
{accountStatus === "error" && (
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
</Text>
|
287
|
-
</>
|
283
|
+
<Text size="sm" center color="danger">
|
284
|
+
{locale.emailLoginScreen.failedToSendCode}
|
285
|
+
</Text>
|
288
286
|
)}
|
289
287
|
|
290
288
|
{accountStatus === "sending" && (
|
@@ -56,5 +56,6 @@ export default {
|
|
56
56
|
signInWithPhone: "Mit Telefonnummer anmelden",
|
57
57
|
phoneRequired: "Telefonnummer ist erforderlich",
|
58
58
|
passkey: "Passkey",
|
59
|
-
linkWallet: "
|
59
|
+
linkWallet: "Verknüpfen Sie eine Brieftasche",
|
60
|
+
loginAsGuest: "Melden Sie sich als Gast an",
|
60
61
|
} satisfies InAppWalletLocale;
|
@@ -55,5 +55,6 @@ export default {
|
|
55
55
|
phoneRequired: "Se requiere número de teléfono",
|
56
56
|
signInWithEmail: "Iniciar sesión con correo electrónico",
|
57
57
|
passkey: "Clave de acceso",
|
58
|
-
linkWallet: "
|
58
|
+
linkWallet: "Vincular una billetera",
|
59
|
+
loginAsGuest: "Inicia sesión como invitado",
|
59
60
|
} satisfies InAppWalletLocale;
|
@@ -56,5 +56,6 @@ export default {
|
|
56
56
|
signInWithPhone: "Se connecter avec le numéro de téléphone",
|
57
57
|
phoneRequired: "Le numéro de téléphone est requis",
|
58
58
|
passkey: "Passkey",
|
59
|
-
linkWallet: "
|
59
|
+
linkWallet: "Lier un portefeuille",
|
60
|
+
loginAsGuest: "Connectez-vous en tant qu'invité",
|
60
61
|
} satisfies InAppWalletLocale;
|
@@ -55,5 +55,6 @@ export default {
|
|
55
55
|
signInWithPhone: "Mag-login gamit ang numero ng telepono",
|
56
56
|
phoneRequired: "Kinakailangan ang numero ng telepono",
|
57
57
|
passkey: "Passkey",
|
58
|
-
linkWallet: "
|
58
|
+
linkWallet: "Mag-link ng Wallet",
|
59
|
+
loginAsGuest: "Mag-login bilang bisita",
|
59
60
|
} satisfies InAppWalletLocale;
|
@@ -1,6 +1,9 @@
|
|
1
1
|
import type { ThirdwebClient } from "../../../../client/client.js";
|
2
2
|
import { getLoginUrl } from "../../../../wallets/in-app/core/authentication/getLoginPath.js";
|
3
|
-
import type {
|
3
|
+
import type {
|
4
|
+
InAppWalletOAuth,
|
5
|
+
InAppWalletSocialAuth,
|
6
|
+
} from "../../../../wallets/in-app/core/wallet/types.js";
|
4
7
|
import type { Ecosystem } from "../../../../wallets/in-app/web/types.js";
|
5
8
|
import type { Theme } from "../../../core/design-system/index.js";
|
6
9
|
|
@@ -25,7 +28,7 @@ function getWidthAndHeight(authOption: InAppWalletSocialAuth) {
|
|
25
28
|
}
|
26
29
|
|
27
30
|
function getOauthLoginPath(
|
28
|
-
authOption:
|
31
|
+
authOption: InAppWalletOAuth,
|
29
32
|
client: ThirdwebClient,
|
30
33
|
ecosystem?: Ecosystem,
|
31
34
|
) {
|
@@ -37,6 +40,7 @@ function getOauthLoginPath(
|
|
37
40
|
case "telegram":
|
38
41
|
case "line":
|
39
42
|
case "x":
|
43
|
+
case "guest":
|
40
44
|
case "discord":
|
41
45
|
return getLoginUrl({ authOption, client, ecosystem });
|
42
46
|
default:
|
@@ -436,9 +436,8 @@ export function numberToHex(
|
|
436
436
|
);
|
437
437
|
}
|
438
438
|
|
439
|
-
const hex = `0x${(
|
440
|
-
? (1n << BigInt(size * 8)) + BigInt(value)
|
441
|
-
: value
|
439
|
+
const hex = `0x${(
|
440
|
+
signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value
|
442
441
|
).toString(16)}` as Hex;
|
443
442
|
if (size) {
|
444
443
|
return padHex(hex, { size }) as Hex;
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
2
|
+
import type { ThirdwebClient } from "../client/client.js";
|
3
|
+
import type { Ecosystem } from "../wallets/in-app/web/types.js";
|
4
|
+
import {
|
5
|
+
IS_THIRDWEB_URL_CACHE,
|
6
|
+
getClientFetch,
|
7
|
+
isThirdwebUrl,
|
8
|
+
} from "./fetch.js";
|
9
|
+
|
10
|
+
// Mock fetch
|
11
|
+
global.fetch = vi.fn();
|
12
|
+
|
13
|
+
describe("getClientFetch", () => {
|
14
|
+
const mockClient: ThirdwebClient = {
|
15
|
+
clientId: "test-client-id",
|
16
|
+
secretKey: undefined,
|
17
|
+
};
|
18
|
+
const mockEcosystem: Ecosystem = { id: "ecosystem.test" };
|
19
|
+
|
20
|
+
beforeEach(() => {
|
21
|
+
vi.resetAllMocks();
|
22
|
+
});
|
23
|
+
|
24
|
+
it("should set correct headers for thirdweb URLs", async () => {
|
25
|
+
vi.spyOn(global, "fetch").mockResolvedValue(new Response());
|
26
|
+
const clientFetch = getClientFetch(mockClient, mockEcosystem);
|
27
|
+
await clientFetch("https://api.thirdweb.com/test");
|
28
|
+
|
29
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
30
|
+
"https://api.thirdweb.com/test",
|
31
|
+
expect.objectContaining({
|
32
|
+
headers: expect.any(Headers),
|
33
|
+
}),
|
34
|
+
);
|
35
|
+
|
36
|
+
// biome-ignore lint/suspicious/noExplicitAny: `any` type ok for tests
|
37
|
+
const headers = (global.fetch as any).mock.calls[0][1].headers;
|
38
|
+
expect(headers.get("x-client-id")).toBe("test-client-id");
|
39
|
+
expect(headers.get("x-ecosystem-id")).toBe("ecosystem.test");
|
40
|
+
});
|
41
|
+
|
42
|
+
it("should not set headers for non-thirdweb URLs", async () => {
|
43
|
+
vi.spyOn(global, "fetch").mockResolvedValue(new Response());
|
44
|
+
const clientFetch = getClientFetch(mockClient, mockEcosystem);
|
45
|
+
await clientFetch("https://example.com");
|
46
|
+
|
47
|
+
expect(global.fetch).toHaveBeenCalledWith(
|
48
|
+
"https://example.com",
|
49
|
+
expect.not.objectContaining({
|
50
|
+
headers: expect.any(Headers),
|
51
|
+
}),
|
52
|
+
);
|
53
|
+
});
|
54
|
+
|
55
|
+
it("should abort the request after timeout", async () => {
|
56
|
+
vi.useFakeTimers();
|
57
|
+
const abortSpy = vi.spyOn(AbortController.prototype, "abort");
|
58
|
+
const clientFetch = getClientFetch(mockClient);
|
59
|
+
|
60
|
+
const fetchPromise = clientFetch("https://api.thirdweb.com/test", {
|
61
|
+
requestTimeoutMs: 5000,
|
62
|
+
});
|
63
|
+
vi.advanceTimersByTime(5001);
|
64
|
+
|
65
|
+
await expect(fetchPromise).rejects.toThrow();
|
66
|
+
expect(abortSpy).toHaveBeenCalled();
|
67
|
+
|
68
|
+
vi.useRealTimers();
|
69
|
+
});
|
70
|
+
});
|
71
|
+
|
72
|
+
describe("isThirdwebUrl", () => {
|
73
|
+
it("should return true for thirdweb domains", () => {
|
74
|
+
expect(isThirdwebUrl("https://api.thirdweb.com")).toBe(true);
|
75
|
+
expect(isThirdwebUrl("https://example.ipfscdn.io")).toBe(true);
|
76
|
+
});
|
77
|
+
|
78
|
+
it("should return false for non-thirdweb domains", () => {
|
79
|
+
expect(isThirdwebUrl("https://example.com")).toBe(false);
|
80
|
+
expect(isThirdwebUrl("https://otherthirdweb.com")).toBe(false);
|
81
|
+
});
|
82
|
+
|
83
|
+
it("should handle invalid URLs", () => {
|
84
|
+
expect(isThirdwebUrl("not-a-url")).toBe(false);
|
85
|
+
});
|
86
|
+
|
87
|
+
it("should cache results", () => {
|
88
|
+
const url = "https://api.thirdweb.com";
|
89
|
+
isThirdwebUrl(url);
|
90
|
+
isThirdwebUrl(url);
|
91
|
+
// You might need to expose the cache to test this properly
|
92
|
+
expect(IS_THIRDWEB_URL_CACHE.get(url)).toBe(true);
|
93
|
+
});
|
94
|
+
});
|
package/src/utils/fetch.ts
CHANGED
@@ -10,20 +10,10 @@ import {
|
|
10
10
|
|
11
11
|
const DEFAULT_REQUEST_TIMEOUT = 60000;
|
12
12
|
|
13
|
-
const FETCH_CACHE = new WeakMap<
|
14
|
-
{ client: ThirdwebClient; ecosystem?: Ecosystem },
|
15
|
-
(url: string, init?: RequestInit) => Promise<Response>
|
16
|
-
>();
|
17
|
-
|
18
13
|
/**
|
19
14
|
* @internal
|
20
15
|
*/
|
21
16
|
export function getClientFetch(client: ThirdwebClient, ecosystem?: Ecosystem) {
|
22
|
-
if (FETCH_CACHE.has({ client, ecosystem })) {
|
23
|
-
// biome-ignore lint/style/noNonNullAssertion: the `has` above ensures that this will always be set
|
24
|
-
return FETCH_CACHE.get({ client, ecosystem })!;
|
25
|
-
}
|
26
|
-
|
27
17
|
/**
|
28
18
|
* @internal
|
29
19
|
*/
|
@@ -83,7 +73,6 @@ export function getClientFetch(client: ThirdwebClient, ecosystem?: Ecosystem) {
|
|
83
73
|
}
|
84
74
|
});
|
85
75
|
}
|
86
|
-
FETCH_CACHE.set({ client, ecosystem }, fetchWithHeaders);
|
87
76
|
return fetchWithHeaders;
|
88
77
|
}
|
89
78
|
|
@@ -96,7 +85,7 @@ const THIRDWEB_DOMAINS = [
|
|
96
85
|
".thirdweb-dev.com",
|
97
86
|
] as const;
|
98
87
|
|
99
|
-
const IS_THIRDWEB_URL_CACHE = new LruMap<boolean>(4096);
|
88
|
+
export const IS_THIRDWEB_URL_CACHE = new LruMap<boolean>(4096);
|
100
89
|
|
101
90
|
/**
|
102
91
|
* @internal
|