import React, { useState, useEffect } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { AuthProvider, useAuth } from './contexts/AuthContext'; import { SocketProvider } from './contexts/SocketContext'; import Navbar from './components/Navbar'; import Footer from './components/Footer'; import AuthModal from './components/AuthModal'; import AlphaGate from './components/AlphaGate'; import FeedbackButton from './components/FeedbackButton'; import Home from './pages/Home'; import GoogleCallback from './pages/GoogleCallback'; import VerifyEmail from './pages/VerifyEmail'; import ResetPassword from './pages/ResetPassword'; import ItemList from './pages/ItemList'; import ItemDetail from './pages/ItemDetail'; import EditItem from './pages/EditItem'; import RentItem from './pages/RentItem'; import CreateItem from './pages/CreateItem'; import Renting from './pages/Renting'; import Owning from './pages/Owning'; import Profile from './pages/Profile'; import PublicProfile from './pages/PublicProfile'; import Messages from './pages/Messages'; import MessageDetail from './pages/MessageDetail'; import ForumPosts from './pages/ForumPosts'; import ForumPostDetail from './pages/ForumPostDetail'; import CreateForumPost from './pages/CreateForumPost'; import MyPosts from './pages/MyPosts'; import EarningsDashboard from './pages/EarningsDashboard'; import FAQ from './pages/FAQ'; import PrivateRoute from './components/PrivateRoute'; import axios from 'axios'; import './App.css'; const API_URL = process.env.REACT_APP_API_URL || 'http://localhost:5001'; const AppContent: React.FC = () => { const { showAuthModal, authModalMode, closeAuthModal, user } = useAuth(); const [hasAlphaAccess, setHasAlphaAccess] = useState(null); const [checkingAccess, setCheckingAccess] = useState(true); useEffect(() => { const checkAlphaAccess = async () => { // Bypass alpha access check if feature is disabled if (process.env.REACT_APP_ALPHA_TESTING_ENABLED !== 'true') { setHasAlphaAccess(true); setCheckingAccess(false); return; } try { const response = await axios.get(`${API_URL}/alpha/verify-session`, { withCredentials: true, }); setHasAlphaAccess(response.data.hasAccess); } catch (error) { console.error('Error checking alpha access:', error); setHasAlphaAccess(false); } finally { setCheckingAccess(false); } }; checkAlphaAccess(); }, []); // Show loading state while checking if (checkingAccess) { return (
Loading...
); } // Show alpha gate if no access if (!hasAlphaAccess) { return ; } return ( <>
} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } />
{/* Show feedback button for authenticated users */} {user && } ); }; const AppWithSocket: React.FC = () => { const { user } = useAuth(); return ( ); }; function App() { return ( ); } export default App;