import React, { Component } from 'react' import PropTypes from 'prop-types' import CanvasNetworkGraph from 'components/Network/CanvasNetworkGraph' import PeersList from 'components/Network/PeersList' import ChannelsList from 'components/Network/ChannelsList' import TransactionForm from 'components/Network/TransactionForm' import styles from './Network.scss' class Network extends Component { componentWillMount() { const { fetchDescribeNetwork, fetchPeers, fetchChannels } = this.props fetchPeers() fetchChannels() fetchDescribeNetwork() } componentDidUpdate(prevProps) { const { payReqIsLn, network: { pay_req }, fetchInvoiceAndQueryRoutes, clearQueryRoutes } = this.props // If LN go retrieve invoice details if ((prevProps.network.pay_req !== pay_req) && payReqIsLn) { fetchInvoiceAndQueryRoutes(pay_req) } if (prevProps.payReqIsLn && !payReqIsLn) { clearQueryRoutes() } } componentWillUnmount() { const { clearQueryRoutes, resetPayReq, clearSelectedChannels, clearSelectedPeers } = this.props clearQueryRoutes() resetPayReq() clearSelectedChannels() clearSelectedPeers() } render() { const { setCurrentTab, updateSelectedPeers, setCurrentRoute, network, selectedPeerPubkeys, currentRouteChanIds, peers: { peers }, activeChannels, selectedChannelIds, updateSelectedChannels, updatePayReq, identity_pubkey } = this.props const renderContent = () => { switch (network.currentTab) { case 1: return case 2: return case 3: return ( ) default: return } } return (
  • setCurrentTab(1)} > Peers
  • setCurrentTab(2)} > Channels
  • setCurrentTab(3)} > Transactions
{renderContent()}
) } } Network.propTypes = { fetchDescribeNetwork: PropTypes.func.isRequired, fetchPeers: PropTypes.func.isRequired, setCurrentTab: PropTypes.func.isRequired, fetchChannels: PropTypes.func.isRequired, fetchInvoiceAndQueryRoutes: PropTypes.func.isRequired, clearQueryRoutes: PropTypes.func.isRequired, resetPayReq: PropTypes.func.isRequired, clearSelectedChannels: PropTypes.func.isRequired, clearSelectedPeers: PropTypes.func.isRequired, updateSelectedPeers: PropTypes.func.isRequired, setCurrentRoute: PropTypes.func.isRequired, updateSelectedChannels: PropTypes.func.isRequired, updatePayReq: PropTypes.func.isRequired, network: PropTypes.object.isRequired, peers: PropTypes.object.isRequired, selectedPeerPubkeys: PropTypes.array.isRequired, currentRouteChanIds: PropTypes.array.isRequired, activeChannels: PropTypes.array.isRequired, selectedChannelIds: PropTypes.array.isRequired, identity_pubkey: PropTypes.string.isRequired, payReqIsLn: PropTypes.bool.isRequired } export default Network