75 lines
1.5 KiB
TypeScript
75 lines
1.5 KiB
TypeScript
import type { NPEDACTION, NPEDSTATE } from "../../types/types";
|
|
|
|
export const initialState = {
|
|
sessionStarted: true,
|
|
sessionList: [],
|
|
sessionPaused: false,
|
|
savedSightings: [],
|
|
npedUser: null,
|
|
iscatEnabled: {
|
|
catA: true,
|
|
catB: true,
|
|
catC: true,
|
|
catD: false,
|
|
},
|
|
hotlistFiles: [],
|
|
};
|
|
|
|
export function reducer(state: NPEDSTATE, action: NPEDACTION) {
|
|
switch (action.type) {
|
|
case "SESSIONSTART":
|
|
return {
|
|
...state,
|
|
sessionStarted: action.payload,
|
|
};
|
|
case "LOGIN":
|
|
return {
|
|
...state,
|
|
npedUser: action.payload,
|
|
};
|
|
case "LOGOUT":
|
|
return {
|
|
...state,
|
|
npedUser: action.payload,
|
|
};
|
|
case "SESSIONPAUSE":
|
|
return {
|
|
...state,
|
|
sessionPaused: action.payload,
|
|
};
|
|
case "SESSIONRESTART":
|
|
return {
|
|
...state,
|
|
sessionList: action.payload,
|
|
};
|
|
case "ADD":
|
|
return {
|
|
...state,
|
|
sessionList: [...state.sessionList, action.payload],
|
|
};
|
|
case "UPDATE":
|
|
return {
|
|
...state,
|
|
sessionList: action.payload,
|
|
};
|
|
case "NPEDCATENABLED":
|
|
return {
|
|
...state,
|
|
iscatEnabled: action.payload,
|
|
};
|
|
|
|
case "SETHOTLISTS":
|
|
return {
|
|
...state,
|
|
hotlistFiles: action.payload,
|
|
};
|
|
case "DELETEHOTLIST":
|
|
return {
|
|
...state,
|
|
hotlistFiles: state.hotlistFiles.filter((hotlist) => hotlist.filename !== action.payload),
|
|
};
|
|
default:
|
|
return { ...state };
|
|
}
|
|
}
|