import React, { useState, useEffect, useCallback } from 'react' import { Button, TextArea } from '@janhq/joi' import { useAtomValue } from 'jotai' import { janDataFolderPathAtom } from '@/helpers/atoms/AppConfig.atom' const MCPConfiguration = () => { const janDataFolderPath = useAtomValue(janDataFolderPathAtom) const [configContent, setConfigContent] = useState('') const [isSaving, setIsSaving] = useState(false) const [error, setError] = useState('') const [success, setSuccess] = useState('') const readConfigFile = useCallback(async () => { try { // Read the file const content = await window.core?.api.getMcpConfigs() setConfigContent(content) setError('') } catch (err) { console.error('Error reading config file:', err) setError('Failed to read config file') } }, [janDataFolderPath]) useEffect(() => { if (janDataFolderPath) { readConfigFile() } }, [janDataFolderPath, readConfigFile]) const saveConfigFile = useCallback(async () => { try { setIsSaving(true) setSuccess('') setError('') // Validate JSON try { JSON.parse(configContent) } catch (err) { setError('Invalid JSON format') setIsSaving(false) return } await window.core?.api?.saveMcpConfigs({ configs: configContent }) await window.core?.api?.restartMcpServers() setSuccess('Config saved successfully') setIsSaving(false) } catch (err) { console.error('Error saving config file:', err) setError('Failed to save config file') setIsSaving(false) } }, [janDataFolderPath, configContent]) return ( <> {error && (
{error}
)} {success && (
{success}
)}