add calls to new 'me' endpoint

This commit is contained in:
Davor 2022-06-21 11:54:07 +02:00
parent 281a0ed4e7
commit a797027c7e
3 changed files with 83 additions and 4 deletions

View file

@ -11,8 +11,18 @@ import { UserModalProps } from './types';
export const UserModal = ({ open, onClose, userId, setUserId }: UserModalProps) => {
const [deleteModal, setDeleteModal] = useState(false);
const { user, loadUser, editUserById, createNewUser, userModalLoading, deleteUserById, clearSelectedUser } =
useUsers();
const [isPersonalModal, setPersonalModal] = useState(false);
const {
user,
loadUser,
loadPersonalInfo,
editUserById,
editPersonalInfo,
createNewUser,
userModalLoading,
deleteUserById,
clearSelectedUser,
} = useUsers();
const { currentUser, isAdmin } = useAuth();
const { control, reset, handleSubmit } = useForm<User>({
@ -26,7 +36,13 @@ export const UserModal = ({ open, onClose, userId, setUserId }: UserModalProps)
useEffect(() => {
if (userId) {
loadUser(userId);
const currentUserId = currentUser?.id;
if (currentUserId === userId) {
setPersonalModal(true);
loadPersonalInfo();
} else {
loadUser(userId);
}
}
reset(initialUserForm);
@ -45,7 +61,9 @@ export const UserModal = ({ open, onClose, userId, setUserId }: UserModalProps)
const handleSave = async () => {
try {
if (userId) {
if (isPersonalModal) {
await handleSubmit((data) => editPersonalInfo(data))();
} else if (userId) {
await handleSubmit((data) => editUserById(data))();
} else {
await handleSubmit((data) => createNewUser(data))();
@ -134,6 +152,7 @@ export const UserModal = ({ open, onClose, userId, setUserId }: UserModalProps)
name={`app_roles.${index}.role`}
label="Role"
options={[
{ value: UserRole.NoAccess, name: 'No Access' },
{ value: UserRole.User, name: 'User' },
{ value: UserRole.Admin, name: 'Admin' },
]}

View file

@ -3,7 +3,9 @@ import {
getUsers,
fetchUsers,
fetchUserById,
fetchPersonalInfo,
updateUserById,
updatePersonalInfo,
createUser,
deleteUser,
clearCurrentUser,
@ -25,6 +27,10 @@ export function useUsers() {
return dispatch(fetchUserById(id));
}
function loadPersonalInfo() {
return dispatch(fetchPersonalInfo());
}
function clearSelectedUser() {
return dispatch(clearCurrentUser());
}
@ -33,6 +39,10 @@ export function useUsers() {
return dispatch(updateUserById(data));
}
function editPersonalInfo(data: any) {
return dispatch(updatePersonalInfo(data));
}
function createNewUser(data: any) {
return dispatch(createUser(data));
}
@ -46,7 +56,9 @@ export function useUsers() {
user,
loadUser,
loadUsers,
loadPersonalInfo,
editUserById,
editPersonalInfo,
userModalLoading,
userTableLoading,
createNewUser,

View file

@ -69,6 +69,26 @@ export const fetchUserById = (id: string) => async (dispatch: Dispatch<any>) =>
dispatch(setUserModalLoading(false));
};
export const fetchPersonalInfo = () => async (dispatch: Dispatch<any>) => {
dispatch(setUserModalLoading(true));
try {
const { data } = await performApiCall({
path: '/me',
method: 'GET',
});
dispatch({
type: UserActionTypes.FETCH_USER,
payload: transformUser(data),
});
} catch (err) {
console.error(err);
}
dispatch(setUserModalLoading(false));
};
export const updateUserById = (user: any) => async (dispatch: Dispatch<any>, getState: any) => {
dispatch(setUserModalLoading(true));
@ -103,6 +123,34 @@ export const updateUserById = (user: any) => async (dispatch: Dispatch<any>, get
dispatch(setUserModalLoading(false));
};
export const updatePersonalInfo = (user: any) => async (dispatch: Dispatch<any>, getState: any) => {
dispatch(setUserModalLoading(true));
try {
const { data } = await performApiCall({
path: '/me',
method: 'PUT',
body: transformRequestUser(user),
});
dispatch({
type: UserActionTypes.UPDATE_USER,
payload: transformUser(data),
});
dispatch({
type: AuthActionTypes.UPDATE_AUTH_USER,
payload: transformUser(data),
});
showToast('Personal information updated successfully.', ToastType.Success);
} catch (err) {
console.error(err);
}
dispatch(setUserModalLoading(false));
};
export const createUser = (user: any) => async (dispatch: Dispatch<any>) => {
dispatch(setUserModalLoading(true));