Explorar o código

Skip schema validation if type is string

Alexander Krivonosov %!s(int64=3) %!d(string=hai) anos
pai
achega
cfa4e11506

+ 16 - 12
kafka-ui-react-app/src/components/Topics/Topic/SendMessage/validateMessage.ts

@@ -16,10 +16,13 @@ const validateMessage = async (
       let contentIsValid = false;
 
       try {
-        const validateKey = keyAjv.compile(
-          JSON.parse(messageSchema.key.schema)
-        );
-        keyIsValid = validateKey(JSON.parse(key));
+        const keySchema = JSON.parse(messageSchema.key.schema);
+        const validateKey = keyAjv.compile(keySchema);
+        if (keySchema.type === 'string') {
+          keyIsValid = true;
+        } else {
+          keyIsValid = validateKey(JSON.parse(key));
+        }
         if (!keyIsValid) {
           const errorString: string[] = [];
           if (validateKey.errors) {
@@ -35,10 +38,13 @@ const validateMessage = async (
         setSchemaErrors((e) => [...e, `Key ${err.message}`]);
       }
       try {
-        const validateContent = contentAjv.compile(
-          JSON.parse(messageSchema.value.schema)
-        );
-        contentIsValid = validateContent(JSON.parse(content));
+        const contentSchema = JSON.parse(messageSchema.value.schema);
+        const validateContent = contentAjv.compile(contentSchema);
+        if (contentSchema.type === 'string') {
+          contentIsValid = true;
+        } else {
+          contentIsValid = validateContent(JSON.parse(content));
+        }
         if (!contentIsValid) {
           const errorString: string[] = [];
           if (validateContent.errors) {
@@ -54,12 +60,10 @@ const validateMessage = async (
         setSchemaErrors((e) => [...e, `Content ${err.message}`]);
       }
 
-      if (keyIsValid && contentIsValid) {
-        return true;
-      }
+      return keyIsValid && contentIsValid;
     }
   } catch (err) {
-    setSchemaErrors((e) => (e ? `${e}-${err.message}` : err.message));
+    setSchemaErrors((e) => [...e, err.message]);
   }
   return false;
 };