diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-11-13 12:34:33 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-11-13 12:50:28 +0800 |
commit | 49a9345bf4435bb51999527df2b7ee8bbf195743 (patch) | |
tree | dbaefe0a0bf5a1e33ba5fd5e7a2df642ed300c85 | |
parent | d73faf1b81cf08a3793f0207819e163b322b4433 (diff) | |
download | dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar.gz dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar.bz2 dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar.lz dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar.xz dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.tar.zst dexon-sol-tools-49a9345bf4435bb51999527df2b7ee8bbf195743.zip |
feat(instant): calculate per unit eth amount to populate OrderDetails component
-rw-r--r-- | packages/instant/src/components/order_details.tsx | 19 | ||||
-rw-r--r-- | packages/instant/src/containers/latest_buy_quote_order_details.ts | 2 |
2 files changed, 15 insertions, 6 deletions
diff --git a/packages/instant/src/components/order_details.tsx b/packages/instant/src/components/order_details.tsx index 9abd7137e..fc316b9f8 100644 --- a/packages/instant/src/components/order_details.tsx +++ b/packages/instant/src/components/order_details.tsx @@ -4,6 +4,7 @@ import * as _ from 'lodash'; import * as React from 'react'; import { oc } from 'ts-optchain'; +import { BIG_NUMBER_ZERO } from '../constants'; import { ColorOption } from '../style/theme'; import { format } from '../util/format'; @@ -15,16 +16,23 @@ import { Text } from './ui/text'; export interface OrderDetailsProps { buyQuoteInfo?: BuyQuoteInfo; + selectedAssetAmount?: BigNumber; ethUsdPrice?: BigNumber; isLoading: boolean; } export class OrderDetails extends React.Component<OrderDetailsProps> { public render(): React.ReactNode { - const { buyQuoteInfo, ethUsdPrice } = this.props; + const { buyQuoteInfo, ethUsdPrice, selectedAssetAmount } = this.props; const buyQuoteAccessor = oc(buyQuoteInfo); - const ethAssetPrice = buyQuoteAccessor.ethPerAssetPrice(); - const ethTokenFee = buyQuoteAccessor.feeEthAmount(); + const assetEthAmount = buyQuoteAccessor.assetEthAmount(); + const feeEthAmount = buyQuoteAccessor.feeEthAmount(); const totalEthAmount = buyQuoteAccessor.totalEthAmount(); + const perUnitEthAmount = + !_.isUndefined(assetEthAmount) && + !_.isUndefined(selectedAssetAmount) && + !selectedAssetAmount.eq(BIG_NUMBER_ZERO) + ? assetEthAmount.div(selectedAssetAmount).ceil() + : undefined; return ( <Container padding="20px" width="100%" flexGrow={1}> <Container marginBottom="10px"> @@ -40,14 +48,13 @@ export class OrderDetails extends React.Component<OrderDetailsProps> { </Container> <EthAmountRow rowLabel="Token Price" - ethAmount={ethAssetPrice} + ethAmount={perUnitEthAmount} ethUsdPrice={ethUsdPrice} - isEthAmountInBaseUnits={false} isLoading={this.props.isLoading} /> <EthAmountRow rowLabel="Fee" - ethAmount={ethTokenFee} + ethAmount={feeEthAmount} ethUsdPrice={ethUsdPrice} isLoading={this.props.isLoading} /> diff --git a/packages/instant/src/containers/latest_buy_quote_order_details.ts b/packages/instant/src/containers/latest_buy_quote_order_details.ts index 2b59ed3ae..2413e90aa 100644 --- a/packages/instant/src/containers/latest_buy_quote_order_details.ts +++ b/packages/instant/src/containers/latest_buy_quote_order_details.ts @@ -14,6 +14,7 @@ export interface LatestBuyQuoteOrderDetailsProps {} interface ConnectedState { buyQuoteInfo?: BuyQuoteInfo; + selectedAssetAmount?: BigNumber; ethUsdPrice?: BigNumber; isLoading: boolean; } @@ -21,6 +22,7 @@ interface ConnectedState { const mapStateToProps = (state: State, _ownProps: LatestBuyQuoteOrderDetailsProps): ConnectedState => ({ // use the worst case quote info buyQuoteInfo: oc(state).latestBuyQuote.worstCaseQuoteInfo(), + selectedAssetAmount: state.selectedAssetAmount, ethUsdPrice: state.ethUsdPrice, isLoading: state.quoteRequestState === AsyncProcessState.Pending, }); |