import type { Body, I18n, Meta, UppyFile } from '@uppy/core/utils' import type { ComponentChildren } from 'preact' import type { DashboardState } from '../../Dashboard.js' function metaFieldIdToName( metaFieldId: string, metaFields: DashboardState['metaFields'], file: UppyFile, ): string { const fields = typeof metaFields === 'function' ? metaFields(file) : metaFields const field = fields?.find((f) => f.id === metaFieldId) // `requiredMetaFields` is a core restriction, so a field can be required // without having a matching entry in the Dashboard `metaFields` option. return field?.name ?? metaFieldId } type MetaErrorMessageProps = { i18n: I18n file: UppyFile metaFields: DashboardState['metaFields'] toggleFileCard: (show: boolean, fileId: string) => void } export default function MetaErrorMessage( props: MetaErrorMessageProps, ): ComponentChildren { const { file, toggleFileCard, i18n, metaFields } = props const { missingRequiredMetaFields } = file if (!missingRequiredMetaFields?.length) { return null } const metaFieldsString = missingRequiredMetaFields .map((missingMetaField) => metaFieldIdToName(missingMetaField, metaFields, file), ) .join(', ') return (
{i18n('missingRequiredMetaFields', { smart_count: missingRequiredMetaFields.length, fields: metaFieldsString, })}{' '}
) }