Files
bflows-bandi-fe/src/store/actions.js
2024-10-15 11:43:29 +02:00

59 lines
1.9 KiB
JavaScript

import { head } from 'ramda';
export const actionsAlpha = (set, get, api) => ({
setAsyncRequest: () => {
const num = get.isAsyncRequest();
set.isAsyncRequest(num + 1);
},
unsetAsyncRequest: () => {
const num = get.isAsyncRequest();
set.isAsyncRequest(num - 1 < 0 ? 0 : num - 1);
},
})
export const actionsBeta = (set, get, api) => ({
setAuthData: ({ userData, token }) => {
set.userData(userData);
set.token(token);
},
doLogout: () => {
set.userData({});
set.token('');
},
removeElement: (id) => {
const elements = get.formElements();
const newElements = elements.filter(o => o.id !== id);
set.formElements(newElements);
},
moveElement: (dragIndex, hoverIndex, item) => {
const prevFields = get.formElements();
if (dragIndex === -1) {
const configs = get.elementItems();
const itemCfg = head(configs.filter(o => o.id === item.dbId));
const newItem = {
...itemCfg,
id: item.id,
dbId: item.dbId
}
const newElements = prevFields.toSpliced(hoverIndex, 0, newItem);
set.formElements(newElements);
} else {
let newFields = prevFields.toSpliced(dragIndex, 1);
const newElements = newFields.toSpliced(hoverIndex, 0, prevFields[dragIndex]);
set.formElements(newElements);
}
},
addFlowData: (data) => {
const initial = get.flowData();
const exists = initial ? initial.filter(o => parseInt(o.formId) === parseInt(data.formId)) : [];
if (exists.length) {
const newData = initial.map(o => parseInt(o.formId) === parseInt(data.formId) ? data : o);
set.flowData(newData);
} else {
set.flowData([...initial, data]);
}
}
});