From 5b96039b99489fc8b567a665a3f18710f4cf545a Mon Sep 17 00:00:00 2001 From: hackrush Date: Sat, 2 Sep 2017 21:06:27 +0530 Subject: [PATCH] Transaction list now displays additional information Removed older modal files --- ui/js/actions/wallet.js | 2 +- ui/js/component/bodyTransactionList/index.js | 5 + ui/js/component/bodyTransactionList/view.jsx | 97 +++++++++++++++++++ .../component/headerTransactionList/index.js | 5 + .../component/headerTransactionList/view.jsx | 20 ++++ .../modalInsufficientBalance/index.js | 16 --- .../modalInsufficientBalance/view.jsx | 26 ----- .../component/modalTransactionFailed/index.js | 12 --- .../component/modalTransactionFailed/view.jsx | 20 ---- ui/js/component/transactionList/view.jsx | 95 +++++++++--------- ui/js/selectors/wallet.js | 7 +- 11 files changed, 178 insertions(+), 127 deletions(-) create mode 100644 ui/js/component/bodyTransactionList/index.js create mode 100644 ui/js/component/bodyTransactionList/view.jsx create mode 100644 ui/js/component/headerTransactionList/index.js create mode 100644 ui/js/component/headerTransactionList/view.jsx delete mode 100644 ui/js/component/modalInsufficientBalance/index.js delete mode 100644 ui/js/component/modalInsufficientBalance/view.jsx delete mode 100644 ui/js/component/modalTransactionFailed/index.js delete mode 100644 ui/js/component/modalTransactionFailed/view.jsx diff --git a/ui/js/actions/wallet.js b/ui/js/actions/wallet.js index 364c7e9d5..2575c5285 100644 --- a/ui/js/actions/wallet.js +++ b/ui/js/actions/wallet.js @@ -23,7 +23,7 @@ export function doFetchTransactions() { type: types.FETCH_TRANSACTIONS_STARTED, }); - lbry.transaction_list().then(results => { + lbry.transaction_list({ include_tip_info: true }).then(results => { dispatch({ type: types.FETCH_TRANSACTIONS_COMPLETED, data: { diff --git a/ui/js/component/bodyTransactionList/index.js b/ui/js/component/bodyTransactionList/index.js new file mode 100644 index 000000000..48db597ed --- /dev/null +++ b/ui/js/component/bodyTransactionList/index.js @@ -0,0 +1,5 @@ +import React from "react"; +import { connect } from "react-redux"; +import TransactionTableBody from "./view"; + +export default connect(null, null)(TransactionTableBody); diff --git a/ui/js/component/bodyTransactionList/view.jsx b/ui/js/component/bodyTransactionList/view.jsx new file mode 100644 index 000000000..dcabf00ec --- /dev/null +++ b/ui/js/component/bodyTransactionList/view.jsx @@ -0,0 +1,97 @@ +import React from "react"; +import LinkTransaction from "component/linkTransaction"; +import { CreditAmount } from "component/common"; + +class TransactionTableBody extends React.PureComponent { + constructor(props) { + super(props); + } + + filterList(transaction) { + if (this.filter == "claim") { + return transaction.claim_info.length > 0; + } else if (this.filter == "support") { + return transaction.support_info.length > 0; + } else if (this.filter == "update") { + return transaction.update_info.length > 0; + } else { + return transaction; + } + } + + renderBody(transaction, index) { + const txid = transaction.id; + const date = transaction.date; + const fee = transaction.fee; + const filter = this.filter; + + return filter != "unfiltered" + ? transaction[`${filter}_info`].map(item => { + return ( + + + {date + ? date.toLocaleDateString() + " " + date.toLocaleTimeString() + : + {__("(Transaction pending)")} + } + + + {" "} + + + {" "} + + + {item.claim_name} + + + + + + ); + }) + : + + {date + ? date.toLocaleDateString() + " " + date.toLocaleTimeString() + : + {__("(Transaction pending)")} + } + + + {" "} + + + {" "} + + + + + ; + } + + render() { + const { transactions, filter } = this.props; + + return ( + + {transactions + .filter(this.filterList, this.props) + .map(this.renderBody, this.props)} + + ); + } +} + +export default TransactionTableBody; diff --git a/ui/js/component/headerTransactionList/index.js b/ui/js/component/headerTransactionList/index.js new file mode 100644 index 000000000..60ae880d7 --- /dev/null +++ b/ui/js/component/headerTransactionList/index.js @@ -0,0 +1,5 @@ +import React from "react"; +import { connect } from "react-redux"; +import TransactionTableHeader from "./view"; + +export default connect(null, null)(TransactionTableHeader); diff --git a/ui/js/component/headerTransactionList/view.jsx b/ui/js/component/headerTransactionList/view.jsx new file mode 100644 index 000000000..23fd61965 --- /dev/null +++ b/ui/js/component/headerTransactionList/view.jsx @@ -0,0 +1,20 @@ +import React from "react"; + +class TransactionTableHeader extends React.PureComponent { + render() { + const { filter } = this.props; + return ( + + + {__("Date")} + {__("Amount")} + {__("Fee")} + {filter != "unfiltered" && {__("Claim Name")} } + {__("Transaction")} + + + ); + } +} + +export default TransactionTableHeader; diff --git a/ui/js/component/modalInsufficientBalance/index.js b/ui/js/component/modalInsufficientBalance/index.js deleted file mode 100644 index c56232caf..000000000 --- a/ui/js/component/modalInsufficientBalance/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; -import { connect } from "react-redux"; -import { doCloseModal, doNavigate } from "actions/app"; -import ModalInsufficientBalance from "./view"; - -const select = state => ({}); - -const perform = dispatch => ({ - addBalance: () => { - dispatch(doNavigate("/wallet")); - dispatch(doCloseModal()); - }, - closeModal: () => dispatch(doCloseModal()), -}); - -export default connect(select, perform)(ModalInsufficientBalance); diff --git a/ui/js/component/modalInsufficientBalance/view.jsx b/ui/js/component/modalInsufficientBalance/view.jsx deleted file mode 100644 index f9ac56138..000000000 --- a/ui/js/component/modalInsufficientBalance/view.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import { Modal } from "component/modal"; - -class ModalInsufficientBalance extends React.PureComponent { - render() { - const { addBalance, closeModal } = this.props; - - return ( - - {__( - "Insufficient balance: after this transaction you would have less than 1 LBC in your wallet." - )} - - ); - } -} - -export default ModalInsufficientBalance; diff --git a/ui/js/component/modalTransactionFailed/index.js b/ui/js/component/modalTransactionFailed/index.js deleted file mode 100644 index 4b370a7c8..000000000 --- a/ui/js/component/modalTransactionFailed/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import { connect } from "react-redux"; -import { doCloseModal } from "actions/app"; -import ModalTransactionFailed from "./view"; - -const select = state => ({}); - -const perform = dispatch => ({ - closeModal: () => dispatch(doCloseModal()), -}); - -export default connect(select, perform)(ModalTransactionFailed); diff --git a/ui/js/component/modalTransactionFailed/view.jsx b/ui/js/component/modalTransactionFailed/view.jsx deleted file mode 100644 index f22038e78..000000000 --- a/ui/js/component/modalTransactionFailed/view.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import { Modal } from "component/modal"; - -class ModalTransactionFailed extends React.PureComponent { - render() { - const { closeModal } = this.props; - - return ( - - {__("Something went wrong")}: - - ); - } -} - -export default ModalTransactionFailed; diff --git a/ui/js/component/transactionList/view.jsx b/ui/js/component/transactionList/view.jsx index 0ad7f4eeb..374c6887d 100644 --- a/ui/js/component/transactionList/view.jsx +++ b/ui/js/component/transactionList/view.jsx @@ -1,57 +1,56 @@ import React from "react"; -import LinkTransaction from "component/linkTransaction"; -import { CreditAmount } from "component/common"; +import TransactionTableHeader from "component/headerTransactionList"; +import TransactionTableBody from "component/bodyTransactionList"; +import FormField from "component/formField"; -const TransactionList = props => { - const { emptyMessage, transactions } = props; +class TransactionList extends React.PureComponent { + constructor(props) { + super(props); + + this.state = { + filter: "unfiltered", + }; + } + + handleFilterChanged(event) { + this.setState({ + filter: event.target.value, + }); + } + + render() { + const { emptyMessage, transactions } = this.props; + const { filter } = this.state; + + if (!transactions || !transactions.length) { + return ( +
+ {emptyMessage || __("No transactions to list.")} +
+ ); + } - if (!transactions || !transactions.length) { return ( -
- {emptyMessage || __("No transactions to list.")} +
+ + {__("Filter")} {" "} + + + + + + + + + + +
); } - - return ( - - - - - - - - - - {transactions.map(item => { - return ( - - - - - - ); - })} - -
{__("Date")}{__("Amount")}{__("Transaction")}
- {item.date - ? item.date.toLocaleDateString() + - " " + - item.date.toLocaleTimeString() - : - {__("(Transaction pending)")} - } - - {" "} - - -
- ); -}; +} export default TransactionList; diff --git a/ui/js/selectors/wallet.js b/ui/js/selectors/wallet.js index dbf32639f..60e0dd1aa 100644 --- a/ui/js/selectors/wallet.js +++ b/ui/js/selectors/wallet.js @@ -28,11 +28,10 @@ export const selectTransactionItems = createSelector( id: txid, date: tx.timestamp ? new Date(parseInt(tx.timestamp) * 1000) : null, amount: parseFloat(tx.value), - type: tx.type, + claim_info: tx.claim_info, + support_info: tx.support_info, + update_info: tx.update_info, fee: tx.fee, - claim_id: tx.claim_id, - claim_name: tx.claim_name, - is_tip: tx.is_tip, }); }); return transactionItems.reverse();