Skip to content

Commit

Permalink
fix(exchange history trades values)
Browse files Browse the repository at this point in the history
  • Loading branch information
sixtedemaupeou committed May 4, 2018
1 parent 934bdd6 commit bdeb094
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { cancel, call, fork, put, select } from 'redux-saga/effects'
import { cancel, call, fork, put, race, select, take } from 'redux-saga/effects'
import { delay } from 'redux-saga'
import { equals, identity, path, prop } from 'ramda'
import { actions, selectors } from 'data'
import { actions, actionTypes, selectors } from 'data'

export default ({ api, coreSagas }) => {
const updateTradeStatus = function * (depositAddress) {
Expand All @@ -28,10 +28,14 @@ export default ({ api, coreSagas }) => {
for (let i = 0; i < trades.length; i++) {
const trade = trades[i]
const depositAddress = path(['quote', 'deposit'], trade)
const orderId = path(['quote', 'orderId'], trade)
try {
yield fork(updateTradeStatus, depositAddress)
yield call(coreSagas.kvStore.shapeShift.fetchShapeshiftTrade, depositAddress)
yield race({
success: take(actionTypes.core.kvStore.shapeShift.FETCH_SHAPESHIFT_TRADE_SUCCESS),
failure: take(actionTypes.core.kvStore.shapeShift.FETCH_SHAPESHIFT_TRADE_FAILURE)
})
} catch (e) {
const orderId = path(['quote', 'orderId'], trade)
yield put(actions.alerts.displayError(`Could not fetch trade [${orderId}] status.`))
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import List from './template'

class ListContainer extends React.PureComponent {
componentDidMount () {
this.props.actions.initialized(concat(this.props.incomplete, this.props.complete))
const tradesWithDeposit = concat(this.props.incomplete, this.props.complete)
this.props.actions.initialized(tradesWithDeposit)
}

render () {
const { complete, incomplete } = this.props
const { complete, incomplete, error } = this.props
const allIncomplete = concat(incomplete, error)

return <List complete={complete} incomplete={incomplete} />
return <List complete={complete} incomplete={allIncomplete} />
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Success from './template.success'
class ExchangeHistoryContainer extends React.PureComponent {
render () {
return this.props.data.cata({
Success: (value) => <Success complete={value.complete} incomplete={value.incomplete} />,
Success: (value) => <Success trades={value} />,
Failure: (message) => <Error>{message}</Error>,
Loading: () => <Loading />,
NotAsked: () => <Loading />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { difference, equals, filter, lift, or, prop } from 'ramda'
import { anyPass, curry, equals, filter, lift, map, prop } from 'ramda'
import { selectors } from 'data'

const getTradesWithStatus = (trades, status1, status2) => filter(trade => or(equals(prop('status', trade), status1), equals(prop('status', trade), status2)), trades)
const getTradesWithStatus = curry((statuses, trades) =>
filter(trade => anyPass(map(equals, statuses))(prop('status', trade)), trades))

export const getData = (state) => {
const trades = selectors.core.kvStore.shapeShift.getTrades(state)
const completedTrades = trades.map(t => getTradesWithStatus(t, 'complete', 'resolved'))
const incompleteTrades = lift((t, completed) => difference(t, completed))(trades, completedTrades)
return lift((c, i) => ({ complete: c, incomplete: i }))(completedTrades, incompleteTrades)
const completedTrades = lift(getTradesWithStatus(['complete', 'resolved']))(trades)
const errorTrades = lift(getTradesWithStatus(['error', 'failed']))(trades)
const incompleteTrades = lift(getTradesWithStatus(['no_deposits']))(trades)
return lift((c, i, e) =>
({ complete: c, incomplete: i, error: e }))(completedTrades, incompleteTrades, errorTrades)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import Empty from './Empty'
import List from './List'

const Success = props => {
const { complete, incomplete } = props
const { complete, incomplete, error } = props.trades

return (
<ExchangeLayout>
{isEmpty(complete) && isEmpty(incomplete)
{isEmpty(complete) && isEmpty(incomplete) && isEmpty(error)
? <Empty />
: <List complete={complete} incomplete={incomplete} />
: <List complete={complete} incomplete={incomplete} error={error} />
}
</ExchangeLayout>
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { over, mapped, set, view } from 'ramda-lens'
import { append, compose, findIndex, path, equals, lensIndex, toLower } from 'ramda'
import { append, compose, findIndex, identity, path, equals, lensIndex, toLower } from 'ramda'
import * as AT from './actionTypes'
import Remote from '../../../remote'
import { lensProp } from '../../../types/util'
Expand Down Expand Up @@ -50,7 +50,6 @@ export default (state = INITIAL_STATE, action) => {
const { address, incomingCoin, outgoingCoin, incomingType, outgoingType } = payload
return state.map(trades => {
const lensTrades = compose(lensProp('value'), lensProp('trades'))

const i = findIndex(
compose(
equals(address),
Expand All @@ -66,9 +65,12 @@ export default (state = INITIAL_STATE, action) => {
value)

return compose(
setPropValue('depositAmount', incomingCoin),
setPropValue('withdrawalAmount', outgoingCoin),
setPropValue('pair', `${toLower(incomingType)}_${toLower(outgoingType)}`))(trades)
incomingCoin ? setPropValue('depositAmount', incomingCoin) : identity,
outgoingCoin ? setPropValue('withdrawalAmount', outgoingCoin) : identity,
(incomingType && outgoingType)
? setPropValue('pair', `${toLower(incomingType)}_${toLower(outgoingType)}`)
: identity
)(trades)
})
}
default:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@

import { takeLatest } from 'redux-saga/effects'
import { takeEvery, takeLatest } from 'redux-saga/effects'
import * as AT from './actionTypes'
import sagas from './sagas'

export default ({ api }) => {
const kvStoreShapeshiftSagas = sagas({ api })

return function * () {
yield takeEvery(AT.FETCH_SHAPESHIFT_TRADE, kvStoreShapeshiftSagas.fetchShapeshiftTrade)
yield takeLatest(AT.FETCH_METADATA_SHAPESHIFT, kvStoreShapeshiftSagas.fetchMetadataShapeshift)
}
}

0 comments on commit bdeb094

Please sign in to comment.