import { createSlice, current } from '@reduxjs/toolkit'; const { reducer, actions } = createSlice({ name: 'devices', initialState: { items: {}, filterTerm: '', filteredItems: {}, selectedId: null, }, reducers: { refresh(state, action) { state.items = {}; action.payload.forEach((item) => state.items[item.id] = item); }, update(state, action) { action.payload.forEach((item) => state.items[item.id] = item); }, select(state, action) { state.selectedId = action.payload.id; }, unselect(state, action) { state.selectedId = null; }, setFilter(state, action) { state.filterTerm = action.payload; const items = Object.entries(current(state).items); state.filteredItems = Object.fromEntries(items.filter(([k, v]) => { return v.name.toLowerCase().includes(action.payload.toLowerCase()); })); }, clearFilter(state, action) { state.filterTerm = ''; state.filteredItems = {}; }, remove(state, action) { delete state.items[action.payload]; }, }, }); export { actions as devicesActions }; export { reducer as devicesReducer };