fix: Native filters cyclic dependency (#16921)

This commit is contained in:
Michael S. Molina 2021-09-30 14:55:54 -03:00 committed by GitHub
parent c5d23fbcc7
commit 87290ddcc8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 4 deletions

View File

@ -42,6 +42,7 @@ export const validateForm = async (
errors: [error],
};
form.setFields([fieldError]);
setCurrentFilterId(filterId);
};
try {
@ -57,25 +58,34 @@ export const validateForm = async (
}
}
const validateCycles = (filterId: string, trace: string[] = []) => {
const validateCycles = (
filterId: string,
trace: string[] = [],
): boolean => {
if (trace.includes(filterId)) {
addValidationError(
filterId,
'parentFilter',
'Cannot create cyclic hierarchy',
);
return false;
}
const parentId = formValues.filters?.[filterId]
? formValues.filters[filterId]?.parentFilter?.value
: filterConfigMap[filterId]?.cascadeParentIds?.[0];
if (parentId) {
validateCycles(parentId, [...trace, filterId]);
return validateCycles(parentId, [...trace, filterId]);
}
return true;
};
filterIds
const invalid = filterIds
.filter(id => !removedFilters[id])
.forEach(filterId => validateCycles(filterId));
.some(filterId => !validateCycles(filterId));
if (invalid) {
return null;
}
return formValues;
} catch (error) {