@@ -8,26 +8,33 @@ import { computed, onBeforeMount, ref, watch } from "vue";
88import AppDashboard from " ./components/AppDashboard.vue" ;
99import AppHeader from " ./components/AppHeader.vue" ;
1010import AppSettings from " ./components/AppSettings.vue" ;
11- import { chainConfigs , clientIds , getDefaultBundlerUrl , NFT_CHECKOUT_CLIENT_ID } from " ./config" ;
11+ import { allChains , chainConfigs , clientIds , getDefaultBundlerUrl , NFT_CHECKOUT_CLIENT_ID } from " ./config" ;
1212import { formDataStore } from " ./store/form" ;
1313
1414const formData = formDataStore ;
1515
1616const externalConnectors = ref <ConnectorFn []>([]);
1717
18- const chainOptions = computed (() =>
19- chainConfigs [formData .chainNamespace as ChainNamespaceType ].map ((x ) => ({
20- name: ` ${x .chainId } ${x .tickerName } ` ,
21- value: x .chainId ,
22- }))
23- );
18+ const chainOptions = computed (() => {
19+ const allChains: { name: string ; value: string ; }[] = [];
20+ formData .chainNamespaces .forEach ((namespace : ChainNamespaceType ) => {
21+ const chainsForNamespace = chainConfigs [namespace ].map ((x ) => ({
22+ name: ` ${x .chainId } ${x .tickerName } ` ,
23+ value: x .chainId ,
24+ }));
25+ allChains .push (... chainsForNamespace );
26+ });
27+ return allChains ;
28+ });
2429
25- const showAAProviderSettings = computed (() => formData .chainNamespace === CHAIN_NAMESPACES .EIP155 );
30+ const showAAProviderSettings = computed (() => formData .chainNamespaces . includes ( CHAIN_NAMESPACES .EIP155 ) );
2631
2732// Options for reinitializing the web3Auth object
2833const options = computed ((): Web3AuthOptions => {
2934 const { config : whiteLabel, enable : enabledWhiteLabel } = formData .whiteLabel ;
30- const chainConfig = chainConfigs [formData .chainNamespace as ChainNamespaceType ].find ((x ) => x .chainId === formData .chain )! ;
35+ // TODO: AA config need multi chain support
36+ const evmChains = chainConfigs [CHAIN_NAMESPACES .EIP155 ].filter ((x ) => formData .chains .includes (x .chainId ));
37+ const firstEvmChain = evmChains [0 ];
3138
3239 // Account Abstraction
3340 const { useAccountAbstractionProvider } = formData ;
@@ -36,7 +43,7 @@ const options = computed((): Web3AuthOptions => {
3643 accountAbstractionConfig = {
3744 smartAccountType: formData .smartAccountType as string ,
3845 smartAccountConfig: undefined ,
39- bundlerConfig: { url: formData .bundlerUrl ?? getDefaultBundlerUrl (chainConfig .chainId ) },
46+ bundlerConfig: { url: formData .bundlerUrl ?? getDefaultBundlerUrl (firstEvmChain .chainId ) },
4047 paymasterConfig: formData .paymasterUrl ? { url: formData .paymasterUrl } : undefined ,
4148 }
4249 }
@@ -55,7 +62,7 @@ const options = computed((): Web3AuthOptions => {
5562 };
5663 }
5764
58-
65+ const chains = formData . chains . map (( chainId ) => allChains . find (( x ) => x . chainId === chainId ) ! );
5966 return {
6067 clientId: clientIds [formData .network ],
6168 web3AuthNetwork: formData .network ,
@@ -69,7 +76,7 @@ const options = computed((): Web3AuthOptions => {
6976 // sessionTime?: number;
7077 // useCoreKitKey?: boolean;
7178 // chainConfig,
72- chains: [ chainConfig , chainConfigs . eip155 . find (( x ) => x . chainId === " 0xaa36a7 " ) ! ] ,
79+ chains ,
7380 enableLogging: true ,
7481 connectors: externalConnectors .value ,
7582 multiInjectedProviderDiscovery: formData .multiInjectedProviderDiscovery ,
@@ -117,8 +124,8 @@ onBeforeMount(() => {
117124 // console.log("storedValue", storedValue);
118125 const json = JSON .parse (storedValue );
119126 formData .connectors = json .connectors ;
120- formData .chain = json .chain ;
121- formData .chainNamespace = json .chainNamespace ;
127+ formData .chains = json .chains ;
128+ formData .chainNamespaces = json .chainNamespaces ;
122129 formData .loginProviders = json .loginProviders ;
123130 formData .showWalletDiscovery = json .showWalletDiscovery ;
124131 formData .multiInjectedProviderDiscovery = json .multiInjectedProviderDiscovery ;
@@ -133,7 +140,7 @@ onBeforeMount(() => {
133140 }
134141 } catch (error ) { }
135142 }
136- if (! chainOptions .value .find ((option ) => option .value === formData .chain )) formData .chain = chainOptions .value [0 ]?.value ;
143+ if (! chainOptions .value .find ((option ) => option .value === formData .chains [ 0 ] )) formData .chains = [ chainOptions .value [0 ]?.value ] ;
137144});
138145
139146watch (formData , () => {
@@ -154,8 +161,8 @@ watch(
154161
155162const configs = computed <Web3AuthContextConfig >(() => {
156163 const plugins = [];
157- if (formData .chainNamespace === CHAIN_NAMESPACES .EIP155 || formData .chainNamespace === CHAIN_NAMESPACES .SOLANA ) {
158- if (formData .nftCheckoutPlugin .enable && formData .chainNamespace === CHAIN_NAMESPACES .EIP155 ) {
164+ if (formData .chainNamespaces . includes ( CHAIN_NAMESPACES .EIP155 ) || formData .chainNamespaces . includes ( CHAIN_NAMESPACES .SOLANA ) ) {
165+ if (formData .nftCheckoutPlugin .enable && formData .chainNamespaces . includes ( CHAIN_NAMESPACES .EIP155 ) ) {
159166 const nftCheckoutPlugin = new NFTCheckoutPlugin ({
160167 clientId: NFT_CHECKOUT_CLIENT_ID ,
161168 });
0 commit comments