import React from 'react'; import CardAlert from './card-alert'; import Function from './function'; import PropTypes from 'prop-types'; class FunctionForm extends React.Component { constructor(props) { super(props); this.state = { fields: {}, error: false, message: null, receipt: null }; this.child = React.createRef(); this.showResults = this.showResults.bind(this); this.handleCopyClick = this.handleCopyClick.bind(this); } handleCopyClick(e) { this.child.current.copyCommand(e); } _getFunctionParamFields(_elem) { if (this.props.abi.type === 'fallback') return ''; return '(' + this.props.abi.inputs .map((input, i) => ) .join(', ') + ')'; } _getMethodType(_elem) { return (this.props.abi.constant === true || this.props.abi.stateMutability === 'view' || this.props.abi.stateMutability === 'pure') ? 'call' : 'send'; } renderContent(receipt, contract) { if (receipt === null && (this.state.error || this.state.message === null)) { return ''; } let messagesList; if (this.props.abi.outputs.filter(x => x.name !== "").length > 0) { messagesList = Object.keys(this.state.message).map((key, index) => { if (isNaN(key)) { return
  • {key}: {this.state.message[key]}
  • ; } else { return ''; } }); } else { messagesList = Object.keys(this.state.message).map((key, index) => { return
  • {key}: {this.state.message[key]}
  • ; }); } let message; if (this.state.message !== null && typeof this.state.message === 'object') { message = ; } else if (typeof this.state.message === "boolean") { message = (this.state.message ? 'true' : 'false'); } else { message = this.state.message; } return (
    {receipt && } { !this.state.error && this.state.message && {message} }
    ); } render() { const functionName = this.props.abi.name; const isDuplicated = this.props.contract.options.jsonInterface.filter(x => x.name === functionName).length > 1; const contract = this.props.contract; const receipt = this.state.receipt; let title; if (this.props.abi.type === 'function') { title = this.props.abi.name; } else if (this.props.abi.type === 'fallback') { title = '(fallback)'; } else { title = this.props.abi.name; } return

    {title}

    {this.renderContent(receipt, contract)}
    ; } showResults(_error, _message, _receipt) { this.setState({ error: _error, message: _message, receipt: _receipt }); } } FunctionForm.propTypes = { abi: PropTypes.object, contract: PropTypes.object, definition: PropTypes.object, contractName: PropTypes.string }; export default FunctionForm;