export function errorsToFlashbarItems()

in frontend/src/old-pages/Configure/errorsToFlashbarItems.ts [36:109]


export function errorsToFlashbarItems(
  errors: CreateErrors,
  setFlashbarItems: React.Dispatch<
    React.SetStateAction<FlashbarProps.MessageDefinition[]>
  >,
) {
  let items: FlashbarProps.MessageDefinition[] = []

  if (!errors) return items

  const success = errors.message && errors.message.includes('succeeded')
  const configErrors =
    errors.configurationValidationErrors || errors.validationMessages
  const updateErrors = errors.updateValidationErrors

  if (success) {
    items.push(
      dismissableMessage(
        {
          type: 'success',
          header: i18next.t('wizard.create.flashBar.success'),
          content: errors.message,
          id: 'success',
        },
        setFlashbarItems,
      ),
    )
  }

  configErrors?.forEach((error: ConfigError, index: number) => {
    items.push(
      dismissableMessage(
        {
          type: error.level.toLowerCase() as FlashbarProps.Type,
          header: capitalize(error.level.toLowerCase()),
          content: `${error.type}: ${error.message}`,
          id: `config-err-${index}`,
        },
        setFlashbarItems,
      ),
    )
  })

  updateErrors?.forEach((error: UpdateError, index: number) => {
    items.push(
      dismissableMessage(
        {
          type: 'error',
          header: i18next.t('wizard.create.flashBar.error'),
          content: error.message,
          id: `update-err-${index}`,
        },
        setFlashbarItems,
      ),
    )
  })

  if (items.length === 0 && !success) {
    items.push(
      dismissableMessage(
        {
          type: 'error',
          header: i18next.t('wizard.create.flashBar.error'),
          content: errors.message,
          id: 'config-err-0',
        },
        setFlashbarItems,
      ),
    )
  }

  items.sort(compareFlashbarItems)
  return items
}