import { useState, useEffect, lazy, Suspense } from 'react';
import { Truck, Loader2, LogOut, CircleHelp } from 'lucide-react';
import { DeliveryForm } from './components/delivery/DeliveryForm';
import { LoginForm } from './components/auth/LoginForm';
import { ToastContainer } from './components/ui/Toast';
import { Button } from './components/ui/Button';
import { UpdatePrompt } from './components/ui/UpdatePrompt';
import { GuidedTour } from './components/ui/GuidedTour';
import { useDeliveryStore } from './stores/deliveryStore';
import { useAuthStore } from './stores/authStore';
import { useToastStore } from './stores/toastStore';
import { useWebSocket } from './hooks/useWebSocket';
import { getTodayFrontend } from './utils/date';
const Dashboard = lazy(() => import('./pages/Dashboard'));
const DeliveryListPage = lazy(() => import('./pages/DeliveryListPage'));
const PageLoader = () =>
Загрузка…
;
function App() {
const [view, setView] = useState<'dashboard' | 'delivery-list'>('dashboard');
const [selectedDate, setSelectedDate] = useState(getTodayFrontend);
const [formOpen, setFormOpen] = useState(false);
const [tourReplay, setTourReplay] = useState(0);
const { isAuthenticated, isAuthChecking, user, restoreAuth, logout } = useAuthStore();
const { addDelivery, isLoading, isLoadingCounts, error, countsError, currentDate } = useDeliveryStore();
useWebSocket();
useEffect(() => { restoreAuth(); }, [restoreAuth]);
const selectDate = (date: string) => { setSelectedDate(date); setView('delivery-list'); };
const submitDelivery = async (data: Parameters[0]) => {
await addDelivery(data);
useToastStore.getState().addToast('Доставка создана', 'success');
selectDate(data.date);
};
if (isAuthChecking) return ;
if (!isAuthenticated) return <>>;
return (
Перейти к содержимому
}>
{view === 'dashboard' ? setFormOpen(true)} />
: setView('dashboard')} />}
setFormOpen(false)} onSubmit={submitDelivery} defaultDate={getTodayFrontend()} />
);
}
export default App;