🔒 Аудит: безопасность, TypeScript, UI, BottomNav
Безопасность: - proxy: белый список путей (только /sub/*), POST заблокирован - console.log заменён на logger (утечки URL/данных) - OnboardingFlow: убраны --tg-theme-* (не существуют в проекте) TypeScript (0 ошибок): - tsconfig target es5→es2017 (regex /u flag fix) - layout.tsx: viewport перенесён в metadata (Next.js 13.5) - telegram-webhook: fix text possibly undefined - hooks/useTelegramWebApp: fix Object possibly undefined - types/telegram: убрана дублирующая Window декларация UI: - BottomNav: новый компонент (Назад/Главная/Помощь) - safe-area-bottom CSS класс добавлен в globals.css - dashboard: spacer h-20, toast поднят над BottomNav - OnboardingFlow: цены 149/249/350₽ (были 200/350/500₽) Очистка: - page_NEW.tsx удалён локально (не был в git)
This commit is contained in:
@@ -69,9 +69,9 @@ export class MarzbanApiClient {
|
||||
return data;
|
||||
}
|
||||
|
||||
console.warn('API endpoint returned error:', response.status, response.statusText);
|
||||
if (typeof window === 'undefined') console.warn('API endpoint returned error:', response.status, response.statusText);
|
||||
} catch (apiError) {
|
||||
console.warn('API failed, falling back to HTML scraping:', apiError);
|
||||
if (typeof window === 'undefined') console.warn('API failed, falling back to HTML scraping:', apiError);
|
||||
}
|
||||
|
||||
// ❌ Fallback to HTML scraping (старый метод)
|
||||
@@ -91,7 +91,7 @@ export class MarzbanApiClient {
|
||||
this.cache.set(`info_${token}`, { data, timestamp: Date.now() });
|
||||
return data;
|
||||
} catch (fallbackError) {
|
||||
console.error('Both API and HTML scraping failed:', fallbackError);
|
||||
if (typeof window === 'undefined') console.error('Both API and HTML scraping failed:', fallbackError);
|
||||
throw new Error('Не удалось загрузить данные подписки');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user