const isFileAttached = accepted => !!files.map(({ name }) => name)
.filter(item => accepted.map(({ name }) => name).includes(item)).length;
const handleDrop = useCallback(acceptedFiles => {
setMessage(null);
if (isFileAttached(acceptedFiles)) {
setMessage(translations.inputFileNameAttention);
return;
}
if (acceptedFiles.length > maxFilesQuantity || files.length >= maxFilesQuantity) {
setMessage(
`${translations.inputFileLimitAttention} ${maxFilesQuantity} ${translations.inputFileLimitAttentionFiles}`
);
return;
}
if (onDrop) {
onDrop(acceptedFiles.map(file => {
if (nonMultimediaMimeTypes.includes(fileMimeType(file.type))) {
return Object.assign(file, {
link: null,
});
}
return Object.assign(file, {
link: URL.createObjectURL(file),
});
}));
}
}, [onDrop, maxFilesQuantity]);