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';
import { useTourStore } from './useTourStore.js';
const App = () => {
    const [view, setView] = useState('landing');
    const [isInitialSetup, setIsInitialSetup] = useState(false);
    const [user, setUser] = useState(null);
    const [isUserLoaded, setIsUserLoaded] = useState(false);
    const fetchTour = useTourStore(state => state.fetchTour);
    useEffect(() => {
        const API_BASE = `http://${window.location.hostname}:3001`;
        const savedUser = localStorage.getItem('user');
        if (savedUser) {
            const parsedUser = JSON.parse(savedUser);
            setUser(parsedUser);
        }
        setIsUserLoaded(true);
        fetch(`${API_BASE}/api/v1/auth/status`)
            .then(res => res.ok ? res.json() : Promise.reject())
            .then(data => setIsInitialSetup(!!data.isInitialSetup))
            .catch(() => setIsInitialSetup(false));
    }, []);
    useEffect(() => {
        if (isUserLoaded && user && view === 'landing') {
            setView('explore');
        }
    }, [isUserLoaded, user, view]);
    const handleLoginSuccess = (userData) => {
        setUser(userData);
    };
    const handleLogout = () => {
        localStorage.removeItem('user');
        localStorage.removeItem('token');
        setUser(null);
        setView('landing');
    };
    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'), onLogout: user ? handleLogout : undefined, user: user, onViewTour: (id) => {
                    fetchTour(id);
                    setView('detail');
                } })), view === 'detail' && (_jsx(TourDetailPage, { onBack: () => setView('explore') }))] }));
};
export default App;
//# sourceMappingURL=App.js.map