Skip to content

Commit

Permalink
#633 Add user open orders:
Browse files Browse the repository at this point in the history
 - update selected user open orders group
  • Loading branch information
priecint committed Jul 18, 2016
1 parent 6253481 commit 53d83ff
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/modules/bids-asks/actions/cancel-order.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Author: priecint
*/
// import * as augurJS from '../../../services/augurjs';

// export const CANCEL_ORDER = 'CANCEL_ORDER';

export default function (orderId) {
return (dispatch, getState) => {
console.log('todo cancelling %o', orderId);
};
}
3 changes: 3 additions & 0 deletions src/modules/market/selectors/market.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import { selectMarketLink } from '../../link/selectors/links';
import { selectOutcomeTradeOrders } from '../../trade/selectors/trade-orders';
import { selectTradeSummary } from '../../trade/selectors/trade-summary';
import { selectPositionsSummary } from '../../positions/selectors/positions-summary';
import selectUserOpenOrders from '../../user-open-orders/selectors/user-open-orders';

import { selectPriceTimeSeries } from '../../market/selectors/price-time-series';

Expand Down Expand Up @@ -212,6 +213,8 @@ export const assembleMarket = memoizerific(1000)((
outcome.topBid = selectTopBid(orderBook);
outcome.topAsk = selectTopAsk(orderBook);

outcome.userOpenOrders = selectUserOpenOrders(outcomeID, orderBook);

tradeOrders = tradeOrders.concat(outcomeTradeOrders);

return outcome;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Author: priecint
*/
export const UPDATE_SELECTED_USER_OPEN_ORDERS_GROUP = 'UPDATE_SELECTED_USER_OPEN_ORDERS_GROUP';

export default function (selectedUserOpenOrdersGroup) {
return {
type: UPDATE_SELECTED_USER_OPEN_ORDERS_GROUP,
selectedUserOpenOrdersGroup
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { UPDATE_SELECTED_USER_OPEN_ORDERS_GROUP } from '../actions/update-selected-user-open-orders-group';

export default (selectedUserOpenOrdersGroup = null, action) => {
switch (action.type) {
case UPDATE_SELECTED_USER_OPEN_ORDERS_GROUP:
return action.selectedUserOpenOrdersGroup;
default:
return selectedUserOpenOrdersGroup;
}
};

68 changes: 68 additions & 0 deletions src/modules/user-open-orders/selectors/user-open-orders.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Author: priecint
*/
import memoizerific from 'memoizerific';
import store from '../../../store';
import updateSelectedOpenOrdersGroup from '../actions/update-selected-user-open-orders-group';
import { BID, ASK } from '../../bids-asks/constants/bids-asks-types';

export default function (outcomeId, outcomeOrderBook) {
const { loginAccount } = store.getState();

return selectUserOpenOrders(outcomeId, loginAccount, outcomeOrderBook);
}

export const selectUserOpenOrders = memoizerific(10)((outcomeId, loginAccount, outcomeOrderBook) => {
const isUserLoggedIn = loginAccount != null;

if (!isUserLoggedIn || outcomeOrderBook == null || (outcomeOrderBook.bids.length === 0 && outcomeOrderBook.asks.length === 0)) {
return {
items: [],
selectedUserOpenOrdersGroup: store.getState().selectedUserOpenOrdersGroup,
cancelOrder: selectCancelOrder(outcomeId),
updateSelectedOpenOrdersGroup: selectUpdateSelectedOpenOrdersGroup(store.dispatch)
};
}

const userBids = outcomeOrderBook.bids
.filter(userOrderFilter)
.map(order => {
const type = BID;
// todo
return {
type
};
});

const userAsks = outcomeOrderBook.asks
.filter(userOrderFilter)
.map(order => {
// todo
const type = ASK;
return {
type
};
});

return {
items: userBids.concat(userAsks),
selectedUserOpenOrdersGroup: store.getState().selectedUserOpenOrdersGroup,
cancelOrder: selectCancelOrder(outcomeId),
updateSelectedOpenOrdersGroup: selectUpdateSelectedOpenOrdersGroup(store.dispatch)
};
});

export const selectUpdateSelectedOpenOrdersGroup = memoizerific(1)((dispatch) => (
outcomeId => dispatch(updateSelectedOpenOrdersGroup(outcomeId))
));

export const selectCancelOrder = memoizerific(1)((dispatch) => (
(orderId) => console.log('cancelling %o', orderId)
// return (orderId) => dispatch(cancelOrder(orderId));
));

function userOrderFilter(order) {
return (
order.isOfCurrentUser
);
}
4 changes: 3 additions & 1 deletion src/reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import outcomes from './modules/markets/reducers/outcomes';
import marketOrderBooks from './modules/bids-asks/reducers/market-order-books';
import accountTrades from './modules/positions/reducers/account-trades';
import transactionsData from './modules/transactions/reducers/transactions-data';
import selectedUserOpenOrdersGroup from './modules/user-open-orders/reducers/selected-user-open-orders-group';

import selectedMarketsHeader from './modules/markets/reducers/selected-markets-header';
import selectedMarketID from './modules/markets/reducers/selected-market-id';
Expand Down Expand Up @@ -63,5 +64,6 @@ module.exports = {
outcomes,
marketOrderBooks,
accountTrades,
transactionsData
transactionsData,
selectedUserOpenOrdersGroup
};

0 comments on commit 53d83ff

Please sign in to comment.