|
@ -1,6 +1,9 @@ |
|
|
import React, { Component } from 'react' |
|
|
import React, { Component } from 'react' |
|
|
import PropTypes from 'prop-types' |
|
|
import PropTypes from 'prop-types' |
|
|
|
|
|
import Isvg from 'react-inlinesvg' |
|
|
|
|
|
|
|
|
|
|
|
import userIcon from 'icons/user.svg' |
|
|
|
|
|
import { FaUser, FaRepeat } from 'react-icons/lib/fa' |
|
|
import { MdSearch } from 'react-icons/lib/md' |
|
|
import { MdSearch } from 'react-icons/lib/md' |
|
|
|
|
|
|
|
|
import PeerForm from 'components/Peers/PeerForm' |
|
|
import PeerForm from 'components/Peers/PeerForm' |
|
@ -16,6 +19,7 @@ class Peers extends Component { |
|
|
|
|
|
|
|
|
render() { |
|
|
render() { |
|
|
const { |
|
|
const { |
|
|
|
|
|
fetchPeers, |
|
|
peerFormProps, |
|
|
peerFormProps, |
|
|
setPeerForm, |
|
|
setPeerForm, |
|
|
setPeer, |
|
|
setPeer, |
|
@ -24,9 +28,24 @@ class Peers extends Component { |
|
|
|
|
|
|
|
|
peerModalOpen, |
|
|
peerModalOpen, |
|
|
filteredPeers, |
|
|
filteredPeers, |
|
|
peers: { peer, searchQuery } |
|
|
peers: { peer, searchQuery }, |
|
|
|
|
|
info: { data: { identity_pubkey } } |
|
|
} = this.props |
|
|
} = this.props |
|
|
|
|
|
|
|
|
|
|
|
const refreshClicked = event => { |
|
|
|
|
|
// store event in icon so we dont get an error when react clears it
|
|
|
|
|
|
const icon = event.currentTarget |
|
|
|
|
|
|
|
|
|
|
|
// fetch peers
|
|
|
|
|
|
fetchPeers() |
|
|
|
|
|
|
|
|
|
|
|
// clear animation after the second so we can reuse it
|
|
|
|
|
|
setTimeout(() => { icon.style.animation = '' }, 1000) |
|
|
|
|
|
|
|
|
|
|
|
// spin icon for 1 sec
|
|
|
|
|
|
icon.style.animation = 'spin 1000ms linear 1' |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return ( |
|
|
return ( |
|
|
<div> |
|
|
<div> |
|
|
<div className={styles.search}> |
|
|
<div className={styles.search}> |
|
@ -48,6 +67,19 @@ class Peers extends Component { |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<header className={styles.header}> |
|
|
<header className={styles.header}> |
|
|
|
|
|
<div className={styles.titleContainer}> |
|
|
|
|
|
<div className={styles.left}> |
|
|
|
|
|
<div className={styles.identityPubkey}> |
|
|
|
|
|
<section className={styles.userIcon}> |
|
|
|
|
|
<Isvg src={userIcon} /> |
|
|
|
|
|
</section> |
|
|
|
|
|
<section> |
|
|
|
|
|
<h4>Your node public key</h4> |
|
|
|
|
|
<h2>{identity_pubkey}</h2> |
|
|
|
|
|
</section> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
<div className={styles.addPeerContainer}> |
|
|
<div className={styles.addPeerContainer}> |
|
|
<div className={`buttonPrimary ${styles.newPeerButton}`} onClick={() => setPeerForm({ isOpen: true })}> |
|
|
<div className={`buttonPrimary ${styles.newPeerButton}`} onClick={() => setPeerForm({ isOpen: true })}> |
|
|
Add new peer |
|
|
Add new peer |
|
@ -55,6 +87,14 @@ class Peers extends Component { |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
</header> |
|
|
|
|
|
|
|
|
|
|
|
<div className={styles.refreshContainer}> |
|
|
|
|
|
<span className={`${styles.refresh} hint--left`} data-hint='Refresh your peers list'> |
|
|
|
|
|
<FaRepeat |
|
|
|
|
|
onClick={refreshClicked} |
|
|
|
|
|
/> |
|
|
|
|
|
</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div className={styles.peers}> |
|
|
<div className={styles.peers}> |
|
|
{ |
|
|
{ |
|
|
filteredPeers.map(filteredPeer => <Peer key={filteredPeer.peer_id} peer={filteredPeer} setPeer={setPeer} />) |
|
|
filteredPeers.map(filteredPeer => <Peer key={filteredPeer.peer_id} peer={filteredPeer} setPeer={setPeer} />) |
|
|