laconic-wallet/src/components/NetworkDropdown.tsx
shreerang6921 703ea72c1f Add functionality to configure EVM networks (#74)
* Configure EVM networks

* Display added EVM networks in network drop down

* Add network for configured networks
2024-04-25 17:08:27 +05:30

59 lines
1.7 KiB
TypeScript

import React, { useMemo, useState } from 'react';
import { View } from 'react-native';
import { List } from 'react-native-paper';
import { NetworkDropdownProps } from '../types';
import styles from '../styles/stylesheet';
import { useAccounts } from '../context/AccountsContext';
const NetworkDropdown = ({ updateNetwork }: NetworkDropdownProps) => {
const [expanded, setExpanded] = useState<boolean>(false);
const [selectedNetwork, setSelectedNetwork] = useState<string>('Ethereum');
const { networksData } = useAccounts();
const networks = useMemo(() => {
const defaultNetworks = [
{ value: 'eth', chainId: 'eip155:1', displayName: 'Ethereum' },
{ value: 'cosmos', chainId: 'cosmos:cosmoshub-4', displayName: 'Cosmos' },
];
networksData.forEach(network => {
defaultNetworks.push({
value: network.networkType,
chainId: network.chainId,
displayName: network.networkName,
});
});
return defaultNetworks;
}, [networksData]);
const handleNetworkPress = (network: string, displayName: string) => {
updateNetwork(network);
setSelectedNetwork(displayName);
setExpanded(false);
};
return (
<View style={styles.networkDropdown}>
<List.Accordion
title={selectedNetwork}
expanded={expanded}
onPress={() => setExpanded(!expanded)}>
{networks.map(network => (
<List.Item
key={network.chainId}
title={network.displayName}
onPress={() =>
handleNetworkPress(network.value, network.displayName)
}
/>
))}
</List.Accordion>
</View>
);
};
export { NetworkDropdown };