diff --git a/src/screens/AddNetwork.tsx b/src/screens/AddNetwork.tsx index 806ed15..46fcf7e 100644 --- a/src/screens/AddNetwork.tsx +++ b/src/screens/AddNetwork.tsx @@ -135,6 +135,7 @@ const AddNetwork = () => { ); }, CHAINID_DEBOUNCE_DELAY); + // TODO: Handle replicating existing accounts after adding new network const submit = useCallback( async (data: z.infer) => { const newNetworkData = { diff --git a/src/utils/accounts.ts b/src/utils/accounts.ts index 3b010d5..b384071 100644 --- a/src/utils/accounts.ts +++ b/src/utils/accounts.ts @@ -87,15 +87,26 @@ const createWalletFromMnemonic = async ( }; const addAccount = async ( - networkData: NetworksDataState, + selectedNetwork: NetworksDataState, ): Promise => { try { - const namespaceChainId = `${networkData.namespace}:${networkData.chainId}`; - const id = await getNextAccountId(namespaceChainId); - const hdPath = getHDPath(namespaceChainId, `0'/0/${id}`); - const accounts = await addAccountFromHDPath(hdPath, networkData); - await updateAccountCounter(namespaceChainId, id); - return accounts; + let selectedNetworkAccount + const networksData = await retrieveNetworksData(); + + // Add account to all networks and return account for selected network + for (const network of networksData) { + const namespaceChainId = `${network.namespace}:${network.chainId}`; + const id = await getNextAccountId(namespaceChainId); + const hdPath = getHDPath(namespaceChainId, `0'/0/${id}`); + const account = await addAccountFromHDPath(hdPath, network); + await updateAccountCounter(namespaceChainId, id); + + if (network.networkId === selectedNetwork.networkId) { + selectedNetworkAccount = account; + } + } + + return selectedNetworkAccount; } catch (error) { console.error('Error creating account:', error); }