fix: issue #23572 support undefined allowed types

This commit is contained in:
Alexandre BODIN 2025-05-28 09:57:12 +02:00
parent 883f4fcabd
commit 4aa8ff0ba4
3 changed files with 10 additions and 11 deletions

View File

@ -28,7 +28,6 @@
"type": "media", "type": "media",
"multiple": false, "multiple": false,
"required": false, "required": false,
"allowedTypes": ["files", "images", "videos", "audios"],
"pluginOptions": {} "pluginOptions": {}
}, },
"images": { "images": {

View File

@ -36,7 +36,7 @@ export interface MediaLibraryInputProps {
export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>( export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(
( (
{ {
attribute: { allowedTypes = ['videos', 'files', 'images', 'audios'], multiple = false } = {}, attribute: { allowedTypes = null, multiple = false } = {},
label, label,
hint, hint,
disabled = false, disabled = false,
@ -48,7 +48,6 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
) => { ) => {
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
const { onChange, value, error } = useField(name); const { onChange, value, error } = useField(name);
const fieldAllowedTypes = allowedTypes || ['files', 'images', 'videos', 'audios'];
const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]); const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);
const [step, setStep] = React.useState<string | undefined>(undefined); const [step, setStep] = React.useState<string | undefined>(undefined);
const [selectedIndex, setSelectedIndex] = React.useState(0); const [selectedIndex, setSelectedIndex] = React.useState(0);
@ -123,7 +122,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
assets: FileWithoutIdHash[] | Asset[], assets: FileWithoutIdHash[] | Asset[],
callback: (assets?: AllowedFiles[], error?: string) => void callback: (assets?: AllowedFiles[], error?: string) => void
) => { ) => {
const allowedAssets = getAllowedFiles(fieldAllowedTypes, assets as AllowedFiles[]); const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);
if (allowedAssets.length > 0) { if (allowedAssets.length > 0) {
callback(allowedAssets); callback(allowedAssets);
@ -137,7 +136,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
defaultMessage: `You can't upload this type of file.`, defaultMessage: `You can't upload this type of file.`,
}, },
{ {
fileTypes: fieldAllowedTypes.join(','), fileTypes: (allowedTypes ?? []).join(','),
} }
), ),
}); });
@ -170,10 +169,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
let initiallySelectedAssets = selectedAssets; let initiallySelectedAssets = selectedAssets;
if (uploadedFiles.length > 0) { if (uploadedFiles.length > 0) {
const allowedUploadedFiles = getAllowedFiles( const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);
fieldAllowedTypes,
uploadedFiles as AllowedFiles[]
);
initiallySelectedAssets = multiple initiallySelectedAssets = multiple
? [...allowedUploadedFiles, ...selectedAssets] ? [...allowedUploadedFiles, ...selectedAssets]
@ -204,7 +200,7 @@ export const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibr
{step === STEPS.AssetSelect && ( {step === STEPS.AssetSelect && (
<AssetDialog <AssetDialog
allowedTypes={fieldAllowedTypes as AllowedTypes[]} allowedTypes={allowedTypes as AllowedTypes[]}
initiallySelectedAssets={initiallySelectedAssets} initiallySelectedAssets={initiallySelectedAssets}
folderId={folderId} folderId={folderId}
onClose={() => { onClose={() => {

View File

@ -15,7 +15,11 @@ export interface AllowedFiles extends File {
type: string; type: string;
} }
export const getAllowedFiles = (pluralTypes: string[], files: AllowedFiles[]) => { export const getAllowedFiles = (pluralTypes: string[] | null, files: AllowedFiles[]) => {
if (!pluralTypes) {
return files;
}
const singularTypes = toSingularTypes(pluralTypes); const singularTypes = toSingularTypes(pluralTypes);
const allowedFiles = files.filter((file) => { const allowedFiles = files.filter((file) => {