feat: delete users - not tested

This commit is contained in:
Eric Gullickson
2025-12-22 18:20:25 -06:00
parent 91b4534e76
commit 4897f0a52c
73 changed files with 4923 additions and 62 deletions

View File

@@ -43,6 +43,17 @@ const AdminEmailTemplatesMobileScreen = lazy(() => import('./features/admin/mobi
// Admin Community Stations (lazy-loaded)
const AdminCommunityStationsPage = lazy(() => import('./features/admin/pages/AdminCommunityStationsPage').then(m => ({ default: m.AdminCommunityStationsPage })));
const AdminCommunityStationsMobileScreen = lazy(() => import('./features/admin/mobile/AdminCommunityStationsMobileScreen').then(m => ({ default: m.AdminCommunityStationsMobileScreen })));
// Auth pages (lazy-loaded)
const SignupPage = lazy(() => import('./features/auth/pages/SignupPage').then(m => ({ default: m.SignupPage })));
const VerifyEmailPage = lazy(() => import('./features/auth/pages/VerifyEmailPage').then(m => ({ default: m.VerifyEmailPage })));
const SignupMobileScreen = lazy(() => import('./features/auth/mobile/SignupMobileScreen').then(m => ({ default: m.SignupMobileScreen })));
const VerifyEmailMobileScreen = lazy(() => import('./features/auth/mobile/VerifyEmailMobileScreen').then(m => ({ default: m.VerifyEmailMobileScreen })));
// Onboarding pages (lazy-loaded)
const OnboardingPage = lazy(() => import('./features/onboarding/pages/OnboardingPage').then(m => ({ default: m.OnboardingPage })));
const OnboardingMobileScreen = lazy(() => import('./features/onboarding/mobile/OnboardingMobileScreen').then(m => ({ default: m.OnboardingMobileScreen })));
import { HomePage } from './pages/HomePage';
import { BottomNavigation } from './shared-minimal/components/mobile/BottomNavigation';
import { QuickAction } from './shared-minimal/components/mobile/quickActions';
@@ -399,7 +410,11 @@ function App() {
const isGarageRoute = location.pathname === '/garage' || location.pathname.startsWith('/garage/');
const isCallbackRoute = location.pathname === '/callback';
const shouldShowHomePage = !isGarageRoute && !isCallbackRoute;
const isSignupRoute = location.pathname === '/signup';
const isVerifyEmailRoute = location.pathname === '/verify-email';
const isOnboardingRoute = location.pathname === '/onboarding';
const isAuthRoute = isSignupRoute || isVerifyEmailRoute || isOnboardingRoute;
const shouldShowHomePage = !isGarageRoute && !isCallbackRoute && !isAuthRoute;
// Enhanced navigation handlers for mobile
const handleVehicleSelect = useCallback((vehicle: Vehicle) => {
@@ -475,10 +490,60 @@ function App() {
);
}
// Signup route is public - no authentication required
if (isSignupRoute) {
return (
<ThemeProvider theme={md3Theme}>
<CssBaseline />
<React.Suspense fallback={
<div className="flex items-center justify-center min-h-screen">
<div className="text-lg">Loading...</div>
</div>
}>
{mobileMode ? <SignupMobileScreen /> : <SignupPage />}
</React.Suspense>
<DebugInfo />
</ThemeProvider>
);
}
if (!isAuthenticated) {
return <Navigate to="/" replace />;
}
// Verify email and onboarding routes require authentication but not full initialization
if (isVerifyEmailRoute) {
return (
<ThemeProvider theme={md3Theme}>
<CssBaseline />
<React.Suspense fallback={
<div className="flex items-center justify-center min-h-screen">
<div className="text-lg">Loading...</div>
</div>
}>
{mobileMode ? <VerifyEmailMobileScreen /> : <VerifyEmailPage />}
</React.Suspense>
<DebugInfo />
</ThemeProvider>
);
}
if (isOnboardingRoute) {
return (
<ThemeProvider theme={md3Theme}>
<CssBaseline />
<React.Suspense fallback={
<div className="flex items-center justify-center min-h-screen">
<div className="text-lg">Loading...</div>
</div>
}>
{mobileMode ? <OnboardingMobileScreen /> : <OnboardingPage />}
</React.Suspense>
<DebugInfo />
</ThemeProvider>
);
}
// Wait for auth gate to be ready before rendering protected routes
// This prevents a race condition where the page renders before the auth token is ready
if (!isAuthGateReady) {