diff --git a/src/actions/index.js b/src/actions/index.js index 3b8c69a0c..c3fdfa1d7 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -7,6 +7,7 @@ import serialize from 'Utils/serialize'; import preparePairs from 'Utils/preparePairs'; import i18n from 'Src/i18n'; import generateDepth from '../utils/generateDepth'; +import isFiatOrder from '../utils/isFiatOrder'; export const errorAlert = payload => ({ type: types.ERROR_ALERT, @@ -407,7 +408,8 @@ export const fetchOrder = orderId => async dispatch => { return request .then(res => { const order = res.data; - dispatch(setOrder(order)); + const isFiat = isFiatOrder(order); + dispatch(setOrder({ ...order, isFiat })); }) .catch(error => { if (error.response && error.response.status === 429) { diff --git a/src/components/Home/Hero/ExchangeWidget/ExchangeWidget.js b/src/components/Home/Hero/ExchangeWidget/ExchangeWidget.js index 0016b1d65..623f70e5d 100644 --- a/src/components/Home/Hero/ExchangeWidget/ExchangeWidget.js +++ b/src/components/Home/Hero/ExchangeWidget/ExchangeWidget.js @@ -14,6 +14,7 @@ import CoinInput from './CoinInput/CoinInput'; import CoinSwitch from './CoinSwitch/CoinSwitch'; import styles from './ExchangeWidget.scss'; +import isFiatOrder from '../../../../utils/isFiatOrder'; class ExchangeWidget extends Component { constructor(props) { @@ -48,7 +49,10 @@ class ExchangeWidget extends Component { axios .post(`${config.API_BASE_URL}/orders/`, data) .then(response => { - this.props.setOrder(response.data); + const orderData = response.data; + const isFiat = isFiatOrder(orderData); + this.props.setOrder({ ...orderData, isFiat }); + this.setState({ orderRef: response.data.unique_reference, orderPlaced: true, @@ -73,6 +77,7 @@ class ExchangeWidget extends Component { amount_quote: parseFloat(this.props.price.receive), created_at: new Date(), }; + let orderHistory = localStorage['orderHistory']; if (!orderHistory) { orderHistory = [newOrder]; diff --git a/src/components/Order/Order.js b/src/components/Order/Order.js index 6d5ee95be..d7c93caca 100644 --- a/src/components/Order/Order.js +++ b/src/components/Order/Order.js @@ -5,22 +5,20 @@ import { Redirect } from 'react-router-dom'; import { bindActionCreators } from 'redux'; import { fetchOrder, fetchPrice, setOrder, fetchCoinDetails, resetWallet } from 'Actions'; -import isFiatOrder from 'Utils/isFiatOrder'; -import config from 'Config'; - import OrderMain from './OrderMain/OrderMain'; import OrderTop from './OrderTop/OrderTop'; import OrderLoading from './OrderLoading/OrderLoading'; import OrderCoinsProcessed from './OrderCoinsProcessed/OrderCoinsProcessed'; import OrderCta from './OrderCta/OrderCta'; +import withOrderDataProvider from './withOrderDataProvider'; import styles from './Order.scss'; class Order extends Component { constructor(props) { super(props); - + if (this.props.order && this.props.match.params.orderRef === this.props.order.unique_reference) { this.state = { order: this.props.order }; } else { @@ -28,32 +26,13 @@ class Order extends Component { } } - componentDidMount() { - this.props.fetchOrder(this.props.match.params.orderRef); - this.props.fetchCoinDetails(); - } - - componentDidUpdate(prevProps) { - if (this.props.location !== prevProps.location) { - clearTimeout(this.timeout); - clearInterval(this.interval); - this.props.fetchOrder(this.props.match.params.orderRef); - } - } - componentWillUnmount() { - clearInterval(this.interval); - clearTimeout(this.timeout); this.props.resetWallet(); } UNSAFE_componentWillReceiveProps(nextProps) { this.setState({ order: nextProps.order }); - - this.timeout = setTimeout(() => { - this.props.fetchOrder(this.props.match.params.orderRef); - }, config.ORDER_DETAILS_FETCH_INTERVAL); - + if (nextProps.order !== 429) { this.setState({ order: nextProps.order }); @@ -70,7 +49,7 @@ class Order extends Component { render() { return ( -