diff --git a/ChromiumBasedEditors/plugins/ai-agent/src/pages/settings/sub-components/servers/ConfigDialog.tsx b/ChromiumBasedEditors/plugins/ai-agent/src/pages/settings/sub-components/servers/ConfigDialog.tsx index 871f0b40..acc5ed5e 100644 --- a/ChromiumBasedEditors/plugins/ai-agent/src/pages/settings/sub-components/servers/ConfigDialog.tsx +++ b/ChromiumBasedEditors/plugins/ai-agent/src/pages/settings/sub-components/servers/ConfigDialog.tsx @@ -24,23 +24,35 @@ const ConfigDialog = ({ open, onClose }: ConfigDialogProps) => { const editorRef = React.useRef(null); const viewRef = React.useRef(null); const [value, setValue] = React.useState(""); - // const [error, setError] = React.useState(""); + const [error, setError] = React.useState(""); const [isValidJson, setIsValidJson] = React.useState(true); - const validateJson = (jsonString: string) => { - try { - JSON.parse(jsonString); - // setError(""); - setIsValidJson(true); - return true; - } catch { - // setError( - // `Invalid JSON: ${err instanceof Error ? err.message : "Unknown error"}` - // ); - setIsValidJson(false); - return false; - } - }; + const validateJson = React.useCallback( + (jsonString: string) => { + try { + const parsed = JSON.parse(jsonString); + if (parsed.mcpServers) { + setIsValidJson(true); + setError(""); + return true; + } + + setIsValidJson(false); + setError(t("ConfigurationError")); + + return false; + } catch (err) { + setError( + `Invalid JSON format\n ${ + err instanceof Error ? err.message : "Unknown error" + }` + ); + setIsValidJson(false); + return false; + } + }, + [t] + ); React.useEffect(() => { if (!open) return; @@ -109,7 +121,7 @@ const ConfigDialog = ({ open, onClose }: ConfigDialogProps) => { viewRef.current = null; } }; - }, [open, getConfig]); + }, [open, t, validateJson, getConfig]); const onSubmitAction = React.useCallback(() => { if (!isValidJson) return; @@ -139,10 +151,10 @@ const ConfigDialog = ({ open, onClose }: ConfigDialogProps) => { -
-
+
+

{t("EnterYourJSONConfiguration")} @@ -155,6 +167,11 @@ const ConfigDialog = ({ open, onClose }: ConfigDialogProps) => { ref={editorRef} className="border border-[var(--servers-edit-config-json-editor-border-color)] bg-[var(--servers-edit-config-json-editor-background-color)] rounded-[4px] overflow-hidden h-full max-h-full" /> + {error ? ( +

+ {error} +

+ ) : null}