[Registry dApp] Actions not available before selecting accounts (#3032)
* Removed hasAccount from actions, now in Application [RegDapp] (#2931) * Linting issues
This commit is contained in:
		
							parent
							
								
									19d5f93745
								
							
						
					
					
						commit
						297a09399d
					
				@ -37,3 +37,15 @@
 | 
				
			|||||||
  font-size: 80%;
 | 
					  font-size: 80%;
 | 
				
			||||||
  background-color: #f0f0f0;
 | 
					  background-color: #f0f0f0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.actions {
 | 
				
			||||||
 | 
					  margin: 1em;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * {
 | 
				
			||||||
 | 
					    font-size: 1.3rem !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  > * {
 | 
				
			||||||
 | 
					    padding-bottom: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -20,6 +20,7 @@ import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme';
 | 
				
			|||||||
const muiTheme = getMuiTheme(lightBaseTheme);
 | 
					const muiTheme = getMuiTheme(lightBaseTheme);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import CircularProgress from 'material-ui/CircularProgress';
 | 
					import CircularProgress from 'material-ui/CircularProgress';
 | 
				
			||||||
 | 
					import { Card, CardText } from 'material-ui/Card';
 | 
				
			||||||
import styles from './application.css';
 | 
					import styles from './application.css';
 | 
				
			||||||
import Accounts from '../Accounts';
 | 
					import Accounts from '../Accounts';
 | 
				
			||||||
import Events from '../Events';
 | 
					import Events from '../Events';
 | 
				
			||||||
@ -57,9 +58,7 @@ export default class Application extends Component {
 | 
				
			|||||||
      accounts, contacts,
 | 
					      accounts, contacts,
 | 
				
			||||||
      contract, fee,
 | 
					      contract, fee,
 | 
				
			||||||
      lookup,
 | 
					      lookup,
 | 
				
			||||||
      events,
 | 
					      events
 | 
				
			||||||
      names,
 | 
					 | 
				
			||||||
      records
 | 
					 | 
				
			||||||
    } = this.props;
 | 
					    } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
@ -71,8 +70,9 @@ export default class Application extends Component {
 | 
				
			|||||||
        { contract && fee ? (
 | 
					        { contract && fee ? (
 | 
				
			||||||
          <div>
 | 
					          <div>
 | 
				
			||||||
            <Lookup { ...lookup } accounts={ accounts.all } contacts={ contacts } actions={ actions.lookup } />
 | 
					            <Lookup { ...lookup } accounts={ accounts.all } contacts={ contacts } actions={ actions.lookup } />
 | 
				
			||||||
            <Names { ...names } fee={ fee } actions={ actions.names } />
 | 
					
 | 
				
			||||||
            <Records { ...records } actions={ actions.records } />
 | 
					            { this.renderActions() }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <Events { ...events } accounts={ accounts.all } contacts={ contacts } actions={ actions.events } />
 | 
					            <Events { ...events } accounts={ accounts.all } contacts={ contacts } actions={ actions.events } />
 | 
				
			||||||
            <p className={ styles.address }>
 | 
					            <p className={ styles.address }>
 | 
				
			||||||
              The Registry is provided by the contract at <code>{ contract.address }.</code>
 | 
					              The Registry is provided by the contract at <code>{ contract.address }.</code>
 | 
				
			||||||
@ -85,4 +85,34 @@ export default class Application extends Component {
 | 
				
			|||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  renderActions () {
 | 
				
			||||||
 | 
					    const {
 | 
				
			||||||
 | 
					      actions,
 | 
				
			||||||
 | 
					      accounts,
 | 
				
			||||||
 | 
					      fee,
 | 
				
			||||||
 | 
					      names,
 | 
				
			||||||
 | 
					      records
 | 
				
			||||||
 | 
					    } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const hasAccount = !!accounts.selected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!hasAccount) {
 | 
				
			||||||
 | 
					      return (
 | 
				
			||||||
 | 
					        <Card className={ styles.actions }>
 | 
				
			||||||
 | 
					          <CardText>
 | 
				
			||||||
 | 
					            Please select a valid account in order
 | 
				
			||||||
 | 
					            to execute actions.
 | 
				
			||||||
 | 
					          </CardText>
 | 
				
			||||||
 | 
					        </Card>
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					      <div>
 | 
				
			||||||
 | 
					        <Names { ...names } fee={ fee } actions={ actions.names } />
 | 
				
			||||||
 | 
					        <Records { ...records } actions={ actions.records } />
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,6 @@ export default class Names extends Component {
 | 
				
			|||||||
  static propTypes = {
 | 
					  static propTypes = {
 | 
				
			||||||
    actions: PropTypes.object.isRequired,
 | 
					    actions: PropTypes.object.isRequired,
 | 
				
			||||||
    fee: PropTypes.object.isRequired,
 | 
					    fee: PropTypes.object.isRequired,
 | 
				
			||||||
    hasAccount: PropTypes.bool.isRequired,
 | 
					 | 
				
			||||||
    pending: PropTypes.bool.isRequired,
 | 
					    pending: PropTypes.bool.isRequired,
 | 
				
			||||||
    queue: PropTypes.array.isRequired
 | 
					    queue: PropTypes.array.isRequired
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -89,15 +88,13 @@ export default class Names extends Component {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  render () {
 | 
					  render () {
 | 
				
			||||||
    const { action, name } = this.state;
 | 
					    const { action, name } = this.state;
 | 
				
			||||||
    const { fee, hasAccount, pending, queue } = this.props;
 | 
					    const { fee, pending, queue } = this.props;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <Card className={ styles.names }>
 | 
					      <Card className={ styles.names }>
 | 
				
			||||||
        <CardHeader title={ 'Manage Names' } />
 | 
					        <CardHeader title={ 'Manage Names' } />
 | 
				
			||||||
        <CardText>
 | 
					        <CardText>
 | 
				
			||||||
          { !hasAccount
 | 
					          { (action === 'reserve'
 | 
				
			||||||
            ? (<p className={ styles.noSpacing }>Please select an account first.</p>)
 | 
					 | 
				
			||||||
            : (action === 'reserve'
 | 
					 | 
				
			||||||
              ? (<p className={ styles.noSpacing }>
 | 
					              ? (<p className={ styles.noSpacing }>
 | 
				
			||||||
                The fee to reserve a name is <code>{ fromWei(fee).toFixed(3) }</code>ETH.
 | 
					                The fee to reserve a name is <code>{ fromWei(fee).toFixed(3) }</code>ETH.
 | 
				
			||||||
              </p>)
 | 
					              </p>)
 | 
				
			||||||
@ -110,7 +107,7 @@ export default class Names extends Component {
 | 
				
			|||||||
            onChange={ this.onNameChange }
 | 
					            onChange={ this.onNameChange }
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
          <DropDownMenu
 | 
					          <DropDownMenu
 | 
				
			||||||
            disabled={ !hasAccount || pending }
 | 
					            disabled={ pending }
 | 
				
			||||||
            value={ action }
 | 
					            value={ action }
 | 
				
			||||||
            onChange={ this.onActionChange }
 | 
					            onChange={ this.onActionChange }
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
@ -118,7 +115,7 @@ export default class Names extends Component {
 | 
				
			|||||||
            <MenuItem value='drop' primaryText='drop this name' />
 | 
					            <MenuItem value='drop' primaryText='drop this name' />
 | 
				
			||||||
          </DropDownMenu>
 | 
					          </DropDownMenu>
 | 
				
			||||||
          <RaisedButton
 | 
					          <RaisedButton
 | 
				
			||||||
            disabled={ !hasAccount || pending }
 | 
					            disabled={ pending }
 | 
				
			||||||
            className={ styles.spacing }
 | 
					            className={ styles.spacing }
 | 
				
			||||||
            label={ action === 'reserve' ? 'Reserve' : 'Drop' }
 | 
					            label={ action === 'reserve' ? 'Reserve' : 'Drop' }
 | 
				
			||||||
            primary
 | 
					            primary
 | 
				
			||||||
 | 
				
			|||||||
@ -15,16 +15,11 @@
 | 
				
			|||||||
// along with Parity.  If not, see <http://www.gnu.org/licenses/>.
 | 
					// along with Parity.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const initialState = {
 | 
					const initialState = {
 | 
				
			||||||
  hasAccount: false,
 | 
					 | 
				
			||||||
  pending: false,
 | 
					  pending: false,
 | 
				
			||||||
  queue: []
 | 
					  queue: []
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default (state = initialState, action) => {
 | 
					export default (state = initialState, action) => {
 | 
				
			||||||
  if (action.type === 'accounts select') {
 | 
					 | 
				
			||||||
    return { ...state, hasAccount: !!action.address };
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (action.type === 'names reserve start') {
 | 
					  if (action.type === 'names reserve start') {
 | 
				
			||||||
    return { ...state, pending: true };
 | 
					    return { ...state, pending: true };
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,6 @@ export default class Records extends Component {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  static propTypes = {
 | 
					  static propTypes = {
 | 
				
			||||||
    actions: PropTypes.object.isRequired,
 | 
					    actions: PropTypes.object.isRequired,
 | 
				
			||||||
    hasAccount: PropTypes.bool.isRequired,
 | 
					 | 
				
			||||||
    pending: PropTypes.bool.isRequired,
 | 
					    pending: PropTypes.bool.isRequired,
 | 
				
			||||||
    name: PropTypes.string.isRequired,
 | 
					    name: PropTypes.string.isRequired,
 | 
				
			||||||
    type: PropTypes.string.isRequired,
 | 
					    type: PropTypes.string.isRequired,
 | 
				
			||||||
@ -21,7 +20,7 @@ export default class Records extends Component {
 | 
				
			|||||||
  state = { name: '', type: 'A', value: '' };
 | 
					  state = { name: '', type: 'A', value: '' };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  render () {
 | 
					  render () {
 | 
				
			||||||
    const { hasAccount, pending } = this.props;
 | 
					    const { pending } = this.props;
 | 
				
			||||||
    const name = this.state.name || this.props.name;
 | 
					    const name = this.state.name || this.props.name;
 | 
				
			||||||
    const type = this.state.type || this.props.type;
 | 
					    const type = this.state.type || this.props.type;
 | 
				
			||||||
    const value = this.state.value || this.props.value;
 | 
					    const value = this.state.value || this.props.value;
 | 
				
			||||||
@ -30,10 +29,10 @@ export default class Records extends Component {
 | 
				
			|||||||
      <Card className={ styles.records }>
 | 
					      <Card className={ styles.records }>
 | 
				
			||||||
        <CardHeader title={ 'Manage Entries of a Name' } />
 | 
					        <CardHeader title={ 'Manage Entries of a Name' } />
 | 
				
			||||||
        <CardText>
 | 
					        <CardText>
 | 
				
			||||||
          { !hasAccount
 | 
					          <p className={ styles.noSpacing }>
 | 
				
			||||||
            ? (<p className={ styles.noSpacing }>Please select an account first.</p>)
 | 
					            You can only modify entries of names that you previously registered.
 | 
				
			||||||
            : (<p className={ styles.noSpacing }>You can only modify entries of names that you previously registered.</p>)
 | 
					          </p>
 | 
				
			||||||
          }
 | 
					
 | 
				
			||||||
          <TextField
 | 
					          <TextField
 | 
				
			||||||
            className={ styles.spacing }
 | 
					            className={ styles.spacing }
 | 
				
			||||||
            hintText='name'
 | 
					            hintText='name'
 | 
				
			||||||
@ -48,7 +47,7 @@ export default class Records extends Component {
 | 
				
			|||||||
            onChange={ this.onValueChange }
 | 
					            onChange={ this.onValueChange }
 | 
				
			||||||
          />
 | 
					          />
 | 
				
			||||||
          <RaisedButton
 | 
					          <RaisedButton
 | 
				
			||||||
            disabled={ !hasAccount || pending }
 | 
					            disabled={ pending }
 | 
				
			||||||
            className={ styles.spacing }
 | 
					            className={ styles.spacing }
 | 
				
			||||||
            label='Save'
 | 
					            label='Save'
 | 
				
			||||||
            primary
 | 
					            primary
 | 
				
			||||||
 | 
				
			|||||||
@ -1,14 +1,9 @@
 | 
				
			|||||||
const initialState = {
 | 
					const initialState = {
 | 
				
			||||||
  hasAccount: false,
 | 
					 | 
				
			||||||
  pending: false,
 | 
					  pending: false,
 | 
				
			||||||
  name: '', type: '', value: ''
 | 
					  name: '', type: '', value: ''
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default (state = initialState, action) => {
 | 
					export default (state = initialState, action) => {
 | 
				
			||||||
  if (action.type === 'accounts select') {
 | 
					 | 
				
			||||||
    return { ...state, hasAccount: !!action.address };
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (action.type === 'records update start') {
 | 
					  if (action.type === 'records update start') {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      ...state,
 | 
					      ...state,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user