29 lines
1.6 KiB
JavaScript
29 lines
1.6 KiB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
import { useState, useEffect } from 'react';
|
|
import { LandingPage } from './LandingPage.js';
|
|
import { TourDetailPage } from './TourDetailPage.js';
|
|
import { ExploreMap } from './ExploreMap.js';
|
|
import { SignupPage } from './SignupPage.js';
|
|
const App = () => {
|
|
const [view, setView] = useState('landing');
|
|
const [isInitialSetup, setIsInitialSetup] = useState(false);
|
|
const [user, setUser] = useState(null);
|
|
useEffect(() => {
|
|
const API_BASE = `http://${window.location.hostname}:3001`;
|
|
const savedUser = localStorage.getItem('user');
|
|
if (savedUser) {
|
|
setUser(JSON.parse(savedUser));
|
|
}
|
|
fetch(`${API_BASE}/api/v1/auth/status`)
|
|
.then(res => res.ok ? res.json() : Promise.reject())
|
|
.then(data => setIsInitialSetup(!!data.isInitialSetup))
|
|
.catch(() => setIsInitialSetup(false));
|
|
}, [view]);
|
|
const handleLoginSuccess = (userData) => {
|
|
setUser(userData);
|
|
setView('explore');
|
|
};
|
|
return (_jsxs("div", { className: "app-container", children: [view === 'landing' && (_jsx(LandingPage, { isInitialSetup: isInitialSetup, onContinue: () => setView('explore'), onGoToSignup: () => setView('signup'), onGoToMap: () => setView('explore'), onLoginSuccess: handleLoginSuccess })), view === 'signup' && (_jsx(SignupPage, { onBack: () => setView('landing'), onSuccess: () => setView('landing') })), view === 'explore' && (_jsx(ExploreMap, { onBack: () => setView('landing') })), view === 'detail' && (_jsx(TourDetailPage, {}))] }));
|
|
};
|
|
export default App;
|
|
//# sourceMappingURL=App.js.map
|