diff --git a/components/dataViews/TransactionInfo.js b/components/dataViews/TransactionInfo.js index 32063bf..f210e1d 100644 --- a/components/dataViews/TransactionInfo.js +++ b/components/dataViews/TransactionInfo.js @@ -1,6 +1,6 @@ import HashView from "./HashView"; import StackableContainer from "../layout/StackableContainer"; -import { printableCoin } from "../../lib/displayHelpers"; +import { printableCoins } from "../../lib/displayHelpers"; export default (props) => ( @@ -8,7 +8,7 @@ export default (props) => ( {props.tx.msgs && (
  • -
    {printableCoin(props.tx.msgs[0].value.amount[0])}
    +
    {printableCoins(props.tx.msgs[0].value.amount)}
  • )} {props.tx.msgs && ( @@ -20,10 +20,16 @@ export default (props) => ( )} {props.tx.fee && ( -
  • - -
    {props.tx.fee.gas} UATOM
    -
  • + <> +
  • + +
    {props.tx.fee.gas}
    +
  • +
  • + +
    {printableCoins(props.tx.fee.amount)}
    +
  • + )} {props.tx.memo && (
  • diff --git a/components/forms/TransactionForm.js b/components/forms/TransactionForm.js index 345dc34..ce51860 100644 --- a/components/forms/TransactionForm.js +++ b/components/forms/TransactionForm.js @@ -6,6 +6,19 @@ import { withRouter } from "next/router"; import Button from "../../components/inputs/Button"; import Input from "../../components/inputs/Input"; import StackableContainer from "../layout/StackableContainer"; +import { GasPrice } from "@cosmjs/stargate"; +import { Uint53 } from "@cosmjs/math"; + +// TODO: use `calculateFee` from @cosmjs/stargate after upgrading CosmJS to 0.26+ +function calculateFee(gasLimit, gasPrice) { + const processedGasPrice = typeof gasPrice === "string" ? GasPrice.fromString(gasPrice) : gasPrice; + const { denom, amount: gasPriceAmount } = processedGasPrice; + const amount = Math.ceil(gasPriceAmount.multiply(new Uint53(gasLimit)).toFloatApproximation()); + return { + amount: coins(amount, denom), + gas: gasLimit.toString(), + }; +} class TransactionForm extends React.Component { constructor(props) { @@ -16,6 +29,7 @@ class TransactionForm extends React.Component { amount: 0, memo: "", gas: 200000, + gasPrice: `0.03${process.env.NEXT_PUBLIC_DENOM}`, processing: false, addressError: "", }; @@ -37,12 +51,7 @@ class TransactionForm extends React.Component { typeUrl: "/cosmos.bank.v1beta1.MsgSend", value: msgSend, }; - const gasLimit = gas; - const fee = { - amount: coins(6000, process.env.NEXT_PUBLIC_DENOM), - gas: gasLimit.toString(), - }; - + const fee = calculateFee(Number(gas), this.state.gasPrice); return { accountNumber: this.props.accountOnChain.accountNumber, sequence: this.props.accountOnChain.sequence, @@ -101,13 +110,22 @@ class TransactionForm extends React.Component {
    +
    + +
    ( placeholder={props.placeholder || ""} autoComplete="off" onBlur={props.onBlur} + disabled={props.disabled} /> {props.error &&
    {props.error}
    }