diff options
Diffstat (limited to 'src/store/devices.js')
-rw-r--r-- | src/store/devices.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/store/devices.js b/src/store/devices.js new file mode 100644 index 00000000..f2f6263b --- /dev/null +++ b/src/store/devices.js @@ -0,0 +1,36 @@ +import { createSlice } from '@reduxjs/toolkit'; + +const { reducer, actions } = createSlice({ + name: 'devices', + initialState: { + items: {}, + selectedId: null, + selectedIds: [], + }, + 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; + }, + selectId(state, action) { + state.selectedId = action.payload; + state.selectedIds = state.selectedId ? [state.selectedId] : []; + }, + selectIds(state, action) { + state.selectedIds = action.payload; + [state.selectedId] = state.selectedIds; + }, + remove(state, action) { + delete state.items[action.payload]; + }, + }, +}); + +export { actions as devicesActions }; +export { reducer as devicesReducer }; |