Sfoglia il codice sorgente

start redux connect

pull/5/head
Pavle Golubovic 3 anni fa
parent
commit
cb96e06ca9

+ 1
- 0
src/request/apiEndpoints.js Vedi File

@@ -159,6 +159,7 @@ export default {
},
offers: {
getOffers: 'offers',
getOneOffer: 'offers/{id}',
addOffer: 'offers',
}
};

+ 3
- 0
src/request/offersRequest.js Vedi File

@@ -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)
}

+ 5
- 0
src/store/actions/offers/offersActionConstants.js Vedi File

@@ -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";

+ 16
- 1
src/store/actions/offers/offersActions.js Vedi File

@@ -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
})

+ 27
- 0
src/store/reducers/offers/offersReducer.js Vedi File

@@ -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
}
}

+ 15
- 3
src/store/saga/offersSaga.js Vedi File

@@ -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)
]);
}


+ 5
- 0
src/store/selectors/offersSelectors.js Vedi File

@@ -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,

Loading…
Annulla
Salva