55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
import { placeBid as placeBidApi } from '../api/bid.js';
|
|
import {
|
|
BID_FAILURE,
|
|
BID_SUCCESS,
|
|
PLACE_BID,
|
|
SET_AUCTION_FILTER,
|
|
SET_AUCTION_VIEW_MODE,
|
|
} from '../constants/actionTypes.js';
|
|
import { getActiveEventId } from '../selectors/activeEvent.js';
|
|
import { getAuthToken } from '../selectors/auth.js';
|
|
|
|
const placeBidFailure = (payload) => ({
|
|
type: BID_FAILURE,
|
|
payload,
|
|
});
|
|
|
|
const placeBidSuccess = (payload) => ({
|
|
type: BID_SUCCESS,
|
|
payload,
|
|
});
|
|
|
|
const handleBidFailure = (error) => (dispatch) => {
|
|
console.error('[postBid]', error);
|
|
dispatch(placeBidFailure(error));
|
|
};
|
|
|
|
const handleBidSuccess = (result) => (dispatch) => {
|
|
dispatch(placeBidSuccess(result));
|
|
};
|
|
|
|
const startPlacingBid = (itemId) => ({
|
|
type: PLACE_BID,
|
|
payload: itemId,
|
|
});
|
|
|
|
export const changeFilterMode = (payload) => ({
|
|
type: SET_AUCTION_FILTER,
|
|
payload,
|
|
});
|
|
|
|
export const changeViewMode = (payload) => ({
|
|
type: SET_AUCTION_VIEW_MODE,
|
|
payload,
|
|
});
|
|
|
|
export const placeBid = ({ bidAmount, itemId, maxAmount }) => (dispatch, getState) => {
|
|
const authToken = getAuthToken(getState());
|
|
const eventId = getActiveEventId(getState());
|
|
|
|
dispatch(startPlacingBid(itemId));
|
|
placeBidApi({ bidAmount, eventId, itemId, maxAmount }, authToken)
|
|
.then((payload) => dispatch(handleBidSuccess(payload)))
|
|
.catch((err) => dispatch(handleBidFailure(err)));
|
|
};
|