| @@ -159,6 +159,7 @@ export default { | |||
| }, | |||
| offers: { | |||
| getOffers: 'offers', | |||
| getOneOffer: 'offers/{id}', | |||
| addOffer: 'offers', | |||
| } | |||
| }; | |||
| @@ -4,6 +4,9 @@ import apiEndpoints from "./apiEndpoints" | |||
| export const attemptFetchOffers = () => { | |||
| return getRequest(apiEndpoints.offers.getOffers) | |||
| } | |||
| export const attemptFetchOneOffer = () => { | |||
| return getRequest(apiEndpoints.offers.getOneOffer); | |||
| } | |||
| export const attemptAddOffer = (payload) => { | |||
| return postRequest(apiEndpoints.offers.addOffer, payload) | |||
| } | |||
| @@ -1,12 +1,17 @@ | |||
| import { createClearType, createErrorType, createFetchType, createSuccessType } from "../actionHelpers"; | |||
| const OFFERS_SCOPE = "OFFERS_SCOPE"; | |||
| const ONE_OFFER_SCOPE = "ONE_OFFER_SCOPE" | |||
| export const OFFERS_FETCH = createFetchType(OFFERS_SCOPE); | |||
| export const OFFERS_SUCCESS = createSuccessType(OFFERS_SCOPE); | |||
| export const OFFERS_ERROR = createErrorType(OFFERS_SCOPE); | |||
| export const OFFERS_CLEAR = createClearType(OFFERS_SCOPE); | |||
| export const ONE_OFFER_FETCH = createFetchType(ONE_OFFER_SCOPE); | |||
| export const ONE_OFFER_SUCCESS = createSuccessType(ONE_OFFER_FETCH); | |||
| export const ONE_OFFER_ERROR = createErrorType(ONE_OFFER_SCOPE); | |||
| export const OFFERS_SET = "OFFERS_SET"; | |||
| export const OFFERS_ADD = "OFFERS_ADD"; | |||
| export const OFFER_ADD = "OFFER_ADD"; | |||
| @@ -1,4 +1,4 @@ | |||
| import { OFFERS_ADD, OFFERS_CLEAR, OFFERS_ERROR, OFFERS_FETCH, OFFERS_SET, OFFERS_SUCCESS, OFFER_ADD } from "./offersActionConstants"; | |||
| import { OFFERS_ADD, OFFERS_CLEAR, OFFERS_ERROR, OFFERS_FETCH, OFFERS_SET, OFFERS_SUCCESS, OFFER_ADD, ONE_OFFER_FETCH, ONE_OFFER_SUCCESS, ONE_OFFER_ERROR } from "./offersActionConstants"; | |||
| export const fetchOffers = (payload) => ({ | |||
| type: OFFERS_FETCH, | |||
| @@ -26,4 +26,19 @@ export const addOffers = (payload) => ({ | |||
| export const addOffer = (payload) => ({ | |||
| type: OFFER_ADD, | |||
| payload | |||
| }) | |||
| // | |||
| export const fetchOneOffer = (payload) => ({ | |||
| type: ONE_OFFER_FETCH, | |||
| payload | |||
| }) | |||
| export const fetchOneOfferError = (payload) => ({ | |||
| type: ONE_OFFER_ERROR, | |||
| payload | |||
| }) | |||
| export const fetchOneOfferSuccess = (payload) => ({ | |||
| type: ONE_OFFER_SUCCESS, | |||
| payload | |||
| }) | |||
| @@ -4,6 +4,9 @@ import { | |||
| OFFERS_ERROR, | |||
| OFFERS_SET, | |||
| OFFER_ADD, | |||
| ONE_OFFER_FETCH, | |||
| ONE_OFFER_ERROR, | |||
| ONE_OFFER_SUCCESS | |||
| } from "../../actions/offers/offersActionConstants"; | |||
| import createReducer from "../../utils/createReducer"; | |||
| @@ -11,6 +14,7 @@ const initialState = { | |||
| offers: [], | |||
| error: "", | |||
| newOffer: "", | |||
| selectedOffer:"", | |||
| }; | |||
| export default createReducer( | |||
| @@ -20,6 +24,10 @@ export default createReducer( | |||
| [OFFERS_SET]: setOffers, | |||
| [OFFERS_ADD]: addOffers, | |||
| [OFFER_ADD]: addOffer, | |||
| [ONE_OFFER_ERROR]: fetchOneOfferError, | |||
| [ONE_OFFER_SUCCESS]: fetchOneOfferSuccess, | |||
| [ONE_OFFER_FETCH]: fetchOneOffer, | |||
| }, | |||
| initialState | |||
| ); | |||
| @@ -49,3 +57,22 @@ function addOffer(state, action) { | |||
| offer: action.payload | |||
| } | |||
| } | |||
| function fetchOneOffer(state,action) { | |||
| return { | |||
| ...state, | |||
| offer: action.payload | |||
| } | |||
| } | |||
| function fetchOneOfferSuccess( state, action) { | |||
| return { | |||
| ...state, | |||
| offer: action.payload | |||
| } | |||
| } | |||
| function fetchOneOfferError (strate, action) { | |||
| return { | |||
| ...state, | |||
| error: action.payload | |||
| } | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| import { all, takeLatest, call, put } from "@redux-saga/core/effects"; | |||
| import { attemptAddOffer, attemptFetchOffers } from "../../request/offersRequest"; | |||
| import { OFFERS_FETCH, OFFER_ADD } from "../actions/offers/offersActionConstants"; | |||
| import { OFFERS_FETCH, OFFER_ADD, ONE_OFFER_FETCH } from "../actions/offers/offersActionConstants"; | |||
| import { setOffers } from "../actions/offers/offersActions"; | |||
| function* fetchOffers() { | |||
| @@ -13,6 +13,14 @@ function* fetchOffers() { | |||
| } | |||
| } | |||
| function* fetchOneOffer() { | |||
| try { | |||
| const data = yield call(attemptFetchOneOffer) | |||
| } catch (e) { | |||
| console.log(e); | |||
| } | |||
| } | |||
| function* createOffer(payload) { | |||
| try { | |||
| const data = yield call(attemptAddOffer, payload); | |||
| @@ -24,7 +32,11 @@ function* createOffer(payload) { | |||
| } | |||
| export default function* offersSaga() { | |||
| yield all([takeLatest(OFFERS_FETCH, fetchOffers), | |||
| takeLatest(OFFER_ADD, createOffer)]); | |||
| yield all( | |||
| [ | |||
| takeLatest(OFFERS_FETCH, fetchOffers), | |||
| takeLatest(OFFER_ADD, createOffer), | |||
| takeLatest(ONE_OFFER_FETCH, fetchOneOffer) | |||
| ]); | |||
| } | |||
| @@ -7,6 +7,11 @@ export const selectOffers = createSelector( | |||
| (state) => state.offers, | |||
| ); | |||
| export const selectOffer = createSelector( | |||
| offersSelector, | |||
| (state) => state.selectedOffer, | |||
| ); | |||
| export const selectOffersError = createSelector( | |||
| offersSelector, | |||
| (state) => state.error, | |||