mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
2512-есть Maintenance режим, но бот всё равно отвечает фульно
This commit is contained in:
@@ -8,7 +8,8 @@ import { InvoiceDraftPage } from "./pages/InvoiceDraftPage";
|
||||
import { InvoiceViewPage } from "./pages/InvoiceViewPage";
|
||||
import { DraftsList } from "./pages/DraftsList";
|
||||
import { SettingsPage } from "./pages/SettingsPage";
|
||||
import { UNAUTHORIZED_EVENT } from "./services/api";
|
||||
import { UNAUTHORIZED_EVENT, MAINTENANCE_EVENT } from "./services/api";
|
||||
import MaintenancePage from "./pages/MaintenancePage";
|
||||
|
||||
// Компонент-заглушка для внешних браузеров
|
||||
const NotInTelegramScreen = () => (
|
||||
@@ -37,6 +38,7 @@ const NotInTelegramScreen = () => (
|
||||
|
||||
function App() {
|
||||
const [isUnauthorized, setIsUnauthorized] = useState(false);
|
||||
const [isMaintenance, setIsMaintenance] = useState(false);
|
||||
const tg = window.Telegram?.WebApp;
|
||||
|
||||
// Проверяем, есть ли данные от Telegram
|
||||
@@ -44,7 +46,9 @@ function App() {
|
||||
|
||||
useEffect(() => {
|
||||
const handleUnauthorized = () => setIsUnauthorized(true);
|
||||
const handleMaintenance = () => setIsMaintenance(true);
|
||||
window.addEventListener(UNAUTHORIZED_EVENT, handleUnauthorized);
|
||||
window.addEventListener(MAINTENANCE_EVENT, handleMaintenance);
|
||||
|
||||
if (tg) {
|
||||
tg.expand(); // Расширяем приложение на все окно
|
||||
@@ -52,6 +56,7 @@ function App() {
|
||||
|
||||
return () => {
|
||||
window.removeEventListener(UNAUTHORIZED_EVENT, handleUnauthorized);
|
||||
window.removeEventListener(MAINTENANCE_EVENT, handleMaintenance);
|
||||
};
|
||||
}, [tg]);
|
||||
|
||||
@@ -80,6 +85,11 @@ function App() {
|
||||
);
|
||||
}
|
||||
|
||||
// Если бэкенд вернул 503 (режим технического обслуживания)
|
||||
if (isMaintenance) {
|
||||
return <MaintenancePage />;
|
||||
}
|
||||
|
||||
return (
|
||||
<Providers>
|
||||
<BrowserRouter>
|
||||
|
||||
28
rmser-view/src/pages/MaintenancePage.tsx
Normal file
28
rmser-view/src/pages/MaintenancePage.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
import { Result, Button } from "antd";
|
||||
|
||||
// Страница-заглушка для режима технического обслуживания
|
||||
const MaintenancePage = () => (
|
||||
<div
|
||||
style={{
|
||||
height: "100vh",
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
background: "#fff",
|
||||
padding: 20,
|
||||
}}
|
||||
>
|
||||
<Result
|
||||
status="warning"
|
||||
title="Сервис на техническом обслуживании"
|
||||
subTitle="Мы скоро вернемся с новыми функциями!"
|
||||
extra={
|
||||
<Button type="primary" onClick={() => window.location.reload()}>
|
||||
Попробовать снова
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
export default MaintenancePage;
|
||||
@@ -46,6 +46,9 @@ const tg = window.Telegram?.WebApp;
|
||||
// Событие для глобальной обработки 401
|
||||
export const UNAUTHORIZED_EVENT = 'rms_unauthorized';
|
||||
|
||||
// Событие для режима технического обслуживания (503)
|
||||
export const MAINTENANCE_EVENT = 'rms_maintenance';
|
||||
|
||||
const apiClient = axios.create({
|
||||
baseURL: API_BASE_URL,
|
||||
headers: {
|
||||
@@ -80,9 +83,14 @@ apiClient.interceptors.response.use(
|
||||
description: 'Ваша сессия в Telegram истекла или данные неверны. Попробуйте перезапустить бота.',
|
||||
placement: 'top',
|
||||
});
|
||||
|
||||
|
||||
window.dispatchEvent(new Event(UNAUTHORIZED_EVENT));
|
||||
}
|
||||
|
||||
if (error.response && error.response.status === 503) {
|
||||
// Режим технического обслуживания
|
||||
window.dispatchEvent(new Event(MAINTENANCE_EVENT));
|
||||
}
|
||||
|
||||
// Если запрос был отменен нами (нет initData), не выводим стандартную ошибку API
|
||||
if (error.message === 'MISSING_TELEGRAM_DATA') {
|
||||
|
||||
Reference in New Issue
Block a user