Исключить текущий ресурс из проверки - PullRequest
0 голосов
/ 28 мая 2019

У меня есть небольшая функция, которая просматривает список доступных в настоящее время ресурсов, и когда вы переходите к созданию и редактированию ресурса, она проверяет правильность имени ресурса (если оно существует или нет).

Вот утилита:

export const validateResourceName = value =>
  listResources({ once: true }).then(({ data }) => {
    if (Array.isArray(data) && data.find(resourceData => resourceData.name === value)) {
      // eslint-disable-next-line no-throw-literal
      throw 'Resource already exists';
    }
  });

Теперь я хочу, чтобы это выполнялось только на ADD_RESOURCE.На EDIT_RESOURCE она должна выдать эту ошибку, не проверяя текущее имя редактируемого ресурса.Allowing to edit a resource without changing name.

Итак, я создал другую функцию, которая взамен вызывала в моих компонентах проверки правильности компонентов вместо обычной.

export const validateNonCurrentResourcepName = (value, currentResource) =>
  listResources({ once: true }).then(({ data }) => {
    if (
      Array.isArray(data) &&
      data.find(resourceData => resourceData.name === value) &&
      data.map(resourceData => resourceData.name === currentResource)
    ) {
      // eslint-disable-next-line no-throw-literal
      throw 'Resource already exists';
    }
  });

И я вызываю ее так:

const debouncedValidateNonCurrentResourceName = debounce(validateNonCurrentResourceName, 250);

validate={inEditMode ? debouncedValidateResourceName : debouncedValidateNonCurrentResourceName}

Но это не работает.Кроме того, когда я вызываю компонент, я передаю и ему inEditMode, и currentResource.Что я тут не так делаю .. ??

...