src/wecreate/software/list/list.actions.js
import {
ADD_ITEM,
ADD_ITEMS,
INSERT_ITEM,
REMOVE_ITEM,
REMOVE_ITEM_BY_KEY,
RESET_LIST,
SET_LIST,
UPDATE_ITEM,
UPDATE_ITEM_BY_KEY,
UPDATE_ITEMS_BY_KEY,
UPDATE_VALUE_ALL_ITEMS,
} from "./list.types"
/**
* @desc action creator to insert item
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to insert item
* @param {Object} param.item - item to insert
* @param {Number} param.index - index to insert item at
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const insertItemAction = ({ item, index, reducerName, meta }) => ({
type: INSERT_ITEM,
payload: { item, index },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to remove item
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to remove item
* @param {Number} param.index - index to remove item at
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const removeItemAction = ({ index, reducerName, meta }) => ({
type: REMOVE_ITEM,
payload: { index },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to remove item by key
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to remove item by key
* @param {Object} param.item - item to remove by key
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const removeItemByKeyAction = ({ item, reducerName, meta }) => ({
type: REMOVE_ITEM_BY_KEY,
payload: { item },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to update item
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to update item
* @param {Object} param.item - item to update
* @param {Number} param.index - index to update item at
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const updateItemAction = ({ item, index, reducerName, meta }) => ({
type: UPDATE_ITEM,
payload: { item, index },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to update items by key
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to update items by key
* @param {Array} param.items - items to update
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const updateItemsByKeyAction = ({ items, reducerName, meta }) => ({
type: UPDATE_ITEMS_BY_KEY,
payload: { items },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to update item by key
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to update item by key
* @param {Object} param.item - item to update
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const updateItemByKeyAction = ({ item, reducerName, meta }) => ({
type: UPDATE_ITEM_BY_KEY,
payload: { item },
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to update a value in all items in the reducer
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to update a value in all items
* @param {Array} param.keyValuePairs - key/value pair to update on all items
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const updateValueAllItemsAction = ({ keyValuePairs, reducerName, meta }) => ({
type: UPDATE_VALUE_ALL_ITEMS,
payload: keyValuePairs,
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to reset list
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to reset list
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const resetListAction = ({ reducerName, meta }) => ({
type: RESET_LIST,
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to set list
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to set list
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const setListAction = ({ reducerName, payload, meta }) => ({
type: SET_LIST,
payload,
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to add item to end of list
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to add item to
* @param {Object} param.item - item to add to end of list
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const addItemAction = ({ item, reducerName, meta }) => ({
type: ADD_ITEM,
payload: item,
meta: {
reducerName,
...meta,
},
})
/**
* @desc action creator to add items to end of list
* @param {Object} param - this is object param
* @param {String} param.reducerName - reducer name to add items to
* @param {Object} param.items - items to add to end of list
* @param {Object} [param.meta] - additional meta fields
* @returns {{payload: Object, meta: {reducerName: String}, type: string}}
*/
export const addItemsAction = ({ items, reducerName, meta }) => ({
type: ADD_ITEMS,
payload: items,
meta: {
reducerName,
...meta,
},
})