mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
feat(FE): adding alert errors message for project flock and fixing bug approval status in chickin
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import { FormikErrors } from 'formik';
|
||||
|
||||
export type ErrorMessage = {
|
||||
key: string;
|
||||
message: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Parse Formik errors object into a flat array of error messages
|
||||
* @param errors - Formik errors object
|
||||
* @param parentKey - Parent key for nested objects (used internally for recursion)
|
||||
* @returns Array of error messages
|
||||
*/
|
||||
export function parseFormikErrors<T>(
|
||||
errors: FormikErrors<T>,
|
||||
parentKey: string = ''
|
||||
): ErrorMessage[] {
|
||||
const errorList: ErrorMessage[] = [];
|
||||
|
||||
Object.keys(errors).forEach((key) => {
|
||||
const value = errors[key as keyof typeof errors];
|
||||
const fullKey = parentKey ? `${parentKey}.${key}` : key;
|
||||
|
||||
if (typeof value === 'string') {
|
||||
// Direct error message
|
||||
errorList.push({ key: fullKey, message: value });
|
||||
} else if (Array.isArray(value)) {
|
||||
// Array of errors
|
||||
value.forEach((item, index) => {
|
||||
if (typeof item === 'string') {
|
||||
errorList.push({ key: `${fullKey}[${index}]`, message: item });
|
||||
} else if (item && typeof item === 'object') {
|
||||
// Nested object in array
|
||||
const nestedErrors = parseFormikErrors(
|
||||
item as FormikErrors<unknown>,
|
||||
`${fullKey}[${index}]`
|
||||
);
|
||||
errorList.push(...nestedErrors);
|
||||
}
|
||||
});
|
||||
} else if (value && typeof value === 'object') {
|
||||
// Nested object
|
||||
const nestedErrors = parseFormikErrors(
|
||||
value as FormikErrors<unknown>,
|
||||
fullKey
|
||||
);
|
||||
errorList.push(...nestedErrors);
|
||||
}
|
||||
});
|
||||
|
||||
return errorList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get unique error messages from Formik errors
|
||||
* @param errors - Formik errors object
|
||||
* @returns Array of unique error messages
|
||||
*/
|
||||
export function getUniqueFormikErrors<T>(errors: FormikErrors<T>): string[] {
|
||||
const errorList = parseFormikErrors(errors);
|
||||
return Array.from(new Set(errorList.map((e) => e.message)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all error messages from Formik errors
|
||||
* @param errors - Formik errors object
|
||||
* @returns Array of error messages
|
||||
*/
|
||||
export function getAllFormikErrors<T>(errors: FormikErrors<T>): ErrorMessage[] {
|
||||
return parseFormikErrors(errors);
|
||||
}
|
||||
Reference in New Issue
Block a user