// 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 React, { Component } from 'react'; import { observer } from 'mobx-react'; import DappsStore from '../dappsStore'; import styles from './transactions.css'; @observer export default class Transactions extends Component { dappsStore = DappsStore.get(); render () { const { transactions } = this.dappsStore; const displayedTransactions = Object.values(transactions) .filter((tx) => !tx.hide) .sort((txA, txB) => txB.start - txA.start); return (
{ displayedTransactions.map((transaction) => this.renderTransaction(transaction)) }
); } renderTransaction (transaction) { const { error, name, requestId, start, transactionHash, transactionReceipt } = transaction; const date = new Date(start); const isError = !!error; const isPendingNetwork = transactionHash && !transactionReceipt; const isConfirmed = !!transactionReceipt; const transactionClasses = [ styles.content ]; const handleHideTransaction = (event) => this.handleHideTransaction(event, requestId); if (isError) { transactionClasses.push(styles.error); } if (isPendingNetwork) { transactionClasses.push(styles.pending); } if (isConfirmed) { transactionClasses.push(styles.confirmed); } return (
{ name ? (
{ name }
) : null }
{ date.toLocaleTimeString() }
{ this.renderTransactionContent(transaction) }
); } renderTransactionContent (transaction) { const { error, transactionHash, transactionReceipt } = transaction; if (error) { return (
{ error.text || error.message || error.toString() }
); } if (transactionReceipt) { return (
Transaction mined at block { transactionReceipt.blockNumber.toFormat(0) }
); } if (transactionHash) { return (
Transaction sent to network with hash { transactionHash }..
); } return (
Transaction waiting to be signed...
); } handleHideTransaction = (event, requestId) => { this.dappsStore.updateTransaction(requestId, { hide: true }); } }