You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.9 KiB
80 lines
1.9 KiB
// @flow
|
|
|
|
import type { BigNumber } from 'bignumber.js'
|
|
import React, { PureComponent } from 'react'
|
|
import { connect } from 'react-redux'
|
|
import type { CryptoCurrency, Currency } from '@ledgerhq/live-common/lib/types'
|
|
|
|
import {
|
|
counterValueCurrencySelector,
|
|
currencySettingsSelector,
|
|
counterValueExchangeSelector,
|
|
intermediaryCurrency,
|
|
} from 'reducers/settings'
|
|
import CounterValues from 'helpers/countervalues'
|
|
|
|
import FormattedVal from 'components/base/FormattedVal'
|
|
|
|
import type { State } from 'reducers'
|
|
|
|
type OwnProps = {
|
|
// wich market to query
|
|
currency: CryptoCurrency,
|
|
|
|
// when? if not given: take latest
|
|
date?: Date,
|
|
|
|
value: BigNumber,
|
|
|
|
alwaysShowSign?: boolean,
|
|
}
|
|
|
|
type Props = OwnProps & {
|
|
// from reducers
|
|
counterValueCurrency: Currency,
|
|
value: ?number,
|
|
}
|
|
|
|
const mapStateToProps = (state: State, props: OwnProps) => {
|
|
const { currency, value, date } = props
|
|
const counterValueCurrency = counterValueCurrencySelector(state)
|
|
const fromExchange = currencySettingsSelector(state, { currency }).exchange
|
|
const toExchange = counterValueExchangeSelector(state)
|
|
const counterValue = CounterValues.calculateWithIntermediarySelector(state, {
|
|
from: currency,
|
|
fromExchange,
|
|
intermediary: intermediaryCurrency,
|
|
toExchange,
|
|
to: counterValueCurrency,
|
|
value,
|
|
date,
|
|
})
|
|
|
|
return {
|
|
counterValueCurrency,
|
|
value: counterValue,
|
|
}
|
|
}
|
|
|
|
class CounterValue extends PureComponent<Props> {
|
|
static defaultProps = {
|
|
alwaysShowSign: true, // FIXME this shouldn't be true by default
|
|
}
|
|
render() {
|
|
const { value, counterValueCurrency, date, alwaysShowSign, ...props } = this.props
|
|
if (!value) {
|
|
return null
|
|
}
|
|
return (
|
|
<FormattedVal
|
|
val={value}
|
|
unit={counterValueCurrency.units[0]}
|
|
showCode
|
|
alwaysShowSign={alwaysShowSign}
|
|
{...props}
|
|
/>
|
|
)
|
|
}
|
|
}
|
|
|
|
export default connect(mapStateToProps)(CounterValue)
|
|
|