aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/pages/confirm-transaction-switch/confirm-transaction-switch.container.js
blob: 230a931ad4c9cad53aa4b86f0cec1405d0e4e592 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { connect } from 'react-redux'
import ConfirmTransactionSwitch from './confirm-transaction-switch.component'
import {
  TOKEN_METHOD_TRANSFER,
  TOKEN_METHOD_APPROVE,
  TOKEN_METHOD_TRANSFER_FROM,
  SEND_ETHER_ACTION_KEY,
} from '../../helpers/constants/transactions'
import { unconfirmedTransactionsListSelector } from '../../selectors/confirm-transaction'

const mapStateToProps = (state, ownProps) => {
  const { metamask: { unapprovedTxs } } = state
  const { match: { params = {}, url } } = ownProps
  const urlId = url && url.match(/\d+/) && url.match(/\d+/)[0]
  const { id: paramsId } = params
  const transactionId = paramsId || urlId

  const unconfirmedTransactions = unconfirmedTransactionsListSelector(state)
  const totalUnconfirmed = unconfirmedTransactions.length
  const transaction = totalUnconfirmed
    ? unapprovedTxs[transactionId] || unconfirmedTransactions[totalUnconfirmed - 1]
    : {}

  return {
    txData: transaction,
    isEtherTransaction: transaction && transaction.transactionCategory === SEND_ETHER_ACTION_KEY,
    isTokenMethod: [TOKEN_METHOD_APPROVE, TOKEN_METHOD_TRANSFER, TOKEN_METHOD_TRANSFER_FROM].includes(transaction && transaction.transactionCategory && transaction.transactionCategory.toLowerCase()),
  }
}

export default connect(mapStateToProps)(ConfirmTransactionSwitch)