feat: Enhance error handling and validation in FilterManager for server configuration saving and generation processes
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m3s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m3s
This commit is contained in:
@@ -137,13 +137,24 @@ function FilterManager() {
|
|||||||
const handleSaveServerConfig = async (serverId) => {
|
const handleSaveServerConfig = async (serverId) => {
|
||||||
try {
|
try {
|
||||||
const config = await generateMikrotikConfig();
|
const config = await generateMikrotikConfig();
|
||||||
|
|
||||||
|
// Проверяем, что конфигурация не пустая
|
||||||
|
if (!config || config === '// Сначала выберите сервер' || config === '// Нет фильтров для генерации конфигурации') {
|
||||||
|
setError('Нет данных для сохранения конфигурации. Убедитесь, что выбран сервер и есть фильтры.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await axios.post(`${API_URL}/server-configs/${serverId}`, { config });
|
await axios.post(`${API_URL}/server-configs/${serverId}`, { config });
|
||||||
|
|
||||||
setSuccess(`Конфигурация для сервера "${servers.find(s => s.id === serverId)?.name}" сохранена!`);
|
setSuccess(`Конфигурация для сервера "${servers.find(s => s.id === serverId)?.name}" сохранена!`);
|
||||||
setTimeout(() => setSuccess(''), 3000);
|
setTimeout(() => setSuccess(''), 3000);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error saving server config:', 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);
|
}, 8000);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error copying config to all servers:', error);
|
console.error('Error copying config to all servers:', error);
|
||||||
setError('Не удалось скопировать конфигурацию на серверы.');
|
if (error.response?.data) {
|
||||||
|
setError(`Ошибка копирования: ${error.response.data}`);
|
||||||
|
} else {
|
||||||
|
setError('Не удалось скопировать конфигурацию на серверы.');
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
@@ -380,9 +395,18 @@ function FilterManager() {
|
|||||||
const response = await axios.post(`${API_URL}/server-filters/generate-config`, {
|
const response = await axios.post(`${API_URL}/server-filters/generate-config`, {
|
||||||
filters: serverFilters
|
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) {
|
} catch (error) {
|
||||||
console.error('Error generating config:', error);
|
console.error('Error generating config:', error);
|
||||||
|
if (error.response?.data) {
|
||||||
|
return `// Ошибка при генерации конфигурации: ${error.response.data}`;
|
||||||
|
}
|
||||||
return '// Ошибка при генерации конфигурации';
|
return '// Ошибка при генерации конфигурации';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -473,7 +497,8 @@ function FilterManager() {
|
|||||||
<button
|
<button
|
||||||
className="btn btn-outline-success"
|
className="btn btn-outline-success"
|
||||||
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
||||||
disabled={loading}
|
disabled={loading || serverFilters.length === 0}
|
||||||
|
title={serverFilters.length === 0 ? "Сначала добавьте фильтры" : "Сохранить конфигурацию"}
|
||||||
>
|
>
|
||||||
<IconDeviceFloppy className="me-2" />
|
<IconDeviceFloppy className="me-2" />
|
||||||
Сохранить конфигурацию
|
Сохранить конфигурацию
|
||||||
@@ -630,7 +655,8 @@ function FilterManager() {
|
|||||||
<button
|
<button
|
||||||
className="btn btn-outline-success btn-sm me-2"
|
className="btn btn-outline-success btn-sm me-2"
|
||||||
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
onClick={() => handleSaveServerConfig(selectedServer.id)}
|
||||||
disabled={loading}
|
disabled={loading || serverFilters.length === 0}
|
||||||
|
title={serverFilters.length === 0 ? "Сначала добавьте фильтры" : "Сохранить конфигурацию"}
|
||||||
>
|
>
|
||||||
<IconDeviceFloppy className="me-2" />
|
<IconDeviceFloppy className="me-2" />
|
||||||
Сохранить конфигурацию
|
Сохранить конфигурацию
|
||||||
|
|||||||
Reference in New Issue
Block a user