Files
bigcapital/client/src/store/resources/resources.reducer.js
Ahmed Bouhuolia 322af97d77 feat: remove SET_DASHBOARD_REQUEST_LOADING reducer.
feat: fix dropdown filter.
feat: fix fetch resource data.
2020-10-20 19:58:24 +02:00

71 lines
1.5 KiB
JavaScript

import { createReducer } from "@reduxjs/toolkit";
import t from 'store/types';
const initialState = {
data: {
resources: {},
},
fields: {},
columns: {},
resourceFields: {},
resourceColumns: {},
metadata: {
'accounts': {
label: 'Accounts',
baseRoute: '/accounts',
},
'items': {
label: 'Items',
baseRoute: '/items',
},
'manual_journals': {
label: 'Journals',
baseRoute: '/manual-journals',
}
}
};
export default createReducer(initialState, {
[t.RESOURCE_COLUMNS_SET]: (state, action) => {
const _columns = {};
action.columns.forEach((column) => {
_columns[column.id] = column;
});
state.columns = {
...state.columns,
..._columns,
};
state.resourceColumns[action.resource_slug] = action.columns.map(c => c.id);
},
[t.RESOURCE_FIELDS_SET]: (state, action) => {
const _fields = {};
action.fields.forEach((field) => {
_fields[field.key] = field;
});
state.fields = {
...state.fields,
..._fields,
};
state.resourceFields[action.resource_slug] = action.fields.map(f => f.key);
},
[t.RESOURCE_DATA_SET]: (state, action) => {
const { data, resourceKey } = action.payload;
const _data = {};
data.forEach((item) => {
_data[item.id] = item;
});
const order = data.map((item) => item.id);
state.data.resources[resourceKey] = {
...(state.data.resources[resourceKey] || {}),
data: _data,
order,
};
},
});