AugurProject/augur-ui

View on GitHub
src/modules/trades/helpers/has-user-enough-funds.js

Summary

Maintainability
A
0 mins
Test Coverage
import memoize from "memoizee";
import { createBigNumber } from "utils/create-big-number";
import { ZERO } from "modules/trades/constants/numbers";

/**
 * Returns true if user has enough funds for trades, false otherwise
 *
 * @param {Array} trades
 * @param {Object} loginAccount
 * @return {boolean}
 */
export default memoize(
  (trades, loginAccount) => {
    if (
      !loginAccount ||
      loginAccount.address == null ||
      loginAccount.ether == null
    ) {
      return false;
    }

    const totalCost = trades.reduce(
      (totalCost, trade) =>
        trade.side === "buy"
          ? totalCost.plus(createBigNumber(trade.totalCost.value, 10))
          : totalCost.plus(createBigNumber(trade.totalFee.value, 10)),
      ZERO
    );
    return totalCost.lte(createBigNumber(loginAccount.ether, 10));
  },
  { max: 10 }
);