* Store new network data * Store default networks in keystore (#86) * Add default nws in keystore * Fix duplicate networks * Display correct currency symbols for eth and cosmos tx * Fix currency display * Use wei for eth
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
|
|
import { NetworksDataState } from '../types';
|
|
import { retrieveNetworksData, storeNetworkData } from '../utils/accounts';
|
|
import { DEFAULTNETWORKS } from '../utils/constants';
|
|
|
|
const NetworksContext = createContext<{
|
|
currentIndex: number;
|
|
setCurrentIndex: (index: number) => void;
|
|
networksData: NetworksDataState[];
|
|
setNetworksData: React.Dispatch<React.SetStateAction<NetworksDataState[]>>;
|
|
networkType: string;
|
|
setNetworkType: (networkType: string) => void;
|
|
currentChainId?: string;
|
|
setCurrentChainId: (currentChainId: string) => void;
|
|
}>({
|
|
currentIndex: 0,
|
|
setCurrentIndex: () => {},
|
|
networksData: [],
|
|
setNetworksData: () => {},
|
|
networkType: '',
|
|
setNetworkType: () => {},
|
|
currentChainId: undefined,
|
|
setCurrentChainId: () => {},
|
|
});
|
|
|
|
const useNetworks = () => {
|
|
const networksContext = useContext(NetworksContext);
|
|
return networksContext;
|
|
};
|
|
|
|
const NetworksProvider = ({ children }: { children: any }) => {
|
|
const [networksData, setNetworksData] = useState<NetworksDataState[]>([]);
|
|
const [currentIndex, setCurrentIndex] = useState<number>(0);
|
|
const [networkType, setNetworkType] = useState<string>('eth');
|
|
const [currentChainId, setCurrentChainId] = useState<string>();
|
|
|
|
useEffect(() => {
|
|
const fetchData = async () => {
|
|
const retrievedNetworks = await retrieveNetworksData();
|
|
if (retrievedNetworks.length === 0) {
|
|
for (const defaultNetwork of DEFAULTNETWORKS) {
|
|
await storeNetworkData(defaultNetwork);
|
|
}
|
|
}
|
|
const retrievedNewNetworks = await retrieveNetworksData();
|
|
setNetworksData(retrievedNewNetworks);
|
|
setCurrentChainId(retrievedNewNetworks[0].chainId);
|
|
};
|
|
|
|
fetchData();
|
|
}, []);
|
|
|
|
return (
|
|
<NetworksContext.Provider
|
|
value={{
|
|
currentIndex,
|
|
setCurrentIndex,
|
|
networksData,
|
|
setNetworksData,
|
|
networkType,
|
|
setNetworkType,
|
|
currentChainId,
|
|
setCurrentChainId,
|
|
}}>
|
|
{children}
|
|
</NetworksContext.Provider>
|
|
);
|
|
};
|
|
|
|
export { useNetworks, NetworksProvider };
|