import React, { useState, useEffect } from 'react'; import { Routes, Route, Navigate, useNavigate, useLocation, Link, } from 'react-router-dom'; // Import all components import PremiumRoute from './components/PremiumRoute.js'; import SessionExpiredHandler from './components/SessionExpiredHandler.js'; import GettingStarted from './components/GettingStarted.js'; import SignIn from './components/SignIn.js'; import SignUp from './components/SignUp.js'; import InterestInventory from './components/InterestInventory.js'; import Dashboard from './components/Dashboard.js'; import UserProfile from './components/UserProfile.js'; import FinancialProfileForm from './components/FinancialProfileForm.js'; import MilestoneTracker from './components/MilestoneTracker.js'; import Paywall from './components/Paywall.js'; import OnboardingContainer from './components/PremiumOnboarding/OnboardingContainer.js'; import MultiScenarioView from './components/MultiScenarioView.js'; // 1) Import your ResumeRewrite component import ResumeRewrite from './components/ResumeRewrite.js'; // adjust the path if needed function App() { const navigate = useNavigate(); const location = useLocation(); const [isAuthenticated, setIsAuthenticated] = useState(false); const [user, setUser] = useState(null); const [isLoading, setIsLoading] = useState(true); // If you want Resume Optimizer to be considered a "premium path" too: const premiumPaths = [ '/milestone-tracker', '/paywall', '/financial-profile', '/multi-scenario', '/premium-onboarding', '/resume-optimizer', // add it here if you want ]; const showPremiumCTA = !premiumPaths.includes(location.pathname); // 2) We'll define "canAccessPremium" to handle *both* is_premium or is_pro_premium const canAccessPremium = user?.is_premium || user?.is_pro_premium; // Rehydrate user if there's a token useEffect(() => { const token = localStorage.getItem('token'); if (!token) { setIsLoading(false); return; } // Validate token/fetch user fetch('https://dev1.aptivaai.com/api/user-profile', { headers: { Authorization: `Bearer ${token}` }, }) .then((res) => { if (!res.ok) { throw new Error('Token invalid/expired'); } return res.json(); }) .then((profile) => { setUser(profile); setIsAuthenticated(true); }) .catch((err) => { console.error(err); localStorage.removeItem('token'); }) .finally(() => { setIsLoading(false); }); }, []); // Logout const handleLogout = () => { localStorage.removeItem('token'); setIsAuthenticated(false); setUser(null); navigate('/signin'); }; if (isLoading) { return (
Loading...