import { useState, useEffect } from 'react' import { GoogleOAuthProvider } from '@react-oauth/google' import { MainLayout } from './components/layout/MainLayout' import { LoginPage } from './components/auth/LoginPage' import { registerMainTabSwitcher } from './hooks/useSubMenu' import { useAuthStore } from './store/authStore' import { useMenuStore } from './store/menuStore' import { OilSpillView } from './components/views/OilSpillView' import { ReportsView } from './components/views/ReportsView' import { HNSView } from './components/views/HNSView' import { AerialView } from './components/views/AerialView' import { AssetsView } from './components/views/AssetsView' import { BoardView } from './components/views/BoardView' import { WeatherView } from './components/views/WeatherView' import { IncidentsView } from './components/views/IncidentsView' import { AdminView } from './components/views/AdminView' import { PreScatView } from './components/views/PreScatView' import { RescueView } from './components/views/RescueView' export type MainTab = 'prediction' | 'hns' | 'rescue' | 'reports' | 'aerial' | 'assets' | 'scat' | 'incidents' | 'board' | 'weather' | 'admin' const GOOGLE_CLIENT_ID = import.meta.env.VITE_GOOGLE_CLIENT_ID || '' function App() { const [activeMainTab, setActiveMainTab] = useState('prediction') const { isAuthenticated, isLoading, checkSession } = useAuthStore() const { loadMenuConfig } = useMenuStore() useEffect(() => { checkSession() }, [checkSession]) useEffect(() => { if (isAuthenticated) { loadMenuConfig() } }, [isAuthenticated, loadMenuConfig]) useEffect(() => { registerMainTabSwitcher(setActiveMainTab) }, []) // 세션 확인 중 스플래시 if (isLoading) { return (
WING
) } // 미인증 → 로그인 페이지 if (!isAuthenticated) { return } const renderView = () => { switch (activeMainTab) { case 'prediction': return case 'reports': return case 'hns': return case 'aerial': return case 'assets': return case 'board': return case 'weather': return case 'incidents': return case 'scat': return case 'admin': return case 'rescue': return default: return
준비 중입니다...
} } return ( {renderView()} ) } function AppWithProviders() { if (!GOOGLE_CLIENT_ID) { return } return ( ) } export default AppWithProviders