UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

81 lines (68 loc) 2.08 kB
import {hash_with_key, create_hash, filter_hash} from '../common/utilities' export function store_items(state, items_name, items) { return { ...state, [items_name]: { ...state[items_name], ...hash_with_key(items), }, } } export function update_item(state, items_name, item) { return { ...state, [items_name]: { ...state[items_name], [item.id]: { ...(state[items_name][item.id] || {}), ...item, }, }, } } export function update_items(state, items_name, items) { return items.reduce((state, item) => update_item(state, items_name, item), state) } export function remove_item(state, items_name, item_id) { let items = {...state[items_name]} if (items[item_id]) { delete items[item_id] } return { ...state, [items_name]: items, } } export function filter_items(state, items_name, filter) { return { ...state, [items_name]: filter_hash(state[items_name], filter), } } export function create_item(state, items_name, item) { return store_items({...state, idGenerator: state.idGenerator - 1}, items_name, [item]) } export function update_item_id(state, items_name, item, temp_id) { return store_items(remove_item(state, items_name, temp_id), items_name, [{...state[items_name][temp_id], ...item}]) } export function add_item_id(state, items_name, item_id) { return update_item_id_in_set(state, items_name, item_id, true) } export function remove_item_id(state, items_name, item_id) { return update_item_id_in_set(state, items_name, item_id, false) } export function toggle_item_id(state, items_name, item_id) { return update_item_id_in_set(state, items_name, item_id, !state[items_name][item_id]) } export function update_item_ids_in_set(state, items_name, item_ids, status) { return { ...state, [items_name]: { ...state[items_name], ...create_hash(item_ids, () => status), }, } } export function update_item_id_in_set(state, items_name, item_id, status) { return update_item_ids_in_set(state, items_name, [item_id], status) }