mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-04 19:41:02 +08:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { RouterProvider } from 'react-router-dom'
|
|
import { LanguageProvider } from './contexts/LanguageContext'
|
|
import { AuthProvider } from './contexts/AuthContext'
|
|
import { ConfirmDialogProvider } from './components/ConfirmDialog'
|
|
import { router } from './routes'
|
|
import { useSystemConfig } from './hooks/useSystemConfig'
|
|
import { useAuth } from './contexts/AuthContext'
|
|
import { useLanguage } from './contexts/LanguageContext'
|
|
import { t } from './i18n/translations'
|
|
|
|
function LoadingScreen() {
|
|
const { language } = useLanguage()
|
|
|
|
return (
|
|
<div
|
|
className="min-h-screen flex items-center justify-center"
|
|
style={{ background: '#0B0E11' }}
|
|
>
|
|
<div className="text-center">
|
|
<img
|
|
src="/icons/nofx.svg"
|
|
alt="NoFx Logo"
|
|
className="w-16 h-16 mx-auto mb-4 animate-pulse"
|
|
/>
|
|
<p style={{ color: '#EAECEF' }}>{t('loading', language)}</p>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
function AppContent() {
|
|
const { isLoading } = useAuth()
|
|
const { loading: configLoading } = useSystemConfig()
|
|
|
|
// Show loading spinner while checking auth or config
|
|
if (isLoading || configLoading) {
|
|
return <LoadingScreen />
|
|
}
|
|
|
|
return <RouterProvider router={router} />
|
|
}
|
|
|
|
export default function App() {
|
|
return (
|
|
<LanguageProvider>
|
|
<AuthProvider>
|
|
<ConfirmDialogProvider>
|
|
<AppContent />
|
|
</ConfirmDialogProvider>
|
|
</AuthProvider>
|
|
</LanguageProvider>
|
|
)
|
|
}
|