Update files

This commit is contained in:
glpshchn 2025-11-11 00:36:23 +03:00
parent ec23fdbf94
commit 723b6824ea
1 changed files with 46 additions and 25 deletions

View File

@ -97,51 +97,72 @@ export default function App() {
const chatSocketRef = useRef(null);
const chatListRef = useRef(null);
const telegramApp = typeof window !== 'undefined' ? window.Telegram?.WebApp : null;
useEffect(() => {
let cancelled = false;
const waitForInitData = async () => {
const start = Date.now();
const timeout = 5000;
while (Date.now() - start < timeout) {
const app = window.Telegram?.WebApp;
if (app?.initData && app.initData.length > 0) {
return app;
}
await new Promise((resolve) => setTimeout(resolve, 100));
}
throw new Error('Telegram initData не передан (timeout)');
};
const init = async () => {
try {
if (telegramApp) {
telegramApp.disableVerticalSwipes();
telegramApp.ready();
telegramApp.expand();
const telegramApp = window.Telegram?.WebApp;
if (!telegramApp) {
throw new Error('Откройте модераторский интерфейс из Telegram (бот @rbachbot).');
}
await new Promise((resolve) => setTimeout(resolve, 200));
telegramApp.disableVerticalSwipes?.();
telegramApp.ready?.();
telegramApp.expand?.();
const initData = telegramApp?.initData || '';
const app = await waitForInitData();
if (cancelled) return;
if (initData) {
const response = await verifyAuth();
setUser(response.data.user);
setError(null);
setLoading(false);
return;
const initData = app.initData || '';
if (!initData) {
throw new Error('Откройте модераторский интерфейс из Telegram (бот @rbachbot).');
}
setError('Откройте модераторский интерфейс из Telegram (бот @rbachbot).');
const response = await verifyAuth();
if (cancelled) return;
setUser(response.data.user);
setError(null);
} catch (err) {
if (cancelled) return;
console.error('Ошибка инициализации модератора:', err);
const serverMessage = err?.response?.data?.error;
const serverMessage = err?.response?.data?.error || err?.message;
setError(serverMessage || 'Нет доступа. Убедитесь, что вы добавлены как администратор.');
} finally {
setLoading(false);
}
if (telegramApp) {
telegramApp.MainButton.setText('Закрыть');
telegramApp.MainButton.show();
telegramApp.MainButton.onClick(() => telegramApp.close());
if (!cancelled) {
setLoading(false);
const telegramApp = window.Telegram?.WebApp;
telegramApp?.MainButton?.setText?.('Закрыть');
telegramApp?.MainButton?.show?.();
telegramApp?.MainButton?.onClick?.(() => telegramApp.close());
}
}
};
init();
return () => {
telegramApp?.MainButton?.hide();
cancelled = true;
window.Telegram?.WebApp?.MainButton?.hide?.();
};
}, [telegramApp]);
}, []);
useEffect(() => {
if (tab === 'users') {