import React from 'react' import PropTypes from 'prop-types' import ReactModal from 'react-modal' import { MdClose } from 'react-icons/lib/md' import { FaCircle, FaQuestionCircle } from 'react-icons/lib/fa' import styles from './ContactsForm.scss' class ContactsForm extends React.Component { constructor(props) { super(props) this.state = { editing: false } } render() { const { contactsform, contactsform: { showErrors }, closeContactsForm, updateContactFormSearchQuery, updateManualFormSearchQuery, updateContactCapacity, openChannel, updateManualFormErrors, activeChannelPubkeys, nonActiveChannelPubkeys, pendingOpenChannelPubkeys, filteredNetworkNodes, loadingChannelPubkeys, showManualForm, manualFormIsValid } = this.props const { editing } = this.state const renderRightSide = (node) => { if (loadingChannelPubkeys.includes(node.pub_key)) { return (
) } if (activeChannelPubkeys.includes(node.pub_key)) { return ( Online ) } if (nonActiveChannelPubkeys.includes(node.pub_key)) { return ( Offline ) } if (pendingOpenChannelPubkeys.includes(node.pub_key)) { return ( Pending ) } if (!node.addresses.length) { return ( Private ) } return ( openChannel({ pubkey: node.pub_key, host: node.addresses[0].addr, local_amt: contactsform.contactCapacity })} > Connect ) } const inputClicked = () => { if (editing) { return } this.setState({ editing: true }) } const manualFormSubmit = () => { if (!manualFormIsValid.isValid) { updateManualFormErrors(manualFormIsValid.errors) updateManualFormSearchQuery('') return } // clear any existing errors updateManualFormErrors({ manualInput: null }) const [pubkey, host] = contactsform.manualSearchQuery && contactsform.manualSearchQuery.split('@') openChannel({ pubkey, host, local_amt: contactsform.contactCapacity }) updateManualFormSearchQuery('') } const searchUpdated = (search) => { updateContactFormSearchQuery(search) if (search.includes('@') && search.split('@')[0].length === 66) { updateManualFormSearchQuery(search) } } return (
closeContactsForm} parentSelector={() => document.body} className={styles.modal} >

Add Contact

searchUpdated(event.target.value)} />
    { filteredNetworkNodes.map(node => (
  • { node.alias.length > 0 ?

    {node.alias.trim()} ({node.pub_key.substr(0, 10)}...{node.pub_key.substr(node.pub_key.length - 10)})

    :

    {node.pub_key}

    }
    {renderRightSide(node)}
  • )) }
{ showManualForm &&

Hm, looks like we can’t see that contact from here. Want to try and manually connect?

updateManualFormSearchQuery(event.target.value)} />
Submit
{ loadingChannelPubkeys.length > 0 &&
}
{showErrors.manualInput && {manualFormIsValid && manualFormIsValid.errors.manualInput} }
}
) } } ContactsForm.propTypes = { contactsform: PropTypes.object.isRequired, closeContactsForm: PropTypes.func.isRequired, updateContactFormSearchQuery: PropTypes.func.isRequired, updateManualFormSearchQuery: PropTypes.func.isRequired, manualFormIsValid: PropTypes.shape({ errors: PropTypes.object, isValid: PropTypes.bool }).isRequired, updateContactCapacity: PropTypes.func.isRequired, updateManualFormErrors: PropTypes.func.isRequired, openChannel: PropTypes.func.isRequired, activeChannelPubkeys: PropTypes.array.isRequired, nonActiveChannelPubkeys: PropTypes.array.isRequired, pendingOpenChannelPubkeys: PropTypes.array.isRequired, filteredNetworkNodes: PropTypes.array.isRequired, loadingChannelPubkeys: PropTypes.array.isRequired, showManualForm: PropTypes.bool.isRequired } export default ContactsForm