MCPcopy
hub / github.com/final-form/final-form / processErrors

Function processErrors

src/FinalForm.ts:471–519  ·  view source on GitHub ↗
(afterAsync: boolean)

Source from the content-addressed store, hash-verified

469 }
470
471 const processErrors = (afterAsync: boolean) => {
472 let merged = {
473 ...(limitedFieldLevelValidation ? formState.errors : {}),
474 ...recordLevelErrors,
475 ...(afterAsync
476 ? asyncRecordLevelErrors // new async errors
477 : formState.asyncErrors), // previous async errors
478 };
479 const forEachError = (fn: (name: string, error: any) => void) => {
480 fieldKeys.forEach((name) => {
481 if (fields[name]) {
482 // make sure field is still registered
483 // field-level errors take precedent over record-level errors
484 const recordLevelError = getIn(recordLevelErrors, name);
485 const asyncRecordLevelError = afterAsync ? getIn(asyncRecordLevelErrors, name) : undefined;
486 const errorFromParent = getIn(merged, name);
487 const hasFieldLevelValidation = getValidators(safeFields[name])
488 .length;
489 const fieldLevelError = fieldLevelErrors[name];
490 fn(
491 name,
492 (hasFieldLevelValidation && fieldLevelError) ||
493 (validate && (asyncRecordLevelError || recordLevelError)) ||
494 (!recordLevelError && !limitedFieldLevelValidation
495 ? errorFromParent
496 : undefined),
497 );
498 }
499 });
500 };
501 forEachError((name, error) => {
502 merged = setIn(merged, name, error) || {};
503 });
504 forEachError((name, error) => {
505 if (error && error[ARRAY_ERROR]) {
506 const existing = getIn(merged, name);
507 const copy: any = [...existing];
508 copy[ARRAY_ERROR] = error[ARRAY_ERROR];
509 merged = setIn(merged, name, copy);
510 }
511 });
512 if (!shallowEqual(formState.errors, merged)) {
513 formState.errors = merged;
514 }
515 if (afterAsync) {
516 formState.asyncErrors = asyncRecordLevelErrors;
517 }
518 formState.error = recordLevelErrors[FORM_ERROR];
519 };
520
521 if (hasAsyncValidations) {
522 // async validations are running, ensure validating is true before notifying

Callers 1

runValidationFunction · 0.85

Calls 4

forEachErrorFunction · 0.85
setInFunction · 0.85
getInFunction · 0.85
shallowEqualFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…