diff --git a/components/EditorNavigation.tsx b/components/EditorNavigation.tsx index c969819..edaf636 100644 --- a/components/EditorNavigation.tsx +++ b/components/EditorNavigation.tsx @@ -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]);