import { connect } from 'react-redux'; import { findLastIndex } from 'lodash'; import { conversionRateSelector, getRpcPrefsForCurrentProvider, } from '../../../selectors'; import { getNativeCurrency } from '../../../ducks/metamask/metamask'; import TransactionActivityLog from './transaction-activity-log.component'; import { combineTransactionHistories } from './transaction-activity-log.util'; import { TRANSACTION_RESUBMITTED_EVENT, TRANSACTION_CANCEL_ATTEMPTED_EVENT, } from './transaction-activity-log.constants'; const matchesEventKey = (matchEventKey) => ({ eventKey }) => eventKey === matchEventKey; const mapStateToProps = (state) => { return { conversionRate: conversionRateSelector(state), nativeCurrency: getNativeCurrency(state), rpcPrefs: getRpcPrefsForCurrentProvider(state), }; }; const mergeProps = (stateProps, dispatchProps, ownProps) => { const { transactionGroup: { transactions = [], primaryTransaction } = {}, ...restOwnProps } = ownProps; const activities = combineTransactionHistories(transactions); const inlineRetryIndex = findLastIndex( activities, matchesEventKey(TRANSACTION_RESUBMITTED_EVENT), ); const inlineCancelIndex = findLastIndex( activities, matchesEventKey(TRANSACTION_CANCEL_ATTEMPTED_EVENT), ); return { ...stateProps, ...dispatchProps, ...restOwnProps, activities, inlineRetryIndex, inlineCancelIndex, primaryTransaction, }; }; export default connect( mapStateToProps, null, mergeProps, )(TransactionActivityLog);