Refactor method to add accounts for network

This commit is contained in:
IshaVenikar
2025-06-06 09:28:06 +05:30
parent 93e7207f14
commit 54e75e1f3a
4 changed files with 36 additions and 47 deletions
+15 -26
View File
@@ -1,8 +1,8 @@
import { useEffect, useCallback } from "react";
import { addAccountsForNetwork, addNewNetwork, createWallet, getNextAccountId, isChainIdPresent, isWalletCreated } from "../utils/accounts";
import { addNewNetwork, createWallet, checkNetworkForChainID, isWalletCreated } from "../utils/accounts";
import { useNetworks } from "../context/NetworksContext";
import { NETWORK_ADD_FAILED, NETWORK_ADDED_SUCCESSFULLY, NETWORK_ALREADY_EXISTS, REQUEST_ADD_NETWORK } from "../utils/constants";
import { NETWORK_ADDED_RESPONSE, NETWORK_ADD_FAILED_RESPONSE, NETWORK_ALREADY_EXISTS_RESPONSE, REQUEST_ADD_NETWORK } from "../utils/constants";
import { NetworksFormData } from "../types";
import { sendMessage } from "../utils/misc";
@@ -25,14 +25,14 @@ const useCreateNetwork = () => {
await createWallet(networksData);
}
const isNetworkPresent = await isChainIdPresent(chainId);
const isNetworkPresent = await checkNetworkForChainID(chainId);
if (!isNetworkPresent) {
if (chainId !== networkData.chainId) {
console.log("Network data not available.");
if (sourceOrigin) {
sendMessage(window.parent, NETWORK_ADD_FAILED, {
type: NETWORK_ADD_FAILED,
sendMessage(window.parent, NETWORK_ADD_FAILED_RESPONSE, {
type: NETWORK_ADD_FAILED_RESPONSE,
message: "Invalid or missing network data"
}, sourceOrigin);
}
@@ -50,7 +50,7 @@ const useCreateNetwork = () => {
addressPrefix: networkData.addressPrefix || "",
coinType: networkData.coinType || "",
nativeDenom: networkData.nativeDenom || "",
gasPrice: networkData.gasPrice || String(import.meta.env.REACT_APP_DEFAULT_GAS_PRICE || ""),
gasPrice: networkData.gasPrice || String(import.meta.env.REACT_APP_DEFAULT_GAS_PRICE),
currencySymbol: networkData.currencySymbol || "",
isDefault: false,
};
@@ -58,31 +58,20 @@ const useCreateNetwork = () => {
const retrievedNetworksData = await addNewNetwork(resolvedNetworkData);
setNetworksData(retrievedNetworksData);
// Get number of accounts in first network
const nextAccountId = await getNextAccountId(
`${retrievedNetworksData[0].namespace}:${retrievedNetworksData[0].chainId}`,
);
const selectedNetwork = retrievedNetworksData.find(
(network) => network.chainId === chainId,
);
await addAccountsForNetwork(selectedNetwork!, nextAccountId - 1);
sendMessage(window.parent, NETWORK_ADDED_SUCCESSFULLY, {
type: NETWORK_ADDED_SUCCESSFULLY,
sendMessage(window.parent, NETWORK_ADDED_RESPONSE, {
type: NETWORK_ADDED_RESPONSE,
chainId
}, sourceOrigin);
} else {
sendMessage(window.parent, NETWORK_ALREADY_EXISTS, {
type: NETWORK_ALREADY_EXISTS,
sendMessage(window.parent, NETWORK_ALREADY_EXISTS_RESPONSE, {
type: NETWORK_ALREADY_EXISTS_RESPONSE,
chainId
}, sourceOrigin);
}
} catch (error) {
console.error("Error in getOrCreateNetwork:", error);
sendMessage(window.parent, NETWORK_ADD_FAILED, {
type: NETWORK_ADD_FAILED,
sendMessage(window.parent, NETWORK_ADD_FAILED_RESPONSE, {
type: NETWORK_ADD_FAILED_RESPONSE,
message: error instanceof Error ? error.message : "Unknown error"
}, sourceOrigin);
}
@@ -91,7 +80,7 @@ const useCreateNetwork = () => {
);
useEffect(() => {
const handleCreateAccounts = async (event: MessageEvent) => {
const handleCreateNetwork = async (event: MessageEvent) => {
if (event.data.type !== REQUEST_ADD_NETWORK) return;
if (!REACT_APP_ALLOWED_URLS) {
@@ -111,9 +100,9 @@ const useCreateNetwork = () => {
await getOrCreateNetwork(chainId, networkData, event.origin);
};
window.addEventListener("message", handleCreateAccounts);
window.addEventListener("message", handleCreateNetwork);
return () => {
window.removeEventListener("message", handleCreateAccounts);
window.removeEventListener("message", handleCreateNetwork);
};
}, [getOrCreateNetwork]);
};
+1 -12
View File
@@ -13,7 +13,7 @@ import { LoadingButton } from "@mui/lab";
import { StackParamsList } from "../types";
import { SelectNetworkType } from "../components/SelectNetworkType";
import { addAccountsForNetwork, addNewNetwork, getNextAccountId } from "../utils/accounts";
import { addNewNetwork } from "../utils/accounts";
import { useNetworks } from "../context/NetworksContext";
import {
EIP155,
@@ -139,17 +139,6 @@ const AddNetwork = () => {
setNetworksData(retrievedNetworksData);
// Get number of accounts in first network
const nextAccountId = await getNextAccountId(
`${retrievedNetworksData[0].namespace}:${retrievedNetworksData[0].chainId}`,
);
const selectedNetwork = retrievedNetworksData.find(
(network) => network.chainId === newNetworkData.chainId,
);
await addAccountsForNetwork(selectedNetwork!, nextAccountId - 1);
navigation.navigate("Home");
},
[navigation, namespace, setNetworksData],
+17 -6
View File
@@ -196,7 +196,7 @@ const addNewNetwork = async (
}
const accountInfo = `${hdPath},${node.privateKey},${node.publicKey},${address}`;
await Promise.all([
setInternetCredentials(
`accounts/${newNetworkData.namespace}:${newNetworkData.chainId}/0`,
@@ -214,9 +214,20 @@ const addNewNetwork = async (
"0",
),
]);
const retrievedNetworksData = await storeNetworkData(newNetworkData);
// Get number of accounts in first network
const nextAccountId = await getNextAccountId(
`${retrievedNetworksData[0].namespace}:${retrievedNetworksData[0].chainId}`,
);
const selectedNetwork = retrievedNetworksData.find(
(network) => network.chainId === newNetworkData.chainId,
);
await addAccountsForNetwork(selectedNetwork!, nextAccountId - 1);
return retrievedNetworksData;
}
@@ -253,7 +264,7 @@ const storeNetworkData = async (
const retrieveNetworksData = async (): Promise<NetworksDataState[]> => {
const networks = await getInternetCredentials('networks');
if(!networks){
if (!networks) {
return [];
}
@@ -434,12 +445,12 @@ const getCosmosAccountByHDPath = async (
return { cosmosWallet, data };
};
const isChainIdPresent = async (
const checkNetworkForChainID = async (
chainId: string,
): Promise<boolean> => {
const networks = await getInternetCredentials('networks');
if(!networks){
if (!networks) {
return false;
}
@@ -471,6 +482,6 @@ export {
updateAccountCounter,
getCosmosAccountByHDPath,
addNewNetwork,
isChainIdPresent,
checkNetworkForChainID,
isWalletCreated
};
+3 -3
View File
@@ -110,6 +110,6 @@ export const ACCOUNT_PK_RESPONSE = 'ACCOUNT_PK_RESPONSE';
export const ADD_ACCOUNT_RESPONSE = 'ADD_ACCOUNT_RESPONSE';
export const WALLET_ACCOUNTS_DATA = 'WALLET_ACCOUNTS_DATA';
export const IS_SUFFICIENT = 'IS_SUFFICIENT';
export const NETWORK_ADD_FAILED = "NETWORK_ADD_FAILED";
export const NETWORK_ADDED_SUCCESSFULLY = "NETWORK_ADDED_SUCCESSFULLY";
export const NETWORK_ALREADY_EXISTS = "NETWORK_ALREADY_EXISTS";
export const NETWORK_ADDED_RESPONSE = "NETWORK_ADDED_RESPONSE";
export const NETWORK_ALREADY_EXISTS_RESPONSE = "NETWORK_ALREADY_EXISTS_RESPONSE";
export const NETWORK_ADD_FAILED_RESPONSE = "NETWORK_ADD_FAILED_RESPONSE";