refactor: use form's centralized error management
This commit is contained in:
@@ -1,18 +0,0 @@
|
|||||||
// Helpers to extract errors received from the API
|
|
||||||
|
|
||||||
export const getGeneralErrorMessage = ({ error, fallbackMessage }) => {
|
|
||||||
if (!error) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const errors = error?.response?.data?.errors;
|
|
||||||
const generalError = errors?.general;
|
|
||||||
|
|
||||||
if (generalError && Array.isArray(generalError)) {
|
|
||||||
return generalError.join(' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!errors) {
|
|
||||||
return error?.message || fallbackMessage;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -236,7 +236,6 @@
|
|||||||
"editUser.status": "Status",
|
"editUser.status": "Status",
|
||||||
"editUser.submit": "Update",
|
"editUser.submit": "Update",
|
||||||
"editUser.successfullyUpdated": "The user has been updated.",
|
"editUser.successfullyUpdated": "The user has been updated.",
|
||||||
"editUser.error": "Error while updating the user.",
|
|
||||||
"userList.fullName": "Full name",
|
"userList.fullName": "Full name",
|
||||||
"userList.email": "Email",
|
"userList.email": "Email",
|
||||||
"userList.role": "Role",
|
"userList.role": "Role",
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import useRoles from 'hooks/useRoles.ee';
|
|||||||
import useAdminUpdateUser from 'hooks/useAdminUpdateUser';
|
import useAdminUpdateUser from 'hooks/useAdminUpdateUser';
|
||||||
import useAdminUser from 'hooks/useAdminUser';
|
import useAdminUser from 'hooks/useAdminUser';
|
||||||
import useCurrentUserAbility from 'hooks/useCurrentUserAbility';
|
import useCurrentUserAbility from 'hooks/useCurrentUserAbility';
|
||||||
import { getGeneralErrorMessage } from 'helpers/errors';
|
|
||||||
|
|
||||||
function generateRoleOptions(roles) {
|
function generateRoleOptions(roles) {
|
||||||
return roles?.map(({ name: label, id: value }) => ({ label, value }));
|
return roles?.map(({ name: label, id: value }) => ({ label, value }));
|
||||||
@@ -76,7 +75,7 @@ export default function EditUser() {
|
|||||||
const currentUserAbility = useCurrentUserAbility();
|
const currentUserAbility = useCurrentUserAbility();
|
||||||
const canUpdateRole = currentUserAbility.can('update', 'Role');
|
const canUpdateRole = currentUserAbility.can('update', 'Role');
|
||||||
|
|
||||||
const handleUserUpdate = async (userDataToUpdate, e, setError) => {
|
const handleUserUpdate = async (userDataToUpdate) => {
|
||||||
try {
|
try {
|
||||||
await updateUser({
|
await updateUser({
|
||||||
fullName: userDataToUpdate.fullName,
|
fullName: userDataToUpdate.fullName,
|
||||||
@@ -96,29 +95,7 @@ export default function EditUser() {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
const errors = error?.response?.data?.errors;
|
const errors = error?.response?.data?.errors;
|
||||||
|
|
||||||
if (errors) {
|
throw errors || error;
|
||||||
const fieldNames = Object.keys(defaultValues);
|
|
||||||
Object.entries(errors).forEach(([fieldName, fieldErrors]) => {
|
|
||||||
if (fieldNames.includes(fieldName) && Array.isArray(fieldErrors)) {
|
|
||||||
setError(fieldName, {
|
|
||||||
type: 'fieldRequestError',
|
|
||||||
message: fieldErrors.join(', '),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const generalError = getGeneralErrorMessage({
|
|
||||||
error,
|
|
||||||
fallbackMessage: formatMessage('editUser.error'),
|
|
||||||
});
|
|
||||||
|
|
||||||
if (generalError) {
|
|
||||||
setError('root.general', {
|
|
||||||
type: 'requestError',
|
|
||||||
message: generalError,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user