// 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 . import BigNumber from 'bignumber.js'; import { observer } from 'mobx-react'; import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { newError } from '@parity/shared/redux/actions'; import { startConfirmRequest, startRejectRequest } from '@parity/shared/redux/providers/signerActions'; import { Container, Page, TxList } from '@parity/ui'; import Store from '~/shell/Signer/store'; import RequestPending from '~/shell/Signer/components/RequestPending'; import styles from './requestsPage.css'; @observer class RequestsPage extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { gasLimit: PropTypes.object.isRequired, netVersion: PropTypes.string.isRequired, startConfirmRequest: PropTypes.func.isRequired, startRejectRequest: PropTypes.func.isRequired, blockNumber: PropTypes.object, newError: PropTypes.func, signer: PropTypes.shape({ pending: PropTypes.array.isRequired, finished: PropTypes.array.isRequired }).isRequired }; store = new Store(this.context.api, true); componentWillUnmount () { this.store.unsubscribe(); } render () { return (
{ this.renderPendingRequests() }
{ this.renderLocalQueue() }
); } _sortRequests = (a, b) => { return new BigNumber(a.id).cmp(b.id); } renderLocalQueue () { const { localHashes } = this.store; const { blockNumber, newError } = this.props; if (!localHashes.length) { return null; } return ( } > ); } renderPendingRequests () { const { pending } = this.props.signer; if (!pending.length) { return (
); } const items = pending.sort(this._sortRequests).map(this.renderPending); return ( } > { items } ); } renderPending = (data, index) => { const { startConfirmRequest, startRejectRequest, gasLimit, netVersion } = this.props; const { date, id, isSending, payload, origin } = data; return ( ); } } function mapStateToProps (state) { const { gasLimit, netVersion, blockNumber } = state.nodeStatus; const { signer } = state; return { blockNumber, gasLimit, netVersion, signer }; } function mapDispatchToProps (dispatch) { return bindActionCreators({ newError, startConfirmRequest, startRejectRequest }, dispatch); } export default connect( mapStateToProps, mapDispatchToProps )(RequestsPage);