// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see <http://www.gnu.org/licenses/>. import React, { Component } from 'react'; import PropTypes from 'prop-types'; import ListItem, { Header, Row } from '../ListItem'; export default class Dapp extends Component { static propTypes = { dapp: PropTypes.object.isRequired, disabled: PropTypes.bool } render () { const { dapp, disabled } = this.props; return ( <ListItem disabled={ disabled } status={ dapp.status } > <Header isBusy={ dapp.isDeploying } isOk={ dapp.isOnChain && !!dapp.imageHash && !!dapp.imageMatch && (!dapp.source.contentHash || !!dapp.contentMatch) && (!dapp.source.manifestHash || !!dapp.manifestMatch) } > { dapp.name } </Header> <Row isBusy={ dapp.isDeploying } isOk={ dapp.isOnChain } > { dapp.isOnChain ? 'found in dappreg' : 'not found in dappreg' } </Row> { this.renderHash(dapp, 'image') } { this.renderHash(dapp, 'manifest') } { this.renderHash(dapp, 'content') } </ListItem> ); } renderHash (dapp, type) { if (!dapp.source[`${type}Hash`]) { return null; } const isMatch = dapp[`${type}Match`]; const hash = dapp[`${type}Hash`]; return [ <Row disabled={ !dapp.isOnChain } isBusy={ dapp.isDeploying } isOk={ !!hash } key={ `${type}Hash` } > { hash ? `${type}Hash ${hash}` : `has not registered an ${type}Hash` } </Row>, <Row disabled={ !dapp.isOnChain } isBusy={ dapp.isDeploying } isOk={ isMatch } key={ `${type}Match` } > { isMatch ? `has latest ${type}Hash` : `does not have latest ${type}Hash` } </Row> ]; } }