Skip to content

Commit

Permalink
Exclude extensions in messages when all files are allowed
Browse files Browse the repository at this point in the history
  • Loading branch information
domi-b committed Nov 16, 2023
1 parent df650d8 commit e151cca
Showing 1 changed file with 18 additions and 17 deletions.
35 changes: 18 additions & 17 deletions src/GeoCop.Frontend/src/FileDropzone.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,13 @@ export const FileDropzone = ({
const [dropZoneText, setDropZoneText] = useState(dropZoneDefaultText);
const [dropZoneTextClass, setDropZoneTextClass] = useState("dropzone dropzone-text-disabled");

const acceptsAllFileTypes = acceptedFileTypes?.includes(".*") ?? false;
const acceptedFileTypesText = acceptedFileTypes?.join(", ") ?? "";

useEffect(
() =>
setDropZoneDefaultText(
`Datei (${acceptedFileTypesText}) hier ablegen oder klicken um vom lokalen Dateisystem auszuwählen.`,
),
[acceptedFileTypesText],
);
useEffect(() => {
const fileDescription = acceptsAllFileTypes ? "Datei" : `Datei (${acceptedFileTypesText})`;
setDropZoneDefaultText(`${fileDescription} hier ablegen oder klicken um vom lokalen Dateisystem auszuwählen.`);
}, [acceptsAllFileTypes, acceptedFileTypesText]);
useEffect(() => setDropZoneText(dropZoneDefaultText), [dropZoneDefaultText]);

const onDropAccepted = useCallback(
Expand Down Expand Up @@ -89,12 +87,13 @@ export const FileDropzone = ({
(fileRejections) => {
setDropZoneTextClass("dropzone dropzone-text-error");
const errorCode = fileRejections[0].errors[0].code;
const genericError =
"Bitte wähle eine Datei (max. 200MB)" +
(acceptsAllFileTypes ? "" : ` mit einer der folgenden Dateiendungen: ${acceptedFileTypesText}`);

switch (errorCode) {
case "file-invalid-type":
setDropZoneText(
`Der Dateityp wird nicht unterstützt. Bitte wähle eine Datei (max. 200MB) mit einer der folgenden Dateiendungen: ${acceptedFileTypesText}`,
);
setDropZoneText(`Der Dateityp wird nicht unterstützt. ${genericError}`);
break;
case "too-many-files":
setDropZoneText("Es kann nur eine Datei aufs Mal geprüft werden.");
Expand All @@ -105,14 +104,13 @@ export const FileDropzone = ({
);
break;
default:
setDropZoneText(
`Bitte wähle eine Datei (max. 200MB) mit einer der folgenden Dateiendungen: ${acceptedFileTypesText}`,
);
setDropZoneText(genericError);
break;
}
resetFileToCheck();
setFileAvailable(false);
},
[resetFileToCheck, acceptedFileTypesText],
[resetFileToCheck, acceptsAllFileTypes, acceptedFileTypesText],
);

const removeFile = (e) => {
Expand All @@ -124,14 +122,17 @@ export const FileDropzone = ({
setDropZoneTextClass("dropzone dropzone-text-disabled");
};

const accept = acceptsAllFileTypes
? undefined
: {
"application/x-geocop-files": acceptedFileTypes ?? [],
};
const { getRootProps, getInputProps, isDragActive } = useDropzone({
onDropAccepted,
onDropRejected,
maxFiles: 1,
maxSize: 209715200,
accept: {
"application/x-geocop-files": acceptedFileTypes ?? [],
},
accept,
});

return (
Expand Down

0 comments on commit e151cca

Please sign in to comment.