Files
plaidware-wms-web/src/redux/WarehouseRedux.js
Dikshajain39511 d32a8892e3 Feature/wms 48 (#46)
* create warehouse
* edit warehouse changes
* Update: linted and formatted
* add warehouse button
* Update: linted

Co-authored-by: [Diksha] <[diksha39511@gmail.com]>
Co-authored-by: Llewellyn Dsouza <lledsouza2209@gmail.com>
2022-02-07 16:57:53 +05:30

117 lines
3.8 KiB
JavaScript

import { createActions, createReducer } from 'reduxsauce';
import Immutable from 'seamless-immutable';
import _ from 'underscore';
import { getFetchingValue, getErrorValue } from '../services/Utils';
/* ------------- Types and Action Creators ------------- */
const { Types, Creators } = createActions({
warehouseDataAction: ['payload'],
warehouseDataSuccess: ['data'],
warehouseDataFailure: ['error'],
createWarehouseAction: ['payload'],
createWarehouseSuccess: ['data'],
createWarehouseFailure: ['error'],
editWarehouseAction: ['payload'],
editWarehouseSuccess: ['data'],
editWarehouseFailure: ['error']
});
export const WarehouseTypes = Types;
const WarehouseActions = Creators;
export default WarehouseActions;
/* ------------- Initial State ------------- */
export const INITIAL_STATE = Immutable({
warehouseDetail: [],
error: {},
createWarehouse: [],
createWarehouseLoading: false,
createWarehouseError: {},
editWarehouse: [],
editWarehouseLoading: false,
editWarehouseError: {}
});
/* ------------- Selectors ------------- */
export const WarehouseSelectors = {
getWarehouseDetail: (state) => state.warehouse.warehouseDetail,
createWarehouseDetail: (state) => state.warehouse.createWarehouse,
editWarehouseDetail: (state) => state.warehouse.editWarehouse
};
/* ------------- Reducers ------------- */
export const onWarehouseDataAction = (state, { payload }) =>
state.merge({
fetching: _.uniq([state.fetching, payload?.loader]),
error: getErrorValue(state?.error, payload?.loader)
});
export const onWarehouseDataSuccess = (state, { data }) =>
state.merge({
fetching: getFetchingValue(state.fetching, data?.loader),
error: getErrorValue(state?.error, data?.loader),
warehouseDetail: data.warehouseDetail
});
export const onWarehouseDataFailure = (state, { error }) =>
state.merge({
fetching: _.without(state.fetching, error?.loader),
error: { ...state.error, [error?.loader]: error?.error }
});
export const onCreateWarehouseAction = (state, { payload }) =>
state.merge({
fetching: _.uniq([state.fetching, payload?.loader]),
error: getErrorValue(state?.error, payload?.loader)
});
export const onCreateWarehouseSuccess = (state, { data }) =>
state.merge({
fetching: getFetchingValue(state.fetching, data?.loader),
error: getErrorValue(state?.error, data?.loader),
createWarehouse: data.createWarehouse
});
export const onCreateWarehouseFailure = (state, { error }) =>
state.merge({
fetching: _.without(state.fetching, error?.loader),
error: { ...state.error, [error?.loader]: error?.error }
});
export const onEditWarehouseAction = (state, { payload }) =>
state.merge({
fetching: _.uniq([state.fetching, payload?.loader]),
error: getErrorValue(state?.error, payload?.loader)
});
export const onEditWarehouseSuccess = (state, { data }) =>
state.merge({
fetching: getFetchingValue(state.fetching, data?.loader),
error: getErrorValue(state?.error, data?.loader),
editWarehouse: data.editWarehouse
});
export const onEditWarehouseFailure = (state, { error }) =>
state.merge({
fetching: _.without(state.fetching, error?.loader),
error: { ...state.error, [error?.loader]: error?.error }
});
/* ------------- Hookup Reducers To Types ------------- */
export const warehouseReducer = createReducer(INITIAL_STATE, {
[Types.WAREHOUSE_DATA_ACTION]: onWarehouseDataAction,
[Types.WAREHOUSE_DATA_SUCCESS]: onWarehouseDataSuccess,
[Types.WAREHOUSE_DATA_FAILURE]: onWarehouseDataFailure,
[Types.CREATE_WAREHOUSE_ACTION]: onCreateWarehouseAction,
[Types.CREATE_WAREHOUSE_SUCCESS]: onCreateWarehouseSuccess,
[Types.CREATE_WAREHOUSE_FAILURE]: onCreateWarehouseFailure,
[Types.EDIT_WAREHOUSE_ACTION]: onEditWarehouseAction,
[Types.EDIT_WAREHOUSE_SUCCESS]: onEditWarehouseSuccess,
[Types.EDIT_WAREHOUSE_FAILURE]: onEditWarehouseFailure
});