mirror of
https://github.com/status-im/MyCrypto.git
synced 2025-02-08 09:13:41 +00:00
* Initial work on refactoring node definitions to reduce number of places theyre defined, amount of copy pasting. * Use makeAutoNodeNAme instead of manually appending _auto * Add getNetVersion to list of unsupported methods * PR feedback * Rework web template node selector to be a network selector. Refactor some types to help with that. Better handle removing custom nodes. * Remove color dropdown. * Fix selecting custom networks. Show notification if change network intent fails. * Use selectors for current node / network instead of intuiting from nodeSelection * Add id key to all networks, simplify add and remove custom node and network functions. * Fix a lot of uses of network.name to use network.id instead. * Dont allow network chainid conflicts * Fix web3 network by chainid * Add testnet badge to network selector * Change nomenclature from change(Node|Network)(Intent)? to change(Node|Network)(Requested|Succeeded) * tscheck * Better code for chainid collision * Remove console logs * Fix tests * Network selector becomes self contained component used both by web header and electron nav. * Dont select node again * Additional title text * tscheck * Custom node behavior in Electron * Close panel too * Convert node label data into selector function * tscheck * Parens & space
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
import classnames from 'classnames';
|
|
import { translateRaw } from 'translations';
|
|
import { TRemoveCustomNode, removeCustomNode } from 'actions/config';
|
|
import { NodeConfig } from 'types/node';
|
|
import './NodeOption.scss';
|
|
|
|
interface OwnProps {
|
|
node: NodeConfig;
|
|
isSelected: boolean;
|
|
isAutoSelected: boolean;
|
|
select(node: NodeConfig): void;
|
|
}
|
|
|
|
interface DispatchProps {
|
|
removeCustomNode: TRemoveCustomNode;
|
|
}
|
|
|
|
type Props = OwnProps & DispatchProps;
|
|
|
|
class NodeOption extends React.PureComponent<Props> {
|
|
public render() {
|
|
const { node, isSelected, isAutoSelected } = this.props;
|
|
return (
|
|
<div className="NodeOption" key={node.service}>
|
|
<div
|
|
className={classnames(
|
|
'NodeOption-name',
|
|
isSelected && 'is-selected',
|
|
isAutoSelected && 'is-auto-selected'
|
|
)}
|
|
title={translateRaw('NETWORKS_SWITCH_NODE', {
|
|
$node: node.isCustom ? node.name : node.service,
|
|
$network: node.network
|
|
})}
|
|
onClick={this.handleSelect}
|
|
>
|
|
{node.isCustom ? node.name : node.service}
|
|
</div>
|
|
{node.isCustom && (
|
|
<button className="NodeOption-remove" onClick={this.handleRemove}>
|
|
<i className="fa fa-times-circle" />
|
|
</button>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
private handleSelect = () => {
|
|
this.props.select(this.props.node);
|
|
};
|
|
|
|
private handleRemove = () => {
|
|
if (this.props.node.isCustom) {
|
|
this.props.removeCustomNode(this.props.node.id);
|
|
}
|
|
};
|
|
}
|
|
|
|
export default connect(undefined, { removeCustomNode })(NodeOption);
|