mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 02:23:47 +00:00
feat(auth,a11y): Telegram CloudStorage token recovery + blocking-screen a11y
Telegram CloudStorage token recovery (resilience against WebView localStorage wipes): - mirror the refresh token to per-user CloudStorage on login, remove it on logout - restoreRefreshTokenFromCloud() recovers the refresh token in initialize() when localStorage is empty, then the normal refresh flow re-establishes the session - move the initialize() bootstrap call from auth.ts module-load into main.tsx after the Telegram SDK init(), since launch params + CloudStorage are unavailable before init - best-effort: no-ops outside Telegram and on any error -> falls back to prior behavior Accessibility: - role=alertdialog + aria-modal + aria-labelledby + focus management (useFocusTrap) on Maintenance, Blacklisted, ChannelSubscription and AccountDeleted blocking screens - aria-label on ColorPicker Hue/Saturation/Lightness range inputs
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
||||
isFullscreen,
|
||||
} from '@telegram-apps/sdk-react';
|
||||
import { clearStaleSessionIfNeeded } from './utils/token';
|
||||
import { useAuthStore } from './store/auth';
|
||||
import { AppWithNavigator } from './AppWithNavigator';
|
||||
import { ErrorBoundary } from './components/ErrorBoundary';
|
||||
import { initLogoPreload } from './api/branding';
|
||||
@@ -100,6 +101,11 @@ if (isTelegramEnv && !alreadyInitialized) {
|
||||
clearStaleSessionIfNeeded(null);
|
||||
}
|
||||
|
||||
// Bootstrap auth after the Telegram SDK is initialised so CloudStorage-backed
|
||||
// refresh-token recovery can run inside initialize() (launch params + CloudStorage
|
||||
// are only available post-init()).
|
||||
void useAuthStore.getState().initialize();
|
||||
|
||||
if ('requestIdleCallback' in window) {
|
||||
requestIdleCallback(() => initLogoPreload());
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user