40 lines
858 B
JavaScript
40 lines
858 B
JavaScript
import { produce } from "immer";
|
|
|
|
export const defaultState = {
|
|
fetchingModules: false,
|
|
users: new Map(),
|
|
stats: {},
|
|
modules: {},
|
|
};
|
|
|
|
export default (state = defaultState, action) =>
|
|
produce(state, (draft) => {
|
|
switch (action.type) {
|
|
case "ADMIN_LIST_USERS_FULFILLED": {
|
|
action.payload.response.data.forEach((user) => {
|
|
draft.users.set(user.id, user);
|
|
});
|
|
break;
|
|
}
|
|
|
|
case "ADMIN_GET_STATS_FULFILLED": {
|
|
draft.stats = action.payload.response.data;
|
|
break;
|
|
}
|
|
|
|
case "ADMIN_GET_MODULES_PENDING": {
|
|
draft.fetchingModules = true;
|
|
break;
|
|
}
|
|
|
|
case "ADMIN_GET_MODULES_FULFILLED": {
|
|
draft.fetchingModules = false;
|
|
draft.modules = action.payload.response.data;
|
|
break;
|
|
}
|
|
|
|
default:
|
|
return draft;
|
|
}
|
|
});
|