feat: Оптимизация структуры server.js с модульным подходом, добавление новых маршрутов и улучшение обработки ошибок. Обновление валидаторов для MikroTik с использованием общих функций. Улучшение кода компонентов приложения для повышения читаемости и производительности.

This commit is contained in:
2025-10-03 01:49:51 +07:00
parent cdf692a2aa
commit 6231b645b6
17 changed files with 5149 additions and 2295 deletions
+19 -19
View File
@@ -1,5 +1,13 @@
import { useState, useEffect, createContext, useContext } from 'react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import {
BrowserRouter as Router,
Routes,
Route,
Link,
useLocation,
Navigate
} from 'react-router-dom';
import {
IconBrandTabler,
IconWorld,
@@ -10,7 +18,8 @@ import {
IconServer,
IconFilter,
IconDownload,
IconCreditCard
IconCreditCard,
IconMenu2
} from '@tabler/icons-react';
import ServerManager from './ServerManager';
import FilterManager from './FilterManager';
@@ -26,7 +35,6 @@ import { NotifyProvider } from './components/NotifyProvider.jsx';
import SettingsModal from './components/SettingsModal.jsx';
import ToastContainer from './components/ToastContainer.jsx';
import CommandPalette, { KeyboardShortcutsButton } from './components/CommandPalette.jsx';
// axios не используется напрямую; сетевые вызовы через src/lib/api.js
// --- Simple i18n (RU/EN) ---
const LanguageContext = createContext({ lang: 'ru', setLang: () => {}, t: (k) => k });
@@ -71,25 +79,17 @@ function ThemeProvider({ children }) {
</ThemeContext.Provider>
);
}
import {
BrowserRouter as Router,
Routes,
Route,
Link,
useLocation,
Navigate
} from 'react-router-dom';
import { IconMenu2 } from '@tabler/icons-react';
// Единственный экземпляр QueryClient для всего приложения
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
staleTime: 30_000,
}
}
});
function App() {
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
staleTime: 30_000,
}
}
});
return (
<Router>
<QueryClientProvider client={queryClient}>