Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Web3Auth/web3auth-web
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: bf26ffa32ae92e318d58dff14ca04196ab84d824
Choose a base ref
..
head repository: Web3Auth/web3auth-web
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f6c6ebddcfba0c26424004a0075d2d85f809ac42
Choose a head ref
Showing with 3,086 additions and 4,402 deletions.
  1. +4 −33 demo/react-app-no-modal/src/App.tsx
  2. +2 −6 demo/vite-react-app/src/components/Main.tsx
  3. +5 −5 demo/vite-react-app/src/services/walletServiceHandlers.ts
  4. +30 −65 demo/vite-react-app/src/services/web3auth.tsx
  5. +14 −6 demo/vue-app-new/package-lock.json
  6. +84 −133 demo/vue-app-new/src/MainView.vue
  7. +109 −70 demo/vue-app-new/src/components/AppDashboard.vue
  8. +61 −54 demo/vue-app-new/src/components/AppSettings.vue
  9. +16 −7 demo/vue-app-new/src/config.ts
  10. +4 −0 demo/vue-app-new/src/services/ethHandlers.ts
  11. +17 −16 demo/vue-app-new/src/services/solHandlers.ts
  12. +12 −10 demo/vue-app-new/src/services/walletServiceHandlers.ts
  13. +7 −6 demo/vue-app-new/src/store/form.ts
  14. +5 −2 demo/vue-app-new/src/translations/en.json
  15. +12 −13 package-lock.json
  16. +18 −30 packages/modal/src/config.ts
  17. +5 −5 packages/modal/src/interface.ts
  18. +258 −330 packages/modal/src/modalManager.ts
  19. +19 −59 packages/modal/src/react/context/Web3AuthInnerContext.ts
  20. +4 −4 packages/modal/src/react/interfaces.ts
  21. +10 −10 packages/modal/src/ui/components/AdapterLoader.tsx
  22. +9 −9 packages/modal/src/ui/components/ExternalWallets.tsx
  23. +4 −4 packages/modal/src/ui/components/Loader.tsx
  24. +11 −11 packages/modal/src/ui/components/Modal.tsx
  25. +5 −5 packages/modal/src/ui/components/SocialLoginPasswordless.tsx
  26. +4 −4 packages/modal/src/ui/components/SocialLogins.tsx
  27. +13 −17 packages/modal/src/ui/interfaces.ts
  28. +28 −28 packages/modal/src/ui/loginModal.tsx
  29. +4 −4 packages/modal/src/ui/public/index.html
  30. +4 −4 packages/modal/src/ui/utils.ts
  31. +20 −50 packages/modal/src/vue/Web3AuthProvider.ts
  32. +5 −8 packages/modal/src/vue/interfaces.ts
  33. +4 −4 packages/no-modal/package.json
  34. +0 −297 packages/no-modal/src/adapters/auth-adapter/authAdapter.ts
  35. +0 −15 packages/no-modal/src/adapters/auth-adapter/config.ts
  36. +0 −3 packages/no-modal/src/adapters/auth-adapter/index.ts
  37. +0 −17 packages/no-modal/src/adapters/auth-adapter/interface.ts
  38. +0 −1 packages/no-modal/src/adapters/base-evm-adapter/index.ts
  39. +0 −1 packages/no-modal/src/adapters/base-solana-adapter/index.ts
  40. +0 −180 packages/no-modal/src/adapters/coinbase-adapter/coinbaseAdapter.ts
  41. +0 −1 packages/no-modal/src/adapters/coinbase-adapter/index.ts
  42. +0 −31 packages/no-modal/src/adapters/default-evm-adapter/index.ts
  43. +0 −42 packages/no-modal/src/adapters/default-evm-adapter/injectedAdapters.ts
  44. +0 −31 packages/no-modal/src/adapters/default-solana-adapter/index.ts
  45. +0 −53 packages/no-modal/src/adapters/default-solana-adapter/injectedAdapters.ts
  46. +0 −86 packages/no-modal/src/adapters/default-solana-adapter/walletStandardHandler.ts
  47. +0 −7 packages/no-modal/src/adapters/index.ts
  48. +0 −163 packages/no-modal/src/base/adapter/baseAdapter.ts
  49. +2 −2 packages/no-modal/src/base/chain/IChainInterface.ts
  50. +1 −1 packages/no-modal/src/base/chain/config.ts
  51. +102 −0 packages/no-modal/src/base/connector/baseConnector.ts
  52. +7 −5 packages/no-modal/src/base/{adapter → connector}/constants.ts
  53. +1 −1 packages/no-modal/src/base/{adapter → connector}/index.ts
  54. +44 −50 packages/no-modal/src/base/{adapter → connector}/interfaces.ts
  55. 0 packages/no-modal/src/base/{adapter → connector}/utils.ts
  56. +96 −45 packages/no-modal/src/base/core/IWeb3Auth.ts
  57. +2 −2 packages/no-modal/src/base/errors/index.ts
  58. +2 −6 packages/no-modal/src/base/hooks/index.ts
  59. +1 −1 packages/no-modal/src/base/index.ts
  60. +1 −0 packages/no-modal/src/base/interfaces.ts
  61. +5 −8 packages/no-modal/src/base/plugin/IPlugin.ts
  62. +2 −2 packages/no-modal/src/base/plugin/errors.ts
  63. +1 −1 packages/no-modal/src/base/utils.ts
  64. +17 −21 packages/no-modal/src/base/wallet/index.ts
  65. +403 −0 packages/no-modal/src/connectors/auth-connector/authConnector.ts
  66. +2 −0 packages/no-modal/src/connectors/auth-connector/index.ts
  67. +18 −0 packages/no-modal/src/connectors/auth-connector/interface.ts
  68. +24 −26 ...{adapters/base-evm-adapter/baseEvmAdapter.ts → connectors/base-evm-connector/baseEvmConnector.ts}
  69. +1 −0 packages/no-modal/src/connectors/base-evm-connector/index.ts
  70. +27 −35 ...se-solana-adapter/baseSolanaAdapter.ts → connectors/base-solana-connector/baseSolanaConnector.ts}
  71. +1 −0 packages/no-modal/src/connectors/base-solana-connector/index.ts
  72. +164 −0 packages/no-modal/src/connectors/coinbase-connector/coinbaseConnector.ts
  73. +1 −0 packages/no-modal/src/connectors/coinbase-connector/index.ts
  74. +7 −0 packages/no-modal/src/connectors/index.ts
  75. +2 −0 packages/no-modal/src/connectors/injected-evm-connector/index.ts
  76. +62 −57 ...lt-evm-adapter/injectedEvmAdapter.ts → connectors/injected-evm-connector/injectedEvmConnector.ts}
  77. +20 −0 packages/no-modal/src/connectors/injected-solana-connector/index.ts
  78. 0 ...es/no-modal/src/{adapters/default-solana-adapter → connectors/injected-solana-connector}/utils.ts
  79. +55 −61 ...apter/walletStandardAdapter.ts → connectors/injected-solana-connector/walletStandardConnector.ts}
  80. +39 −98 ...rs/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.ts
  81. +18 −22 ...modal/src/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.ts
  82. +1 −1 ...-modal/src/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/index.ts
  83. +4 −4 ...al/src/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/interface.ts
  84. 0 ...-modal/src/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/utils.ts
  85. +153 −138 ...r/walletConnectV2adapter.ts → connectors/wallet-connect-v2-connector/walletConnectV2Connector.ts}
  86. +24 −31 ...pters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.ts
  87. +1 −1 packages/no-modal/src/index.ts
  88. +297 −245 packages/no-modal/src/noModal.ts
  89. +19 −5 packages/no-modal/src/plugins/nft-checkout-plugin/plugin.ts
  90. +37 −227 packages/no-modal/src/plugins/wallet-services-plugin/plugin.ts
  91. +97 −38 packages/no-modal/src/providers/account-abstraction-provider/providers/AccountAbstractionProvider.ts
  92. +0 −2 packages/no-modal/src/providers/account-abstraction-provider/providers/index.ts
  93. +0 −33 ...-modal/src/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.ts
  94. +0 −29 ...no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.ts
  95. +0 −33 .../no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/LightSmartAccount.ts
  96. +0 −34 .../no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.ts
  97. +0 −37 ...s/no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.ts
  98. +0 −30 ...no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/SimpleSmartAccount.ts
  99. +0 −33 .../no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.ts
  100. +0 −9 packages/no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/constants.ts
  101. +13 −16 packages/no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/index.ts
  102. +0 −50 packages/no-modal/src/providers/account-abstraction-provider/providers/smartAccounts/types.ts
  103. +0 −9 packages/no-modal/src/providers/account-abstraction-provider/providers/types.ts
  104. +18 −23 packages/no-modal/src/providers/base-provider/CommonJRPCProvider.ts
  105. +38 −28 packages/no-modal/src/providers/base-provider/baseProvider.ts
  106. +7 −19 packages/no-modal/src/providers/base-provider/commonPrivateKeyProvider.ts
  107. +49 −46 ...o-modal/src/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.ts
  108. +0 −143 ...modal/src/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.ts
  109. +0 −115 ...ages/no-modal/src/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.ts
  110. +0 −2 packages/no-modal/src/providers/ethereum-provider/providers/privateKeyProviders/index.ts
  111. +2 −28 packages/no-modal/src/providers/ethereum-provider/rpc/ethRpcMiddlewares.ts
  112. +0 −14 packages/no-modal/src/providers/ethereum-provider/rpc/interfaces.ts
  113. +8 −20 packages/no-modal/src/providers/solana-provider/interface.ts
  114. +9 −9 ...s/no-modal/src/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.ts
  115. +8 −8 packages/no-modal/src/providers/solana-provider/providers/injectedProviders/base/providerHandlers.ts
  116. +1 −2 packages/no-modal/src/providers/solana-provider/providers/injectedProviders/index.ts
  117. +0 −10 packages/no-modal/src/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.ts
  118. +0 −7 packages/no-modal/src/providers/solana-provider/providers/injectedProviders/interface.ts
  119. +0 −73 ...ages/no-modal/src/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.ts
  120. +0 −97 ...no-modal/src/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.ts
  121. +16 −0 packages/no-modal/src/providers/solana-provider/providers/injectedProviders/utils.ts
  122. +106 −5 ...ages/no-modal/src/providers/solana-provider/providers/injectedProviders/walletStandardProvider.ts
  123. +30 −45 ...s/no-modal/src/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.ts
  124. +23 −31 ...ages/no-modal/src/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.ts
  125. +4 −20 packages/no-modal/src/providers/solana-provider/rpc/interfaces.ts
  126. +21 −22 packages/no-modal/src/providers/solana-provider/rpc/solanaRpcMiddlewares.ts
  127. +48 −30 packages/no-modal/src/providers/solana-provider/solanaWallet.ts
  128. +28 −52 ...ages/no-modal/src/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.ts
  129. +1 −7 packages/no-modal/src/providers/xrpl-provider/rpc/xrplRpcMiddlewares.ts
  130. +23 −61 packages/no-modal/src/react/no-modal/Web3AuthInnerContext.ts
  131. +4 −4 packages/no-modal/src/react/no-modal/interfaces.ts
  132. +7 −5 packages/no-modal/src/react/wallet-services-plugin/WalletServicesContext.ts
  133. +2 −2 packages/no-modal/src/react/wallet-services-plugin/interfaces.ts
  134. +23 −53 packages/no-modal/src/vue/no-modal/Web3AuthProvider.ts
  135. +8 −12 packages/no-modal/src/vue/no-modal/interfaces.ts
  136. +8 −6 packages/no-modal/src/vue/wallet-services-plugin/WalletServicesProvider.ts
  137. +2 −2 packages/no-modal/src/vue/wallet-services-plugin/interfaces.ts
  138. +1 −1 packages/no-modal/tsconfig.json
  139. +10 −11 packages/no-modal/webpack.config.js
37 changes: 4 additions & 33 deletions demo/react-app-no-modal/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useEffect, useState } from "react";
import { AuthLoginParams, CHAIN_NAMESPACES, SafeEventEmitterProvider, WALLET_CONNECTORS } from "@web3auth/modal";
import { Web3AuthNoModal } from "@web3auth/no-modal";
import { CHAIN_NAMESPACES, SafeEventEmitterProvider, WALLET_ADAPTERS, AuthAdapter, AuthLoginParams, EthereumPrivateKeyProvider } from "@web3auth/modal";
import { useEffect, useState } from "react";
import "./App.css";
import RPC from "./web3RPC"; // for using web3.js

@@ -23,21 +23,16 @@ function App() {
logo: "https://images.toruswallet.io/eth.svg",
chainNamespace: CHAIN_NAMESPACES.EIP155,
}
const privateKeyProvider = new EthereumPrivateKeyProvider({ config: { chainConfig } });

const web3auth = new Web3AuthNoModal({
clientId,
web3AuthNetwork: "cyan",
privateKeyProvider
});

setWeb3auth(web3auth);

const authAdapter = new AuthAdapter();
web3auth.configureAdapter(authAdapter);

await web3auth.init();
if (web3auth.connectedAdapterName && web3auth.provider) {
if (web3auth.connectedConnectorName && web3auth.provider) {
setProvider(web3auth.provider);
}
} catch (error) {
@@ -53,7 +48,7 @@ function App() {
uiConsole("web3auth not initialized yet");
return;
}
const web3authProvider = await web3auth.connectTo<AuthLoginParams>(WALLET_ADAPTERS.AUTH, { loginProvider: "google" });
const web3authProvider = await web3auth.connectTo<AuthLoginParams>(WALLET_CONNECTORS.AUTH, { loginProvider: "google" });
setProvider(web3authProvider);
};

@@ -94,25 +89,6 @@ function App() {
uiConsole(chainId);
};

const addChain = async () => {
if (!provider) {
uiConsole("provider not initialized yet");
return;
}
const newChain = {
chainId: "0x5",
displayName: "Goerli",
chainNamespace: CHAIN_NAMESPACES.EIP155,
tickerName: "Goerli",
ticker: "ETH",
decimals: 18,
rpcTarget: "https://rpc.ankr.com/eth_goerli",
blockExplorer: "https://goerli.etherscan.io",
};
await web3auth?.addChain(newChain);
uiConsole("New Chain Added");
};

const switchChain = async () => {
if (!provider) {
uiConsole("provider not initialized yet");
@@ -197,11 +173,6 @@ function App() {
Get Chain ID
</button>
</div>
<div>
<button onClick={addChain} className="card">
Add Chain
</button>
</div>
<div>
<button onClick={switchChain} className="card">
Switch Chain
8 changes: 2 additions & 6 deletions demo/vite-react-app/src/components/Main.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { WALLET_ADAPTERS } from "@web3auth/modal";
import { WALLET_CONNECTORS } from "@web3auth/modal";
import { useWeb3Auth } from "../services/web3auth";
import styles from "../styles/Home.module.css";

@@ -14,7 +14,6 @@ const Main = () => {
signTransaction,
web3Auth,
showWalletUi,
addChain,
switchChain,
showWalletConnectScanner,
enableMFA,
@@ -35,9 +34,6 @@ const Main = () => {
<button onClick={signMessage} className={styles.card}>
Sign Message
</button>
<button onClick={addChain} className={styles.card}>
Add Chain
</button>
<button onClick={switchChain} className={styles.card}>
Switch Chain
</button>
@@ -47,7 +43,7 @@ const Main = () => {
<button onClick={manageMFA} className={styles.card}>
Manage MFA
</button>
{web3Auth?.connectedAdapterName === WALLET_ADAPTERS.AUTH && (
{web3Auth?.connectedConnectorName === WALLET_CONNECTORS.AUTH && (
<button onClick={signTransaction} className={styles.card}>
Sign Transaction
</button>
10 changes: 5 additions & 5 deletions demo/vite-react-app/src/services/walletServiceHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { log, WalletServicesPlugin } from "@web3auth/modal";
import { log, type WalletServicesPluginType } from "@web3auth/modal";
import { verifyMessage as eipVerifyMessage } from "@web3auth/sign-in-with-ethereum";
import { BrowserProvider, parseEther } from "ethers";

import { getV4TypedData } from "../config/config";

export const walletSignPersonalMessage = async (provider: WalletServicesPlugin["provider"], uiConsole: any) => {
export const walletSignPersonalMessage = async (provider: WalletServicesPluginType["provider"], uiConsole: any) => {
try {
const ethProvider = new BrowserProvider(provider);
const signer = await ethProvider.getSigner();
@@ -31,7 +31,7 @@ export const walletSignPersonalMessage = async (provider: WalletServicesPlugin["
}
};

export const walletSignTypedMessage = async (provider: WalletServicesPlugin["provider"], uiConsole: any) => {
export const walletSignTypedMessage = async (provider: WalletServicesPluginType["provider"], uiConsole: any) => {
try {
const ethProvider = new BrowserProvider(provider);
const signer = await ethProvider.getSigner();
@@ -55,7 +55,7 @@ export const walletSignTypedMessage = async (provider: WalletServicesPlugin["pro
}
};

export const walletSendEth = async (provider: WalletServicesPlugin["provider"], uiConsole: any) => {
export const walletSendEth = async (provider: WalletServicesPluginType["provider"], uiConsole: any) => {
try {
const ethProvider = new BrowserProvider(provider);
const signer = await ethProvider.getSigner();
@@ -73,7 +73,7 @@ export const walletSendEth = async (provider: WalletServicesPlugin["provider"],
}
};

export const walletSignTransaction = async (provider: WalletServicesPlugin["provider"], uiConsole: any) => {
export const walletSignTransaction = async (provider: WalletServicesPluginType["provider"], uiConsole: any) => {
try {
const ethProvider = new BrowserProvider(provider);
const accounts = await provider.request({ method: "eth_accounts" });
95 changes: 30 additions & 65 deletions demo/vite-react-app/src/services/web3auth.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { ADAPTER_EVENTS, CHAIN_NAMESPACES, CustomChainConfig, EthereumPrivateKeyProvider, IProvider, WalletServicesPlugin, WEB3AUTH_NETWORK_TYPE, Web3Auth, AccountAbstractionProvider, SafeSmartAccount, PLUGIN_EVENTS } from "@web3auth/modal";
import { createContext, FunctionComponent, ReactNode, useCallback, useContext, useEffect, useState } from "react";
import { CONNECTOR_EVENTS, IProvider, PLUGIN_EVENTS, WalletServicesPluginType, Web3Auth, WEB3AUTH_NETWORK_TYPE, SMART_ACCOUNT, walletServicesPlugin, EVM_PLUGINS } from "@web3auth/modal";
import { createContext, FunctionComponent, ReactNode, useContext, useEffect, useState } from "react";
import { CHAIN_CONFIG, CHAIN_CONFIG_TYPE } from "../config/chainConfig";
import * as ethHandler from "./ethHandler";
import * as walletServiceHandler from "./walletServiceHandlers";

export interface IWeb3AuthContext {
web3Auth: Web3Auth | null;
@@ -17,7 +16,6 @@ export interface IWeb3AuthContext {
getAccounts: () => Promise<any>;
getBalance: () => Promise<any>;
signTransaction: () => Promise<void>;
addChain: () => Promise<void>;
switchChain: () => Promise<void>;
showWalletConnectScanner: () => Promise<void>;
showWalletUi: () => Promise<void>;
@@ -38,7 +36,6 @@ export const Web3AuthContext = createContext<IWeb3AuthContext>({
getAccounts: async () => {},
getBalance: async () => {},
signTransaction: async () => {},
addChain: async () => {},
switchChain: async () => {},
showWalletConnectScanner: async () => {},
showWalletUi: async () => {},
@@ -66,34 +63,34 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
const [web3Auth, setWeb3Auth] = useState<Web3Auth | null>(null);
const [provider, setProvider] = useState<IProvider | null>(null);
const [waasProvider, setWaasProvider] = useState<IProvider | null>(null);
const [walletServicesPlugin, setWalletServicesPlugin] = useState<WalletServicesPlugin | null>(null);
const [wsPlugin, setWsPlugin] = useState<WalletServicesPluginType | null>(null);
const [user, setUser] = useState<unknown | null>(null);
const [isLoading, setIsLoading] = useState(false);

useEffect(() => {
const subscribeAuthEvents = (web3auth: Web3Auth) => {
// Can subscribe to all ADAPTER_EVENTS and LOGIN_MODAL_EVENTS
web3auth.on(ADAPTER_EVENTS.CONNECTED, (data: unknown) => {
// Can subscribe to all CONNECTOR_EVENTS and LOGIN_MODAL_EVENTS
web3auth.on(CONNECTOR_EVENTS.CONNECTED, (data: unknown) => {
console.log("Yeah!, you are successfully logged in", data);
setUser(data);
setProvider(web3auth.provider);
});

web3auth.on(ADAPTER_EVENTS.CONNECTING, () => {
web3auth.on(CONNECTOR_EVENTS.CONNECTING, () => {
console.log("connecting");
});

web3auth.on(ADAPTER_EVENTS.DISCONNECTED, () => {
web3auth.on(CONNECTOR_EVENTS.DISCONNECTED, () => {
console.log("disconnected");
setUser(null);
});

web3auth.on(ADAPTER_EVENTS.ERRORED, (error) => {
web3auth.on(CONNECTOR_EVENTS.ERRORED, (error) => {
console.error("some error or user has cancelled login request", error);
});
};

const subscribePluginEvents = (plugin: WalletServicesPlugin) => {
const subscribePluginEvents = (plugin: WalletServicesPluginType) => {
// Can subscribe to all PLUGIN_EVENTS and LOGIN_MODAL_EVENTS
plugin.on(PLUGIN_EVENTS.CONNECTED, (data: unknown) => {
console.log("Yeah!, you are successfully logged in to plugin");
@@ -116,29 +113,23 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
async function init() {
try {
const currentChainConfig = CHAIN_CONFIG[chain];
const privateKeyProvider = new EthereumPrivateKeyProvider({ config: { chainConfig: currentChainConfig } });
const accountAbstractionProvider = new AccountAbstractionProvider({
config: {
chainConfig: currentChainConfig,
bundlerConfig: {
url: `https://api.pimlico.io/v2/11155111/rpc?apikey=${pimlicoAPIKey}`,
},
smartAccountInit: new SafeSmartAccount(),
paymasterConfig: {
url: `https://api.pimlico.io/v2/11155111/rpc?apikey=${pimlicoAPIKey}`,
},
},
});
setIsLoading(true);
const clientId = "BPi5PB_UiIZ-cPz1GtV5i1I2iOSOHuimiXBI0e-Oe_u6X3oVAbCiAZOTEBtTXw4tsluTITPqA8zMsfxIKMjiqNQ";

const web3AuthInstance = new Web3Auth({
// get your client id from https://dashboard.web3auth.io
clientId,
web3AuthNetwork,
privateKeyProvider,
accountAbstractionProvider,
chainConfig: currentChainConfig,
accountAbstractionConfig: {
smartAccountType: SMART_ACCOUNT.SAFE,
bundlerConfig: {
url: `https://api.pimlico.io/v2/11155111/rpc?apikey=${pimlicoAPIKey}`,
},
paymasterConfig: {
url: `https://api.pimlico.io/v2/11155111/rpc?apikey=${pimlicoAPIKey}`,
},
},
chains: [currentChainConfig],
uiConfig: {
uxMode: "redirect",
appName: "W3A Heroes",
@@ -156,25 +147,18 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
primaryButton: "socialLogin",
},
enableLogging: true,
plugins: [walletServicesPlugin()],
});

// Wallet Services Plugin

const walletServicesPlugin = new WalletServicesPlugin({
wsEmbedOpts: {},
walletInitOptions: {
whiteLabel: { showWidgetButton: true },
confirmationStrategy: "modal",
},
});

subscribePluginEvents(walletServicesPlugin);
setWalletServicesPlugin(walletServicesPlugin);
web3AuthInstance.addPlugin(walletServicesPlugin);
setWsPlugin(wsPlugin);

subscribeAuthEvents(web3AuthInstance);
setWeb3Auth(web3AuthInstance);
await web3AuthInstance.initModal();
await web3AuthInstance.init();

const plugin = web3AuthInstance.getPlugin(EVM_PLUGINS.WALLET_SERVICES) as WalletServicesPluginType;
setWsPlugin(plugin);
subscribePluginEvents(plugin);
} catch (error) {
console.error(error);
} finally {
@@ -232,24 +216,6 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
await web3Auth.manageMFA();
};

const addChain = async () => {
if (!provider) {
uiConsole("provider not initialized yet");
return;
}
const newChain: CustomChainConfig = {
rpcTarget: "https://rpc.ankr.com/polygon",
blockExplorerUrl: "https://polygonscan.com/",
chainId: "0x89",
displayName: "Polygon Mainnet",
ticker: "POL",
tickerName: "Polygon Ecosystem Token",
logo: "https://images.toruswallet.io/matic.svg",
chainNamespace: CHAIN_NAMESPACES.EIP155,
};
await web3Auth?.addChain(newChain);
uiConsole("New Chain Added");
};
const switchChain = async () => {
const chainId = "0x89";
if (!provider) {
@@ -298,7 +264,7 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
};

const showWalletConnectScanner = async () => {
if (!walletServicesPlugin) {
if (!wsPlugin) {
console.log("walletServicesPlugin not initialized yet");
uiConsole("walletServicesPlugin not initialized yet");
return;
@@ -308,11 +274,11 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
uiConsole("web3Auth not initialized yet");
return;
}
await walletServicesPlugin.showWalletConnectScanner();
await wsPlugin.showWalletConnectScanner();
};

const showWalletUi = async () => {
if (!walletServicesPlugin) {
if (!wsPlugin) {
console.log("walletServicesPlugin not initialized yet");
uiConsole("walletServicesPlugin not initialized yet");
return;
@@ -322,7 +288,7 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
uiConsole("web3Auth not initialized yet");
return;
}
await walletServicesPlugin.showWalletUi();
await wsPlugin.showWalletUi();
};

const uiConsole = (...args: unknown[]): void => {
@@ -345,7 +311,6 @@ export const Web3AuthProvider: FunctionComponent<IWeb3AuthState> = ({ children,
getBalance,
signMessage,
signTransaction,
addChain,
switchChain,
showWalletConnectScanner,
enableMFA,
Loading