15685: Adds file path validation on rename file dialog.
[arvados-workbench2.git] / src / validators / valid-name.tsx
index da96712398e278f6a45de0cd57a6395a7691ad7b..000e27b004b6aa9922eff5de1d6f74d460dc1657 100644 (file)
@@ -4,12 +4,12 @@
 
 export const disallowDotName = /^\.{1,2}$/;
 export const disallowSlash = /\//;
-
-const ERROR_MESSAGE = "Name cannot be '.' or '..' or contain '/' characters";
+export const disallowLeadingWhitespaces = /^\s+/;
+export const disallowTrailingWhitespaces = /\s+$/;
 
 export const validName = (value: string) => {
     return [disallowDotName, disallowSlash].find(aRule => value.match(aRule) !== null)
-        ? ERROR_MESSAGE
+        ? "Name cannot be '.' or '..' or contain '/' characters"
         : undefined;
 };
 
@@ -18,3 +18,17 @@ export const validNameAllowSlash = (value: string) => {
         ? "Name cannot be '.' or '..'"
         : undefined;
 };
+
+export const validFileName = (value: string) => {
+    return [
+        disallowLeadingWhitespaces,
+        disallowTrailingWhitespaces
+    ].find(aRule => value.match(aRule) !== null)
+        ? `Leading/trailing whitespaces not allowed on '${value}'`
+        : undefined;
+};
+
+export const validFilePath = (filePath: string) => {
+    const errors = filePath.split('/').map(pathPart => validFileName(pathPart));
+    return errors.filter(e => e !== undefined)[0];
+};
\ No newline at end of file