69 lines
2.0 KiB
JavaScript
69 lines
2.0 KiB
JavaScript
import { Map } from 'immutable';
|
|
import { createSelector } from 'reselect';
|
|
|
|
import { getItemsIdsWithNoBids, getMyBidItemIds, getMyWinningItemIds } from './auctions.js';
|
|
|
|
const getState = (state) => state;
|
|
|
|
export const getItem = (state, itemId) => state.getIn(['items', itemId], false);
|
|
|
|
export const getItems = createSelector(
|
|
[getState],
|
|
(state) => state.get('items') || new Map(),
|
|
);
|
|
|
|
export const getItemsAsList = createSelector(
|
|
[getItems],
|
|
(itemsAsMap) => itemsAsMap.toList(),
|
|
);
|
|
|
|
export const getAuctionItems = createSelector(
|
|
[getState],
|
|
(state) => state.get('items').filter(i => i.type === 'auction') || new Map(),
|
|
);
|
|
|
|
export const getAuctionItemsAsList = createSelector(
|
|
[getAuctionItems],
|
|
(auctionItemsAsMap) => auctionItemsAsMap.toList(),
|
|
);
|
|
|
|
export const getAuctionItemsUserIsBidding = createSelector(
|
|
[getAuctionItems, getMyBidItemIds],
|
|
(items, myBids) => items.filter(i => myBids.indexOf(i.id)) || new Map(),
|
|
);
|
|
|
|
export const getAuctionItemsUserIsBiddingAsList = createSelector(
|
|
[getAuctionItemsUserIsBidding],
|
|
(auctionItemsAsMap) => auctionItemsAsMap.toList(),
|
|
);
|
|
|
|
export const getAuctionItemsUserIsWinning = createSelector(
|
|
[getAuctionItemsUserIsBidding, getMyWinningItemIds],
|
|
(items, myWins) => items.filter(i => myWins.indexOf(i.id)) || new Map(),
|
|
);
|
|
|
|
export const getAuctionItemsUserIsWinningAsList = createSelector(
|
|
[getAuctionItemsUserIsWinning],
|
|
(auctionItemsAsMap) => auctionItemsAsMap.toList(),
|
|
);
|
|
|
|
export const getAuctionItemsWithNoBids = createSelector(
|
|
[getAuctionItems, getItemsIdsWithNoBids],
|
|
(items, noBids) => items.filter(i => noBids.indexOf(i.id)) || new Map(),
|
|
);
|
|
|
|
export const getAuctionItemsWithNoBidsAsList = createSelector(
|
|
[getAuctionItemsWithNoBids],
|
|
(auctionItemsAsMap) => auctionItemsAsMap.toList(),
|
|
);
|
|
|
|
export const getTicketItems = createSelector(
|
|
[getState],
|
|
(state) => state.get('items').filter(i => i.type === 'ticket') || new Map(),
|
|
);
|
|
|
|
export const getTicketItemsAsList = createSelector(
|
|
[getTicketItems],
|
|
(ticketItemsAsMap) => ticketItemsAsMap.toList(),
|
|
);
|