From 71ab7b24d3981f3374e45544d1324a342c130db0 Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Mon, 14 Jul 2025 11:26:05 +0700 Subject: [PATCH] feat: Enhance error handling and validation in FilterManager for server configuration saving and generation processes --- frontend/src/FilterManager.jsx | 36 +++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 57c9b7a..ca73441 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -137,13 +137,24 @@ function FilterManager() { const handleSaveServerConfig = async (serverId) => { try { const config = await generateMikrotikConfig(); + + // Проверяем, что конфигурация не пустая + if (!config || config === '// Сначала выберите сервер' || config === '// Нет фильтров для генерации конфигурации') { + setError('Нет данных для сохранения конфигурации. Убедитесь, что выбран сервер и есть фильтры.'); + return; + } + await axios.post(`${API_URL}/server-configs/${serverId}`, { config }); setSuccess(`Конфигурация для сервера "${servers.find(s => s.id === serverId)?.name}" сохранена!`); setTimeout(() => setSuccess(''), 3000); } catch (error) { console.error('Error saving server config:', error); - setError('Не удалось сохранить конфигурацию сервера.'); + if (error.response?.data) { + setError(`Ошибка сохранения: ${error.response.data}`); + } else { + setError('Не удалось сохранить конфигурацию сервера.'); + } } }; @@ -225,7 +236,11 @@ function FilterManager() { }, 8000); } catch (error) { console.error('Error copying config to all servers:', error); - setError('Не удалось скопировать конфигурацию на серверы.'); + if (error.response?.data) { + setError(`Ошибка копирования: ${error.response.data}`); + } else { + setError('Не удалось скопировать конфигурацию на серверы.'); + } } finally { setLoading(false); } @@ -380,9 +395,18 @@ function FilterManager() { const response = await axios.post(`${API_URL}/server-filters/generate-config`, { filters: serverFilters }); - return response.data.config; + + if (response.data && response.data.config) { + return response.data.config; + } else { + console.error('Invalid response format:', response.data); + return '// Ошибка: неверный формат ответа от сервера'; + } } catch (error) { console.error('Error generating config:', error); + if (error.response?.data) { + return `// Ошибка при генерации конфигурации: ${error.response.data}`; + } return '// Ошибка при генерации конфигурации'; } }; @@ -473,7 +497,8 @@ function FilterManager() {