import React, { Component } from 'react' import PropTypes from 'prop-types' import find from 'lodash/find' import Isvg from 'react-inlinesvg' import { FaAngleDown, FaCircle, FaRepeat } from 'react-icons/lib/fa' import { btc } from 'utils' import plus from 'icons/plus.svg' import search from 'icons/search.svg' import styles from './Network.scss' class Network extends Component { constructor(props) { super(props) this.state = { refreshing: false } } render() { const { channels: { searchQuery, filterPulldown, filter, loadingChannelPubkeys, closingChannelIds }, currentChannels, balance, currentTicker, nodes, fetchChannels, openContactsForm, nonActiveFilters, toggleFilterPulldown, changeFilter, updateChannelSearchQuery } = this.props const refreshClicked = () => { // turn the spinner on this.setState({ refreshing: true }) // store event in icon so we dont get an error when react clears it const icon = this.repeat.childNodes // fetch channels fetchChannels() // wait for the svg to appear as child const svgTimeout = setTimeout(() => { if (icon[0].tagName === 'svg') { // spin icon for 1 sec icon[0].style.animation = 'spin 1000ms linear 1' clearTimeout(svgTimeout) } }, 1) // clear animation after the second so we can reuse it const refreshTimeout = setTimeout(() => { icon[0].style.animation = '' this.setState({ refreshing: false }) clearTimeout(refreshTimeout) }, 1000) } const displayNodeName = (channel) => { const node = find(nodes, node => channel.remote_pubkey === node.pub_key) if (node && node.alias.length) { return node.alias } return channel.remote_pubkey ? channel.remote_pubkey.substring(0, 10) : channel.remote_node_pub.substring(0, 10) } const channelStatus = (channel) => { if (Object.prototype.hasOwnProperty.call(channel, 'confirmation_height')) { return 'pending' } if (Object.prototype.hasOwnProperty.call(channel, 'closing_txid')) { return 'closing' } if (!channel.active) { return 'offline' } return 'online' } return (

My Network

{btc.satoshisToBtc(balance.channelBalance)}BTC ≈ ${btc.satoshisToUsd(balance.channelBalance, currentTicker.price_usd).toLocaleString()}

{filter.name}

    { nonActiveFilters.map(f => (
  • changeFilter(f)}> {f.name}
  • )) }
{ this.repeat = ref }}> { this.state.refreshing ? : 'Refresh' }
) } } Network.propTypes = {} export default Network