1
0
mirror of https://github.com/fspc/workstand.git synced 2025-02-23 09:13:23 -05:00

Update bike details.

This commit is contained in:
Drew Larson 2017-04-09 18:12:51 -06:00
parent 1dbefb2d4b
commit 780825b828
3 changed files with 12 additions and 7 deletions

View File

@ -10,4 +10,5 @@ export const setBikeIsSaving = createAction('set bike.isSaving');
export const setBikeSaveFailed = createAction('set bike.isSaving');
export const editBike = createAction('edit bike');
export const createBike = createAction('create bike');
export const saveBike = createAction('save bike');
export const saveBike = createAction('save bike');
export const mergeBike = createAction('merge bike');

View File

@ -1,4 +1,4 @@
import { setBikes, setBikesFetched, setBikesIsFetching, setBikesFetchFailed, createBike, editBike } from './actions';
import { setBikes, setBikesFetched, setBikesIsFetching, setBikesFetchFailed, createBike, editBike, mergeBike } from './actions';
import { handleActions } from 'redux-actions';
export default handleActions({
@ -34,4 +34,8 @@ export default handleActions({
create: true,
},
}),
[mergeBike]: (state, action) => ({
...state,
entities: { ...state.entities, ...action.payload.entities.bikes },
})
}, { entities: {}, form: { bike: null, create: undefined }, isFetching: false, fetched: false, fetchFailed: undefined });

View File

@ -1,6 +1,6 @@
import { call, put, takeEvery, takeLatest } from 'redux-saga/effects';
import { fetchBikes as fetchBikesAction, setBikes, setBikesIsFetching, setBikesFetched,
setBikesFetchFailed, setBikeSaved, setBikeSaveFailed, setBikeIsSaving, saveBike as saveBikeAction } from './actions';
setBikesFetchFailed, setBikeSaved, setBikeSaveFailed, setBikeIsSaving, saveBike as saveBikeAction, mergeBike } from './actions';
import { normalize, denormalize } from 'normalizr';
import * as schema from './schema';
import Api from './services';
@ -28,14 +28,14 @@ function* watchFetchBikes() {
function* saveBike(action) {
try {
yield put({ type: setBikeIsSaving.toString(), payload: true });
const bike = yield call(Api.saveBike(action.payload));
yield put({ type: setBikes.toString(), payload: normalize([state])})
yield put({ type: setBikeSaved, payload: true})
const bike = yield call(Api.saveBike, action.payload);
yield put({ type: mergeBike.toString(), payload: normalize([bike], schema.bikes)})
yield put({ type: setBikeSaved.toString(), payload: true})
} catch (e) {
yield put({ type: setBikeSaveFailed, payload: false });
throw(e);
} finally {
yield put({ type: setBikeIsSaving.toSource(), payload: false });
yield put({ type: setBikeIsSaving.toString(), payload: false });
}
}