Compare commits
2 Commits
afd/wallet
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 986c9a431f | |||
| 2bf84b2920 |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "web-wallet",
|
||||
"version": "0.1.7-zenith-0.2.3",
|
||||
"version": "0.1.7-zenith-0.2.5",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@laconic-network/cosmjs-util": "^0.1.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { useEffect, useCallback } from "react";
|
||||
|
||||
import { addNewNetwork, createWallet, checkNetworkForChainID, isWalletCreated } from "../utils/accounts";
|
||||
import { addNewNetwork, createWallet, checkNetworkForChainID, isWalletCreated, updateNetworkRpcUrl } from "../utils/accounts";
|
||||
import { useNetworks } from "../context/NetworksContext";
|
||||
import { NETWORK_ADDED_RESPONSE, NETWORK_ADD_FAILED_RESPONSE, NETWORK_ALREADY_EXISTS_RESPONSE, REQUEST_ADD_NETWORK } from "../utils/constants";
|
||||
import { NetworksFormData } from "../types";
|
||||
@ -52,6 +52,11 @@ const useCreateNetwork = () => {
|
||||
chainId
|
||||
}, sourceOrigin);
|
||||
} else {
|
||||
console.log("Network already exists. Updating RPC URL");
|
||||
|
||||
const retrievedNetworksData = await updateNetworkRpcUrl(chainId, networkData.rpcUrl);
|
||||
setNetworksData(retrievedNetworksData);
|
||||
|
||||
sendMessage(window.parent, NETWORK_ALREADY_EXISTS_RESPONSE, {
|
||||
type: NETWORK_ALREADY_EXISTS_RESPONSE,
|
||||
chainId
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { useAccounts } from '../context/AccountsContext';
|
||||
import { retrieveNetworksData, retrieveAccounts } from '../utils/accounts';
|
||||
import { getPathKey, sendMessage } from '../utils/misc';
|
||||
import { ACCOUNT_PK_RESPONSE, REQUEST_ACCOUNT_PK } from '../utils/constants';
|
||||
|
||||
const useExportPKEmbed = () => {
|
||||
const { accounts } = useAccounts();
|
||||
|
||||
useEffect(() => {
|
||||
const handleMessage = async (event: MessageEvent) => {
|
||||
const { type, chainId, address } = event.data;
|
||||
@ -14,9 +12,23 @@ const useExportPKEmbed = () => {
|
||||
if (type !== REQUEST_ACCOUNT_PK) return;
|
||||
|
||||
try {
|
||||
const selectedAccount = accounts.find(account => account.address === address);
|
||||
// Look up the network and accounts directly from storage
|
||||
// rather than relying on the accounts context, which can be
|
||||
// overwritten by HomeScreen's fetchAccounts for a different network.
|
||||
const networksData = await retrieveNetworksData();
|
||||
const targetNetwork = networksData.find(
|
||||
net => `${net.namespace}:${net.chainId}` === chainId,
|
||||
);
|
||||
|
||||
if (!targetNetwork) {
|
||||
throw new Error("Network not found");
|
||||
}
|
||||
|
||||
const networkAccounts = await retrieveAccounts(targetNetwork);
|
||||
const selectedAccount = networkAccounts?.find(account => account.address === address);
|
||||
|
||||
if (!selectedAccount) {
|
||||
throw new Error("Account not found")
|
||||
throw new Error("Account not found");
|
||||
}
|
||||
|
||||
const pathKey = await getPathKey(chainId, selectedAccount.index);
|
||||
@ -37,7 +49,7 @@ const useExportPKEmbed = () => {
|
||||
return () => {
|
||||
window.removeEventListener('message', handleMessage);
|
||||
};
|
||||
}, [accounts]);
|
||||
}, []);
|
||||
};
|
||||
|
||||
export default useExportPKEmbed;
|
||||
|
||||
@ -459,6 +459,35 @@ const checkNetworkForChainID = async (
|
||||
return networksData.some((network) => network.chainId === chainId);
|
||||
}
|
||||
|
||||
const updateNetworkRpcUrl = async (
|
||||
chainId: string,
|
||||
rpcUrl: string,
|
||||
): Promise<NetworksDataState[]> => {
|
||||
const networks = await getInternetCredentials('networks');
|
||||
|
||||
if (!networks) {
|
||||
throw new Error('Networks not found');
|
||||
}
|
||||
|
||||
const networksData: NetworksDataState[] = JSON.parse(networks);
|
||||
|
||||
const networkIndex = networksData.findIndex((network) => network.chainId === chainId);
|
||||
|
||||
if (networkIndex === -1) {
|
||||
throw new Error('Network not found');
|
||||
}
|
||||
|
||||
networksData[networkIndex].rpcUrl = rpcUrl;
|
||||
|
||||
await setInternetCredentials(
|
||||
'networks',
|
||||
'_',
|
||||
JSON.stringify(networksData),
|
||||
);
|
||||
|
||||
return networksData;
|
||||
}
|
||||
|
||||
const isWalletCreated = async (
|
||||
): Promise<boolean> => {
|
||||
const mnemonicServer = await getInternetCredentials("mnemonicServer");
|
||||
@ -483,5 +512,6 @@ export {
|
||||
getCosmosAccountByHDPath,
|
||||
addNewNetwork,
|
||||
checkNetworkForChainID,
|
||||
isWalletCreated
|
||||
isWalletCreated,
|
||||
updateNetworkRpcUrl
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user