import React, { useEffect } from 'react'; import { HashRouter as Router, Routes, Route } from 'react-router-dom'; import { recomaze_ai_personalization_env } from './env'; import Support from './pages/Support'; import Settings from './pages/Settings'; import Dashboard from './pages/Dashboard'; import SideBar from './components/layout/SideBar'; import Customization from './pages/Customization'; import ImportProducts from './pages/ImportProducts'; import { useAppStateContext } from './context/user.data.context'; import Onboarding from './pages/Onboarding'; import Pricing from './pages/Pricing'; import AgenticFeedPage from './pages/AgenticFeed'; import AIReadiness from './pages/AIReadiness'; import ProductImprovements from './pages/ProductImprovements'; import LlmTxtPage from './pages/LlmTxt'; import { hasPaidPlan as hasPaidPlanCheck, canAccessBulkUpload, } from './utils/permission'; const App = (): JSX.Element => { const { token, clientId, user, setToken, setClientId, fetchUser, setCanUseWpApi, } = useAppStateContext(); useEffect(() => { if (!token && recomaze_ai_personalization_env?.auth?.token) setToken(recomaze_ai_personalization_env?.auth?.token); if (!clientId && recomaze_ai_personalization_env?.auth?.client_id) setClientId(recomaze_ai_personalization_env?.auth?.client_id); if (!user && token) fetchUser(); if (!recomaze_ai_personalization_env?.can_use_wp_api) setCanUseWpApi(false); }, [token, clientId]); const hasPaidPlan = hasPaidPlanCheck(user); const hasFreeTrial = (user?.trial_days ?? 0) > 0 && !hasPaidPlan; const hasValidAccessWindow = (() => { const until = user?.subscription_access_until as string | undefined; if (!until) return false; const d = new Date(until); return !Number.isNaN(d.getTime()) && d.getTime() >= Date.now(); })(); const canAccessAllRoutes = hasPaidPlan || hasFreeTrial || user?.has_active_subscription || user?.plan_snapshot || hasValidAccessWindow; const canSeeBulkUpload = canAccessBulkUpload(user); return (
{!canAccessAllRoutes ? ( }> ) : ( ) : ( ) } /> } /> } /> } /> } /> : } /> } /> } /> } /> } /> } /> )}
); }; export default App;