Add users management to site settings (#126)

This commit is contained in:
Riccardo Graziosi
2022-06-24 14:39:35 +02:00
committed by GitHub
parent bc15140512
commit 37fb99a868
71 changed files with 1093 additions and 1409 deletions

View File

@@ -0,0 +1,58 @@
import {
UsersRequestActionTypes,
USERS_REQUEST_START,
USERS_REQUEST_SUCCESS,
USERS_REQUEST_FAILURE,
} from '../../actions/User/requestUsers';
import {
UserUpdateActionTypes,
USER_UPDATE_START,
USER_UPDATE_SUCCESS,
USER_UPDATE_FAILURE,
} from '../../actions/User/updateUser';
export interface SiteSettingsUsersState {
areUpdating: boolean;
error: string;
}
const initialState: SiteSettingsUsersState = {
areUpdating: false,
error: '',
};
const siteSettingsUsersReducer = (
state = initialState,
action: UsersRequestActionTypes | UserUpdateActionTypes,
) => {
switch (action.type) {
case USERS_REQUEST_START:
case USER_UPDATE_START:
return {
...state,
areUpdating: true,
};
case USERS_REQUEST_SUCCESS:
case USER_UPDATE_SUCCESS:
return {
...state,
areUpdating: false,
error: '',
};
case USERS_REQUEST_FAILURE:
case USER_UPDATE_FAILURE:
return {
...state,
areUpdating: false,
error: action.error,
};
default:
return state;
}
}
export default siteSettingsUsersReducer;

View File

@@ -38,7 +38,7 @@ const initialState: BoardsState = {
items: [],
areLoading: false,
error: '',
}
};
const boardsReducer = (
state = initialState,

View File

@@ -3,6 +3,7 @@ import { combineReducers } from 'redux';
import postsReducer from './postsReducer';
import boardsReducer from './boardsReducer';
import postStatusesReducer from './postStatusesReducer';
import usersReducer from './usersReducer';
import currentPostReducer from './currentPostReducer';
import siteSettingsReducer from './siteSettingsReducer';
@@ -10,6 +11,7 @@ const rootReducer = combineReducers({
posts: postsReducer,
boards: boardsReducer,
postStatuses: postStatusesReducer,
users: usersReducer,
currentPost: currentPostReducer,
siteSettings: siteSettingsReducer,
});

View File

@@ -61,20 +61,37 @@ import {
POSTSTATUS_UPDATE_FAILURE,
} from '../actions/PostStatus/updatePostStatus';
import {
UsersRequestActionTypes,
USERS_REQUEST_START,
USERS_REQUEST_SUCCESS,
USERS_REQUEST_FAILURE,
} from '../actions/User/requestUsers';
import {
UserUpdateActionTypes,
USER_UPDATE_START,
USER_UPDATE_SUCCESS,
USER_UPDATE_FAILURE,
} from '../actions/User/updateUser';
import siteSettingsBoardsReducer, { SiteSettingsBoardsState } from './SiteSettings/boardsReducer';
import siteSettingsPostStatusesReducer, { SiteSettingsPostStatusesState } from './SiteSettings/postStatusesReducer';
import siteSettingsRoadmapReducer, { SiteSettingsRoadmapState } from './SiteSettings/roadmapReducer';
import siteSettingsUsersReducer, { SiteSettingsUsersState } from './SiteSettings/usersReducer';
interface SiteSettingsState {
boards: SiteSettingsBoardsState;
postStatuses: SiteSettingsPostStatusesState;
roadmap: SiteSettingsRoadmapState;
users: SiteSettingsUsersState;
}
const initialState: SiteSettingsState = {
boards: siteSettingsBoardsReducer(undefined, {} as any),
postStatuses: siteSettingsPostStatusesReducer(undefined, {} as any),
roadmap: siteSettingsRoadmapReducer(undefined, {} as any),
users: siteSettingsUsersReducer(undefined, {} as any),
};
const siteSettingsReducer = (
@@ -88,7 +105,9 @@ const siteSettingsReducer = (
PostStatusOrderUpdateActionTypes |
PostStatusDeleteActionTypes |
PostStatusSubmitActionTypes |
PostStatusUpdateActionTypes
PostStatusUpdateActionTypes |
UsersRequestActionTypes |
UserUpdateActionTypes
): SiteSettingsState => {
switch (action.type) {
case BOARDS_REQUEST_START:
@@ -134,6 +153,17 @@ const siteSettingsReducer = (
roadmap: siteSettingsRoadmapReducer(state.roadmap, action),
};
case USERS_REQUEST_START:
case USERS_REQUEST_SUCCESS:
case USERS_REQUEST_FAILURE:
case USER_UPDATE_START:
case USER_UPDATE_SUCCESS:
case USER_UPDATE_FAILURE:
return {
...state,
users: siteSettingsUsersReducer(state.users, action),
};
default:
return state;
}

View File

@@ -0,0 +1,75 @@
import {
UsersRequestActionTypes,
USERS_REQUEST_START,
USERS_REQUEST_SUCCESS,
USERS_REQUEST_FAILURE,
} from '../actions/User/requestUsers';
import {
UserUpdateActionTypes,
USER_UPDATE_SUCCESS,
} from '../actions/User/updateUser';
import IUser from "../interfaces/IUser";
export interface UsersState {
items: Array<IUser>;
areLoading: boolean;
error: string;
}
const initialState: UsersState = {
items: [],
areLoading: false,
error: '',
};
const usersReducer = (
state = initialState,
action: UsersRequestActionTypes | UserUpdateActionTypes,
) => {
switch (action.type) {
case USERS_REQUEST_START:
return {
...state,
areLoading: true,
};
case USERS_REQUEST_SUCCESS:
return {
...state,
areLoading: false,
error: '',
items: action.users.map(userJson => ({
id: userJson.id,
email: userJson.email,
fullName: userJson.full_name,
role: userJson.role,
status: userJson.status,
})),
};
case USERS_REQUEST_FAILURE:
return {
...state,
areLoading: false,
error: action.error,
};
case USER_UPDATE_SUCCESS:
return {
...state,
items: state.items.map(user => {
return (user.id === action.user.id) ?
{...user, role: action.user.role, status: action.user.status}
:
user;
}),
};
default:
return state;
}
}
export default usersReducer;