fix: clear all cached auth state on Telegram MiniApp retry

When users hit 'Try Again' after auth failure, clear ALL cached state
(tokens, SDK launch params, initData, zustand persist, tg_user_id)
to prevent stale token loops. Applies to both Login and TelegramRedirect
retry handlers.
This commit is contained in:
Fringg
2026-03-22 07:24:45 +03:00
parent 1538879f97
commit 3e27472c8a
2 changed files with 19 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ import {
type BrandingInfo,
type EmailAuthEnabled,
} from '../api/branding';
import { getAndClearReturnUrl } from '../utils/token';
import { getAndClearReturnUrl, tokenStorage } from '../utils/token';
import { isInTelegramWebApp, getTelegramInitData, useTelegramSDK } from '../hooks/useTelegramSDK';
import { closeMiniApp } from '@telegram-apps/sdk-react';
import LanguageSwitcher from '../components/LanguageSwitcher';
@@ -205,11 +205,18 @@ export default function Login() {
}, [isAuthInitializing, loginWithTelegram, navigate, t, getReturnUrl]);
const handleRetryTelegramAuth = () => {
// Clear ALL cached auth state to prevent stale token/initData loops
tokenStorage.clearTokens();
sessionStorage.removeItem('tapps/launchParams');
sessionStorage.removeItem('telegram_init_data');
localStorage.removeItem('cabinet-auth');
localStorage.removeItem('tg_user_id');
try {
sessionStorage.removeItem('tapps/launchParams');
sessionStorage.removeItem('telegram_init_data');
// Close miniapp — Telegram will provide fresh initData on reopen
closeMiniApp();
} catch {
// If closeMiniApp fails, force a clean page reload
window.location.reload();
}
};