aboutsummaryrefslogtreecommitdiff
path: root/src/store/devices.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/store/devices.js')
-rw-r--r--src/store/devices.js36
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 };