// Copyright 2015, 2016 Ethcore (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 React, { Component, PropTypes } from 'react'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import Store from '../../store'; import * as RequestsActions from '../../../../redux/providers/signerActions'; import { Container, ContainerTitle } from '../../../../ui'; import { RequestPending, RequestFinished } from '../../components'; import styles from './RequestsPage.css'; class RequestsPage extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { signer: PropTypes.shape({ pending: PropTypes.array.isRequired, finished: PropTypes.array.isRequired }).isRequired, actions: PropTypes.shape({ startConfirmRequest: PropTypes.func.isRequired, startRejectRequest: PropTypes.func.isRequired }).isRequired, isTest: PropTypes.bool.isRequired }; store = new Store(this.context.api); render () { const { pending, finished } = this.props.signer; if (!pending.length && !finished.length) { return this.renderNoRequestsMsg(); } return (
{ this.renderPendingRequests() } { this.renderFinishedRequests() }
); } _sortRequests = (a, b) => { return new BigNumber(b.id).cmp(a.id); } renderPendingRequests () { const { pending } = this.props.signer; if (!pending.length) { return; } const items = pending.sort(this._sortRequests).map(this.renderPending); return (
{ items }
); } renderFinishedRequests () { const { finished } = this.props.signer; if (!finished.length) { return; } const items = finished.sort(this._sortRequests).map(this.renderFinished); return (
{ items }
); } renderPending = (data) => { const { actions, isTest } = this.props; const { payload, id, isSending, date } = data; return ( ); } renderFinished = (data) => { const { isTest } = this.props; const { payload, id, result, msg, status, error, date } = data; return ( ); } renderNoRequestsMsg () { return (
There are no requests requiring your confirmation.
); } } function mapStateToProps (state) { const { isTest } = state.nodeStatus; const { actions, signer } = state; return { actions, signer, isTest }; } function mapDispatchToProps (dispatch) { return { actions: bindActionCreators(RequestsActions, dispatch) }; } export default connect( mapStateToProps, mapDispatchToProps )(RequestsPage);