Files
Web-Control-Panel-PWA/src/store/reducers.js
T

49 lines
1.4 KiB
JavaScript

export const menuReducer = (state, action) => {
switch (action) {
case 'show': return true;
case 'hide': return false;
case 'toggle': return !state;
default: throw new Error("menustate unknown to reducer");
}
}
export const sessionReducer = (state, action) => {
switch (action.type) {
case 'start': return { active: true, token: action.token, username: action.username }
case 'end': return { active: false, token: null, username: null, exiry: null }
default: throw new Error("action type unknown to session reducer");
}
}
export const userTableReducer = (state, action) => {
let user = action.user;
switch (action.type) {
case 'create': return [...state, { line: state.length, ...user }];
case 'delete': {
let newstate = [];
let newindex = 0;
state.forEach((u, i) => {
if (user.uid && u.uid != user.uid || user.line && i != user.line)
newstate.push({ ...u, line: newindex++ })
return newstate;
}, []);
return newstate;
}
case 'update': {
let newstate = [];
state.forEach((u, i) => {
if (user.uid && u.uid == user.uid || user.line && i == user.line)
newstate.push(user);
else
newstate.push(u);
});
return [...newstate]
}
case 'import':
return action.imported;
case 'reset':
return [];
default:
throw new Error("action type unknown to usertable reducer");
}
}