Improved the filename validation

This commit is contained in:
Valtteri Karesto
2022-03-09 16:24:23 +02:00
parent 052a1e5b60
commit 5490e7205a

View File

@@ -96,33 +96,26 @@ const EditorNavigation = ({ showWat }: { showWat?: boolean }) => {
}
// check for illegal characters
const ILLEGAL_REGEX = /[/]/gi;
const ALPHA_NUMERICAL_REGEX = /[^A-Za-z0-9._-]+/g;
if (
filename.match(ILLEGAL_REGEX) ||
// Allow only a-z, A-Z, 0-9, ".", "-" and "_"
filename.match(ALPHA_NUMERICAL_REGEX)
) {
return { error: "Filename contains illegal characters" };
const ALPHA_NUMERICAL_REGEX = /^[\w,\s-]+\.[A-Za-z0-9]{1,4}$/g;
if (!filename.match(ALPHA_NUMERICAL_REGEX)) {
return {
error: `Filename can contain only characters from a-z, A-Z, 0-9, "_" and "-" and it needs to have file extension (e.g. ".c")`,
};
}
// More checks in future
return { error: null };
},
[snap.files]
);
const handleConfirm = useCallback(() => {
// add default extension in case omitted
let _filename = filename.includes(".")
? filename
: filename + DEFAULT_EXTENSION;
const chk = validateFilename(_filename);
if (chk.error) {
const chk = validateFilename(filename);
if (chk && chk.error) {
setNewfileError(`Error: ${chk.error}`);
return;
}
setIsNewfileDialogOpen(false);
createNewFile(_filename);
createNewFile(filename);
setFilename("");
}, [filename, setIsNewfileDialogOpen, setFilename, validateFilename]);